Mercurial > hg > LGDataverses
diff DVN-web/installer/dvninstall/doc/guides/dataverse-developer-main.html @ 6:1b2188262ae9
adding the installer.
author | "jurzua <jurzua@mpiwg-berlin.mpg.de>" |
---|---|
date | Wed, 13 May 2015 11:50:21 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DVN-web/installer/dvninstall/doc/guides/dataverse-developer-main.html Wed May 13 11:50:21 2015 +0200 @@ -0,0 +1,777 @@ + + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + + <title>DVN Developers Guide — The Harvard Dataverse Network 3.6.1 documentation</title> + + <link rel="stylesheet" href="_static/agogo.css" type="text/css" /> + <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT: './', + VERSION: '3.6.1', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="_static/jquery.js"></script> + <script type="text/javascript" src="_static/underscore.js"></script> + <script type="text/javascript" src="_static/doctools.js"></script> + <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + <link rel="top" title="The Harvard Dataverse Network 3.6.1 documentation" href="index.html" /> + <link rel="next" title="APIs Guide" href="dataverse-api-main.html" /> + <link rel="prev" title="Installers Guide" href="dataverse-installer-main.html" /> + </head> + <body> + <div class="header-wrapper"> + <div class="header"> + <div class="headertitle"><a + href="index.html">The Harvard Dataverse Network 3.6.1 documentation</a></div> + <div class="rel"> + <a href="dataverse-installer-main.html" title="Installers Guide" + accesskey="P">previous</a> | + <a href="dataverse-api-main.html" title="APIs Guide" + accesskey="N">next</a> | + <a href="genindex.html" title="General Index" + accesskey="I">index</a> + </div> + </div> + </div> + + <div class="content-wrapper"> + <div class="content"> + <div class="document"> + + <div class="documentwrapper"> + <div class="bodywrapper"> + <div class="body"> + + <div class="section" id="dvn-developers-guide"> +<h1>DVN Developers Guide<a class="headerlink" href="#dvn-developers-guide" title="Permalink to this headline">¶</a></h1> +<p>Please note: This guide was updated in October 2013 to reflex the switch +from Ant to Maven in DVN 3.6.1.</p> +<div class="section" id="build-environment-configuring-netbeans"> +<h2>Build Environment (Configuring NetBeans)<a class="headerlink" href="#build-environment-configuring-netbeans" title="Permalink to this headline">¶</a></h2> +<p>This chapter describes setting up the build environment that you will +need to build the DVN application from source code.</p> +<div class="section" id="install-netbeans-and-glassfish"> +<h3>Install NetBeans and GlassFish<a class="headerlink" href="#install-netbeans-and-glassfish" title="Permalink to this headline">¶</a></h3> +<p>As of DVN version 3.6.1 and the switch to Maven, a DVN development +environment should not have any dependency on a particular IDE, but use +of NetBeans 7.2.1 is encouraged because it’s the version used by most of +the current developers (on Mac OS X).</p> +<p>The NetBeans project is currently offering an installer bundle that +contains both NetBeans 7.2.1 and a supported version of GlassFish +(3.1.2.2). If they choose to discontinue the bundle, you will have to +download and install the two packages separately. Note that you can have +multiple versions of both NetBeans and GlassFish on your system.</p> +<p>Please note: While we intend to investigate NetBeans 7.4 and GlassFish +4, these are not yet known to provide a suitable development +environment.</p> +<p>We strongly recommend that you run both installs <strong>as a regular user</strong>. There’s no reason to run your development environment as root.</p> +<div class="section" id="install-netbeans-bundle"> +<h4>Install NetBeans bundle<a class="headerlink" href="#install-netbeans-bundle" title="Permalink to this headline">¶</a></h4> +<p>Download NetBeans 7.2.1 Java EE + GlassFish Open Source Edition 3.1.2.2 +bundle from <a class="reference external" href="https://netbeans.org/downloads/7.2.1">https://netbeans.org/downloads/7.2.1</a></p> +<p>For Mac OS X, you will download a .dmg disk image that will open +automatically and start the installer for you. Choose the typical +installation but be sure to install GlassFish and JUnit when prompted.</p> +<p>Note that you don’t have to uninstall your existing NetBeans version. +You can have as many versions installed as you need in parallel.</p> +<p>When you start NetBeans 7.2.1 for the first time, you will be asked if +you want to import the settings from the previous installations. If you +have an existing, pre-DVN 3.* development environment on your system, +<strong>answer “no” – we want to create the new configuration from scratch.</strong></p> +</div> +<div class="section" id="if-you-have-to-install-glassfish-3-1-2-2"> +<h4>[If you have to] Install GlassFish 3.1.2.2<a class="headerlink" href="#if-you-have-to-install-glassfish-3-1-2-2" title="Permalink to this headline">¶</a></h4> +<p>We <strong>strongly</strong> recommend that you install GlassFish Server 3.1.2.2, +Open Source Edition, <strong>Full Platform</strong>. If you have to install it +separately from NetBeans, it can be obtained from +<a class="reference external" href="http://glassfish.java.net/downloads/3.1.2.2-final.html">http://glassfish.java.net/downloads/3.1.2.2-final.html</a></p> +<p>The page above contains a link to the installation instructions, but the +process is very straightforward - just download and run the installer.</p> +<p>It is strongly recommended that you use Sun/Oracle Java JDK version 1.6. +Please make sure you have the newest (or at least, recent) build number +available for your platform. (On Mac OS X 10.8, since the JDK can be +installed as part of OS distribution, the version currently provided by +Apple should be sufficient). In other words, we do not recommend +building DVN under JDK 1.7 until the ticket regarding the move from Java +6 to 7 has been closed: <a class="reference external" href="https://redmine.hmdc.harvard.edu/issues/3306">https://redmine.hmdc.harvard.edu/issues/3306</a></p> +<p>Note that you don’t have to uninstall older versions of GlassFish you +may still have around. It’s ok to have multiple versions installed. But +make sure you have the 3.1.2.2 installation selected as the active +server in NetBeans.</p> +<p><strong>Important:</strong> During the installation, leave the admin password fields +blank. This is not a security risk since out of the box, GlassFish +3.1.2.2 will only be accepting admin connections on the localhost +interface. Choosing a password at this stage, however, will complicate +the installation process unnecessarily. Since this is a development +system, you can probably keep this configuration unchanged (admin on +localhost only). If you need to be able to connect to the admin console +remotely, please see the note in the Appendix section of the main +Installers Guide.</p> +</div> +<div class="section" id="install-junit-if-you-haven-t-already"> +<h4>Install JUnit (if you haven’t already)<a class="headerlink" href="#install-junit-if-you-haven-t-already" title="Permalink to this headline">¶</a></h4> +<p>Depending on how you installed NetBeans, you might already have JUnit +installed. JUnit can be installed from Tools -> Plugins.</p> +</div> +</div> +<div class="section" id="check-out-a-new-copy-of-the-dvn-source-tree"> +<h3>Check out a new copy of the DVN source tree<a class="headerlink" href="#check-out-a-new-copy-of-the-dvn-source-tree" title="Permalink to this headline">¶</a></h3> +<div class="section" id="create-a-github-account-if-you-don-t-have-one-already"> +<h4>Create a GitHub account [if you don’t have one already]<a class="headerlink" href="#create-a-github-account-if-you-don-t-have-one-already" title="Permalink to this headline">¶</a></h4> +<p>Sign up at <a class="reference external" href="https://github.com">https://github.com</a></p> +<p>Please note that primary audience of this guide (for now) is people who +have push access to <a class="reference external" href="https://github.com/IQSS/dvn">https://github.com/IQSS/dvn</a> . If you do not have +push access and want to contribute (and we hope you do!) please fork the +repo per <a class="reference external" href="https://help.github.com/articles/fork-a-repo">https://help.github.com/articles/fork-a-repo</a> and make +adjustments below when cloning the repo.</p> +</div> +<div class="section" id="set-up-an-ssh-keypair-if-you-haven-t-already"> +<h4>Set up an ssh keypair (if you haven’t already)<a class="headerlink" href="#set-up-an-ssh-keypair-if-you-haven-t-already" title="Permalink to this headline">¶</a></h4> +<p>You <em>can</em> use git with passwords over HTTPS but it’s much nicer to set +up SSH keys.</p> +<p><a class="reference external" href="https://github.com/settings/ssh">https://github.com/settings/ssh</a> is the place to manage the ssh keys +GitHub knows about for you. That page also links to a nice howto: +<a class="reference external" href="https://help.github.com/articles/generating-ssh-keys">https://help.github.com/articles/generating-ssh-keys</a></p> +<p>From the terminal, <tt class="docutils literal"><span class="pre">ssh-keygen</span></tt> will create new ssh keys for you:</p> +<ul class="simple"> +<li>private key: <tt class="docutils literal"><span class="pre">~/.ssh/id_rsa</span></tt><ul> +<li>It is <strong>very important to protect your private key</strong>. If someone +else acquires it, they can access private repositories on GitHub +and make commits as you! Ideally, you’ll store your ssh keys on an +encrypted volume and protect your private key with a password when +prompted for one by <tt class="docutils literal"><span class="pre">ssh-keygen</span></tt>. See also “Why do passphrases +matter” at <a class="reference external" href="https://help.github.com/articles/generating-ssh-keys">https://help.github.com/articles/generating-ssh-keys</a></li> +</ul> +</li> +<li>public key: <tt class="docutils literal"><span class="pre">~/.ssh/id_rsa.pub</span></tt></li> +</ul> +<p>After you’ve created your ssh keys, add the public key to your GitHub +account.</p> +</div> +<div class="section" id="clone-the-repo"> +<h4>Clone the repo<a class="headerlink" href="#clone-the-repo" title="Permalink to this headline">¶</a></h4> +<p>Please see <a class="reference external" href="#branches">branches</a> for detail, but in short, the +“develop” branch is where new commits go. Below we will assume you want +to make commits to “develop”.</p> +<p>In NetBeans, click Team, then Git, then Clone.</p> +<div class="section" id="remote-repository"> +<h5>Remote Repository<a class="headerlink" href="#remote-repository" title="Permalink to this headline">¶</a></h5> +<ul class="simple"> +<li>Repository URL: <tt class="docutils literal"><span class="pre">github.com:IQSS/dvn.git</span></tt></li> +<li>Username: <tt class="docutils literal"><span class="pre">git</span></tt></li> +<li>Private/Public Key<ul> +<li>Private Key File: <tt class="docutils literal"><span class="pre">/Users/[YOUR_USERNAME]/.ssh/id_rsa</span></tt></li> +</ul> +</li> +<li>Passphrase: (the passphrase you chose while running <tt class="docutils literal"><span class="pre">ssh-keygen</span></tt>)</li> +</ul> +<p>Click Next.</p> +<p>If you are prompted about the authenticity of github.com’s RSA key fingerprint, answer “Yes” to continue connecting. GitHub’s RSA key fingerprint is listed at <a class="reference external" href="https://help.github.com/articles/generating-ssh-keys">https://help.github.com/articles/generating-ssh-keys</a></p> +</div> +<div class="section" id="remote-branches"> +<h5>Remote Branches<a class="headerlink" href="#remote-branches" title="Permalink to this headline">¶</a></h5> +<p>Under Select Remote Branches check the “develop” branch.</p> +<p>Please note: You may see other branches listed, such as “master”, but +there is no need to check them out at this time.</p> +<p>Click Next.</p> +</div> +<div class="section" id="destination-directory"> +<h5>Destination Directory<a class="headerlink" href="#destination-directory" title="Permalink to this headline">¶</a></h5> +<p>The defaults should be fine:</p> +<ul class="simple"> +<li>Parent Directory: <tt class="docutils literal"><span class="pre">/Users/[YOUR_USERNAME]/NetBeansProjects</span></tt></li> +<li>Clone Name: <tt class="docutils literal"><span class="pre">dvn</span></tt></li> +<li>Checkout Branch: <tt class="docutils literal"><span class="pre">develop*</span></tt></li> +<li>Remote Name: <tt class="docutils literal"><span class="pre">origin</span></tt></li> +</ul> +<p>Click Finish.</p> +<p>You should see a message that 3 projects were cloned. Click “Open +Project”.</p> +</div> +</div> +</div> +<div class="section" id="open-projects"> +<h3>Open Projects<a class="headerlink" href="#open-projects" title="Permalink to this headline">¶</a></h3> +<p>In the “Open Projects” dialog you should see three projects, DVN-lockss, +DVN-root, and DVN-web (a child of DVN-root).</p> +<p>Highlight DVN-root and check “Open Required” (to include DVN-web) and click “Open”.</p> +<p>At this point, you should have two (and only two) projects open in +NetBeans: DVN-root and DVN-web. If you hover over the projects, it’s +normal at this point to see warnings such as “Some dependency artifacts +are not in the local repository” or “Cannot find application server: +GlassFish Server 3+”. We’ll correct these next.</p> +</div> +<div class="section" id="build-for-the-first-time"> +<h3>Build for the first time<a class="headerlink" href="#build-for-the-first-time" title="Permalink to this headline">¶</a></h3> +<p>In NetBeans, right-click DVN-root and click “Build”. This will download +many dependencies via Maven and may take several minutes.</p> +<p>When this process has completed, right-click DVN-web and click “Build”. +You should expect to see “BUILD SUCCESS”. This means you have +successfully built the .war application package, but do not attempt to +deploy the application just yet! We need to configure the server +environment first, which consists of GlassFish and PostgreSQL</p> +</div> +</div> +<div class="section" id="application-environment-configuring-glassfish-and-postgresql"> +<h2>Application Environment (Configuring GlassFish and PostgreSQL)<a class="headerlink" href="#application-environment-configuring-glassfish-and-postgresql" title="Permalink to this headline">¶</a></h2> +<p>In this chapter, we describe the process of setting up your own local +application environment into which you will deploy the DVN application.</p> +<div class="section" id="install-postgresql-database-server"> +<h3>Install PostgreSQL database server<a class="headerlink" href="#install-postgresql-database-server" title="Permalink to this headline">¶</a></h3> +<p>For Mac OS X (our default development OS), you can get the installer +from <a class="reference external" href="http://www.postgresql.org/download/macosx">http://www.postgresql.org/download/macosx</a></p> +<p>The installation is very straightforward; just make sure you answer +“yes” when asked if Postgres should be accepting network connections. +(The application will be accessing the database at the “localhost” +address).</p> +<p>Once installed, we recommend that you also allow connections +over local Unix sockets. This way the installer won’t have to ask you +for the Postgres password every time it needs to talk to the database. +To do so, modify the “local all all” line in the data/pg_hba.conf file +to look like this:</p> +<div class="line-block"> +<div class="line">local all all trust</div> +</div> +<p><strong>Note</strong> that this only opens Postgres to the local socket connections, +and should not be considered a security risk. But if you are extra +cautious, you may use instead:</p> +<div class="line-block"> +<div class="line">local all all ident sameuser</div> +</div> +<p>Restart Postgres for the changes to take effect!</p> +<p>Please note: if you have any problems with the PostgreSQL setup, please +ensure the right <tt class="docutils literal"><span class="pre">psql</span></tt> is in your <tt class="docutils literal"><span class="pre">$PATH</span></tt>.</p> +<p>You can check the instructions in the main Installers Guide for more info: +<a class="reference internal" href="dataverse-installer-main.html#postgresql"><em>PostgreSQL section</em></a>; +but the above should be sufficient to get your environment set up.</p> +</div> +<div class="section" id="run-the-install-dev-script"> +<h3>Run the install-dev script<a class="headerlink" href="#run-the-install-dev-script" title="Permalink to this headline">¶</a></h3> +<p>The installer is supplied with the DVN source in the tools directory. +You must run it as root (for direct access to Postgres).</p> +<div class="line-block"> +<div class="line">To run the script:</div> +<div class="line"><tt class="docutils literal"><span class="pre">sudo</span> <span class="pre">su</span> <span class="pre">-</span></tt></div> +<div class="line"><tt class="docutils literal"><span class="pre">cd</span> <span class="pre">/Users/[YOUR_USERNAME]/NetBeansProjects/dvn/tools/installer/dvninstall</span></tt></div> +</div> +<div class="line-block"> +<div class="line">then execute</div> +<div class="line"><tt class="docutils literal"><span class="pre">./install-dev</span></tt></div> +</div> +<p>When prompted for various settings, you will likely be able to accept +all the default values (in a development environment, they are for the +most part the same for everybody).</p> +</div> +<div class="section" id="testing-login"> +<h3>Testing login<a class="headerlink" href="#testing-login" title="Permalink to this headline">¶</a></h3> +<p>Once the <tt class="docutils literal"><span class="pre">install-dev</span></tt> script has completed successfully, you will +have a fully functional Dataverse Network server. After making sure +GlassFish has been started per the output of the script, you should be +able to log in DVN with these credentials:</p> +<ul class="simple"> +<li><a class="reference external" href="http://localhost:8080/dvn/">http://localhost:8080/dvn/</a></li> +<li>username: networkAdmin</li> +<li>password: networkAdmin</li> +</ul> +<p>Please note that when deploying from NetBeans for the first time, you +will be prompted to select a deployment server. From the drop down, +select “GlassFish Server 3.1.2”, click “Remember in Current IDE Session” +and click “OK”.</p> +</div> +</div> +<div class="section" id="developing-with-git"> +<h2>Developing with Git<a class="headerlink" href="#developing-with-git" title="Permalink to this headline">¶</a></h2> +<div class="section" id="commit"> +<span id="id1"></span><h3>Commit<a class="headerlink" href="#commit" title="Permalink to this headline">¶</a></h3> +<p><strong>Committing Changes</strong></p> +<p>By following the instructions in the <em class="xref std std-ref">build</em> step, you +should be in the “develop” branch, which is where we want to make +commits as we work toward the next release.</p> +<p>You can verify which branch you are on by clicking Team then “Repository +Browser”.</p> +<p>You should see <tt class="docutils literal"><span class="pre">dvn</span> <span class="pre">[develop]</span></tt> at the root of the tree and <strong>develop</strong> +in bold under Branches -> Local</p> +<p>Click Team, then “Show Changes”. Select the desired files and +right-click to commit.</p> +<p>To publish your changes on GitHub, you’ll need to follow the next step: +<a class="reference internal" href="#push"><em>push</em></a>.</p> +</div> +<div class="section" id="push"> +<span id="id2"></span><h3>Push<a class="headerlink" href="#push" title="Permalink to this headline">¶</a></h3> +<p><strong>Pushing your commits to GitHub</strong></p> +<p>After making your <a class="reference internal" href="#commit"><em>commit</em></a>, push it to GitHub by clicking +Team -> Remote -> Push, then Next (to use your configured remote +repository), then checking <strong>develop</strong> and Finish.</p> +<p>Your commit should now appear on GitHub in the develop branch: +<a class="reference external" href="https://github.com/IQSS/dvn/commits/develop">https://github.com/IQSS/dvn/commits/develop</a></p> +<p>Your commit should <strong>not</strong> appear in the master branch on GitHub: +<a class="reference external" href="https://github.com/IQSS/dvn/commits/master">https://github.com/IQSS/dvn/commits/master</a> . Not yet anyway. We only +merge commits into master when we are ready to release. Please see the +<a class="reference external" href="#branches">branches</a> section for for detail.</p> +</div> +<div class="section" id="release"> +<h3>Release<a class="headerlink" href="#release" title="Permalink to this headline">¶</a></h3> +<div class="section" id="merge-develop-into-master"> +<h4>Merge develop into master<a class="headerlink" href="#merge-develop-into-master" title="Permalink to this headline">¶</a></h4> +<div class="section" id="tag-the-release"> +<h5>Tag the release<a class="headerlink" href="#tag-the-release" title="Permalink to this headline">¶</a></h5> +<p>Here is an example of how the 3.4 tag ( +<a class="reference external" href="https://github.com/IQSS/dvn/tree/3.4">https://github.com/IQSS/dvn/tree/3.4</a>) was created and pushed to GitHub:</p> +<div class="highlight-guess"><div class="highlight"><pre><span class="nl">murphy:</span><span class="n">dvn</span> <span class="n">pdurbin</span><span class="err">$</span> <span class="n">git</span> <span class="n">branch</span> +<span class="o">*</span> <span class="n">develop</span> + <span class="n">master</span> +<span class="nl">murphy:</span><span class="n">dvn</span> <span class="n">pdurbin</span><span class="err">$</span> <span class="n">git</span> <span class="n">pull</span> +<span class="n">Already</span> <span class="n">up</span><span class="o">-</span><span class="n">to</span><span class="o">-</span><span class="n">date</span><span class="p">.</span> +<span class="nl">murphy:</span><span class="n">dvn</span> <span class="n">pdurbin</span><span class="err">$</span> <span class="n">git</span> <span class="n">checkout</span> <span class="n">master</span> +<span class="n">Switched</span> <span class="n">to</span> <span class="n">branch</span> <span class="err">'</span><span class="n">master</span><span class="err">'</span> +<span class="nl">murphy:</span><span class="n">dvn</span> <span class="n">pdurbin</span><span class="err">$</span> <span class="n">git</span> <span class="n">merge</span> <span class="n">develop</span> +<span class="n">Updating</span> <span class="n">fdbfe57</span><span class="p">.</span><span class="mf">.6</span><span class="n">ceb24f</span> +<span class="p">(</span><span class="n">snip</span><span class="p">)</span> + <span class="n">create</span> <span class="n">mode</span> <span class="mi">100644</span> <span class="n">tools</span><span class="o">/</span><span class="n">installer</span><span class="o">/</span><span class="n">dvninstall</span><span class="o">/</span><span class="n">readme</span><span class="p">.</span><span class="n">md</span> +<span class="nl">murphy:</span><span class="n">dvn</span> <span class="n">pdurbin</span><span class="err">$</span> <span class="n">git</span> <span class="n">tag</span> +<span class="mf">3.3</span> +<span class="nl">murphy:</span><span class="n">dvn</span> <span class="n">pdurbin</span><span class="err">$</span> <span class="n">git</span> <span class="n">tag</span> <span class="o">-</span><span class="n">a</span> <span class="mf">3.4</span> <span class="o">-</span><span class="n">m</span> <span class="err">'</span><span class="n">merged</span> <span class="n">develop</span><span class="p">,</span> <span class="n">tagging</span> <span class="n">master</span> <span class="n">as</span> <span class="mf">3.4</span><span class="err">'</span> +<span class="nl">murphy:</span><span class="n">dvn</span> <span class="n">pdurbin</span><span class="err">$</span> <span class="n">git</span> <span class="n">tag</span> +<span class="mf">3.3</span> +<span class="mf">3.4</span> +<span class="nl">murphy:</span><span class="n">dvn</span> <span class="n">pdurbin</span><span class="err">$</span> <span class="n">git</span> <span class="n">push</span> <span class="n">origin</span> <span class="mf">3.4</span> +<span class="n">Counting</span> <span class="n">objects</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span> <span class="n">done</span><span class="p">.</span> +<span class="n">Writing</span> <span class="n">objects</span><span class="o">:</span> <span class="mi">100</span><span class="o">%</span> <span class="p">(</span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span><span class="p">),</span> <span class="mi">182</span> <span class="n">bytes</span><span class="p">,</span> <span class="n">done</span><span class="p">.</span> +<span class="n">Total</span> <span class="mi">1</span> <span class="p">(</span><span class="n">delta</span> <span class="mi">0</span><span class="p">),</span> <span class="n">reused</span> <span class="mi">0</span> <span class="p">(</span><span class="n">delta</span> <span class="mi">0</span><span class="p">)</span> +<span class="n">To</span> <span class="n">git</span><span class="err">@</span><span class="n">github</span><span class="p">.</span><span class="n">com</span><span class="o">:</span><span class="n">IQSS</span><span class="o">/</span><span class="n">dvn</span><span class="p">.</span><span class="n">git</span> + <span class="o">*</span> <span class="p">[</span><span class="n">new</span> <span class="n">tag</span><span class="p">]</span> <span class="mf">3.4</span> <span class="o">-></span> <span class="mf">3.4</span> +<span class="nl">murphy:</span><span class="n">dvn</span> <span class="n">pdurbin</span><span class="err">$</span> +<span class="nl">murphy:</span><span class="n">dvn</span> <span class="n">pdurbin</span><span class="err">$</span> <span class="n">git</span> <span class="n">push</span> <span class="n">origin</span> <span class="n">master</span> +<span class="n">Total</span> <span class="mi">0</span> <span class="p">(</span><span class="n">delta</span> <span class="mi">0</span><span class="p">),</span> <span class="n">reused</span> <span class="mi">0</span> <span class="p">(</span><span class="n">delta</span> <span class="mi">0</span><span class="p">)</span> +<span class="n">To</span> <span class="n">git</span><span class="err">@</span><span class="n">github</span><span class="p">.</span><span class="n">com</span><span class="o">:</span><span class="n">IQSS</span><span class="o">/</span><span class="n">dvn</span><span class="p">.</span><span class="n">git</span> + <span class="n">fdbfe57</span><span class="p">.</span><span class="mf">.6</span><span class="n">ceb24f</span> <span class="n">master</span> <span class="o">-></span> <span class="n">master</span> +<span class="nl">murphy:</span><span class="n">dvn</span> <span class="n">pdurbin</span><span class="err">$</span> +</pre></div> +</div> +</div> +<div class="section" id="make-release-available-for-download"> +<h5>Make release available for download<a class="headerlink" href="#make-release-available-for-download" title="Permalink to this headline">¶</a></h5> +<p>On dvn-build:</p> +<div class="highlight-guess"><div class="highlight"><pre><span class="n">cd</span> <span class="n">tools</span><span class="o">/</span><span class="n">installer</span> +<span class="n">make</span> <span class="n">installer</span> +</pre></div> +</div> +<p>Rename the resulting “dvninstall.zip” to include the release number +(i.e. “dvninstall_v3_4.zip”) and upload it, the separate war file, a +readme, and a buildupdate script (all these files should include the +release number) to SourceForge (i.e. +<a class="reference external" href="http://sourceforge.net/projects/dvn/files/dvn/3.4/">http://sourceforge.net/projects/dvn/files/dvn/3.4/</a>).</p> +</div> +<div class="section" id="increment-the-version-number"> +<h5>Increment the version number<a class="headerlink" href="#increment-the-version-number" title="Permalink to this headline">¶</a></h5> +<p>The file to edit is:</p> +<div class="line-block"> +<div class="line"><a class="reference external" href="https://github.com/IQSS/dvn/blob/develop/src/DVN-web/sr/VersionNumber.properties">https://github.com/IQSS/dvn/blob/develop/src/DVN-web/src/VersionNumber.properties</a></div> +</div> +</div> +</div> +</div> +<div class="section" id="branches"> +<h3>Branches<a class="headerlink" href="#branches" title="Permalink to this headline">¶</a></h3> +<div class="section" id="current-list-of-branches"> +<h4>Current list of branches<a class="headerlink" href="#current-list-of-branches" title="Permalink to this headline">¶</a></h4> +<p><a class="reference external" href="https://github.com/IQSS/dvn/branches">https://github.com/IQSS/dvn/branches</a></p> +</div> +<div class="section" id="new-branching-model-develop-vs-master"> +<h4>New branching model: develop vs. master<a class="headerlink" href="#new-branching-model-develop-vs-master" title="Permalink to this headline">¶</a></h4> +<p>Please note that with the move to git, we are adopting the branching +model described at +<a class="reference external" href="http://nvie.com/posts/a-successful-git-branching-model/">http://nvie.com/posts/a-successful-git-branching-model/</a></p> +<p>In this branching model there are two persistent branches:</p> +<ul class="simple"> +<li>develop: where all new commits go</li> +<li>master: where code gets merged and tagged as a release</li> +</ul> +<p>That is to say, <strong>please make your commits on the develop branch, not +the master branch</strong>.</p> +</div> +<div class="section" id="feature-branches"> +<h4>Feature branches<a class="headerlink" href="#feature-branches" title="Permalink to this headline">¶</a></h4> +<blockquote> +<div>“The essence of a feature branch is that it exists as long as the +feature is in development, but will eventually be merged back into +develop (to definitely add the new feature to the upcoming release) +or discarded (in case of a disappointing experiment).” – +<a class="reference external" href="http://nvie.com/posts/a-successful-git-branching-model/">http://nvie.com/posts/a-successful-git-branching-model/</a></div></blockquote> +</div> +<div class="section" id="example-feature-branch-2656-lucene"> +<h4>Example feature branch: 2656-lucene<a class="headerlink" href="#example-feature-branch-2656-lucene" title="Permalink to this headline">¶</a></h4> +<p>First, we create the branch and check it out:</p> +<div class="highlight-python"><pre>murphy:dvn pdurbin$ git branch + 2656-solr +* develop +murphy:dvn pdurbin$ git branch 2656-lucene +murphy:dvn pdurbin$ +murphy:dvn pdurbin$ git branch + 2656-lucene + 2656-solr +* develop +murphy:dvn pdurbin$ git checkout 2656-lucene +Switched to branch '2656-lucene' +murphy:dvn pdurbin$ +murphy:dvn pdurbin$ git status +# On branch 2656-lucene +nothing to commit (working directory clean) +murphy:dvn pdurbin$</pre> +</div> +<div class="line-block"> +<div class="line">Then, we make a change and a commit, and push it to:</div> +</div> +<div class="line-block"> +<div class="line"><a class="reference external" href="https://github.com/iqss/dvn/tree/2656-lucene">https://github.com/iqss/dvn/tree/2656-lucene</a> (creating a new remote branch):</div> +</div> +<div class="highlight-python"><pre>murphy:dvn pdurbin$ vim src/DVN-EJB/src/java/edu/harvard/iq/dvn/core/index/Indexer.java +murphy:dvn pdurbin$ +murphy:dvn pdurbin$ git commit -m 'start lucene faceting branch' src/DVN-EJB/src/java/edu/harvard/iq/dvn/core/index/Indexer.java +[2656-lucene 3b82f88] start lucene faceting branch + 1 file changed, 73 insertions(+), 2 deletions(-) +murphy:dvn pdurbin$ +murphy:dvn pdurbin$ git push origin 2656-lucene +Counting objects: 25, done. +Delta compression using up to 8 threads. +Compressing objects: 100% (10/10), done. +Writing objects: 100% (13/13), 2.23 KiB, done. +Total 13 (delta 6), reused 0 (delta 0) +To git@github.com:IQSS/dvn.git + * [new branch] 2656-lucene -> 2656-lucene +murphy:dvn pdurbin$</pre> +</div> +<div class="line-block"> +<div class="line"><br /></div> +</div> +<p>As we work on the feature branch, we merge the latest changes from +“develop”. We want to resolve conflicts in the feature branch itself so +that the feature branch will merge cleanly into “develop” when we’re +ready. In the example below, we use <tt class="docutils literal"><span class="pre">git</span> <span class="pre">mergetool</span></tt> and <tt class="docutils literal"><span class="pre">opendiff</span></tt> +to resolve conflicts and save the merge. Then we push the newly-merged +2656-lucene feature branch to GitHub:</p> +<div class="line-block"> +<div class="line"><br /></div> +</div> +<div class="highlight-python"><pre>murphy:dvn pdurbin$ git branch +* 2656-lucene + 2656-solr + develop +murphy:dvn pdurbin$ git checkout develop +murphy:dvn pdurbin$ git branch + 2656-lucene + 2656-solr +* develop +murphy:dvn pdurbin$ git pull +remote: Counting objects: 206, done. +remote: Compressing objects: 100% (43/43), done. +remote: Total 120 (delta 70), reused 96 (delta 46) +Receiving objects: 100% (120/120), 17.65 KiB, done. +Resolving deltas: 100% (70/70), completed with 40 local objects. +From github.com:IQSS/dvn + 8fd223d..9967413 develop -> origin/develop +Updating 8fd223d..9967413 +Fast-forward + .../admin/EditNetworkPrivilegesServiceBean.java | 5 +- +(snip) + src/DVN-web/web/study/StudyFilesFragment.xhtml | 2 +- + 12 files changed, 203 insertions(+), 118 deletions(-) +murphy:dvn pdurbin$ murphy:dvn pdurbin$ git pull +remote: Counting objects: 206, done. +remote: Compressing objects: 100% (43/43), done. +remote: Total 120 (delta 70), reused 96 (delta 46) +Receiving objects: 100% (120/120), 17.65 KiB, done. +Resolving deltas: 100% (70/70), completed with 40 local objects. +From github.com:IQSS/dvn + 8fd223d..9967413 develop -> origin/develop +Updating 8fd223d..9967413 +Fast-forward + .../admin/EditNetworkPrivilegesServiceBean.java | 5 +- +(snip) + .../harvard/iq/dvn/core/web/study/StudyUI.java | 2 +- + src/DVN-web/web/HomePage.xhtml | 5 +- +murphy:dvn pdurbin$ +murphy:dvn pdurbin$ git checkout 2656-lucene +Switched to branch '2656-lucene' +murphy:dvn pdurbin$ +murphy:dvn pdurbin$ +murphy:dvn pdurbin$ git merge develop +Auto-merging src/DVN-web/web/BasicSearchFragment.xhtml +CONFLICT (content): Merge conflict in src/DVN-web/web/BasicSearchFragment.xhtml +Auto-merging src/DVN-web/src/edu/harvard/iq/dvn/core/web/BasicSearchFragment.java +Auto-merging src/DVN-EJB/src/java/edu/harvard/iq/dvn/core/index/Indexer.java +Automatic merge failed; fix conflicts and then commit the result. +murphy:dvn pdurbin$ +murphy:dvn pdurbin$ git status +# On branch 2656-lucene +# Changes to be committed: +# +# modified: src/DVN-EJB/src/java/edu/harvard/iq/dvn/core/admin/EditNetworkPrivilegesServiceBean.java +(snip) +# new file: src/DVN-web/web/admin/ChooseDataverseForCreateStudy.xhtml +# modified: src/DVN-web/web/study/StudyFilesFragment.xhtml +# +# Unmerged paths: +# (use "git add/rm <file>..." as appropriate to mark resolution) +# +# both modified: src/DVN-web/web/BasicSearchFragment.xhtml +# +murphy:dvn pdurbin$ git mergetool +merge tool candidates: opendiff kdiff3 tkdiff xxdiff meld tortoisemerge gvimdiff diffuse ecmerge p4merge araxis bc3 emerge vimdiff +Merging: +src/DVN-web/web/BasicSearchFragment.xhtml + +Normal merge conflict for 'src/DVN-web/web/BasicSearchFragment.xhtml': + {local}: modified file + {remote}: modified file +Hit return to start merge resolution tool (opendiff): +murphy:dvn pdurbin$ +murphy:dvn pdurbin$ git add . +murphy:dvn pdurbin$ +murphy:dvn pdurbin$ git commit -m "Merge branch 'develop' into 2656-lucene" +[2656-lucene 519cd8c] Merge branch 'develop' into 2656-lucene +murphy:dvn pdurbin$ +murphy:dvn pdurbin$ git push origin 2656-lucene +(snip) +murphy:dvn pdurbin$</pre> +</div> +<div class="line-block"> +<div class="line">When we are ready to merge the feature branch back into the develop branch, we can do so.</div> +</div> +<div class="line-block"> +<div class="line">Here’s an example of merging the 2656-lucene branch back into develop:</div> +</div> +<div class="highlight-python"><pre>murphy:dvn pdurbin$ git checkout 2656-lucene +Switched to branch '2656-lucene' +murphy:dvn pdurbin$ git pull +Already up-to-date. +murphy:dvn pdurbin$ git checkout develop +Switched to branch 'develop' +murphy:dvn pdurbin$ git pull +Already up-to-date. +murphy:dvn pdurbin$ git merge 2656-lucene +Removing lib/dvn-lib-EJB/lucene-core-3.0.0.jar +Merge made by the 'recursive' strategy. + lib/dvn-lib-EJB/lucene-core-3.0.0.jar | Bin 1021623 -> 0 bytes + lib/dvn-lib-EJB/lucene-core-3.5.0.jar | Bin 0 -> 1466301 bytes + lib/dvn-lib-EJB/lucene-facet-3.5.0.jar | Bin 0 -> 293582 bytes + src/DVN-EJB/src/java/edu/harvard/iq/dvn/core/index/DvnQuery.java | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/DVN-EJB/src/java/edu/harvard/iq/dvn/core/index/IndexServiceBean.java | 56 ++++++++++++++++++++ + src/DVN-EJB/src/java/edu/harvard/iq/dvn/core/index/IndexServiceLocal.java | 16 +++++- + src/DVN-EJB/src/java/edu/harvard/iq/dvn/core/index/Indexer.java | 432 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- + src/DVN-EJB/src/java/edu/harvard/iq/dvn/core/index/ResultsWithFacets.java | 71 +++++++++++++++++++++++++ + src/DVN-web/src/SearchFieldBundle.properties | 4 +- + src/DVN-web/src/edu/harvard/iq/dvn/core/web/AdvSearchPage.java | 86 +++++++++++++++++++++++++++++++ + src/DVN-web/src/edu/harvard/iq/dvn/core/web/BasicSearchFragment.java | 102 +++++++++++++++++++++++++++++++++++- + src/DVN-web/src/edu/harvard/iq/dvn/core/web/StudyListing.java | 11 ++++ + src/DVN-web/src/edu/harvard/iq/dvn/core/web/StudyListingPage.java | 428 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- + src/DVN-web/src/edu/harvard/iq/dvn/core/web/study/FacetResultUI.java | 42 +++++++++++++++ + src/DVN-web/src/edu/harvard/iq/dvn/core/web/study/FacetUI.java | 62 ++++++++++++++++++++++ + src/DVN-web/web/AdvSearchPage.xhtml | 3 +- + src/DVN-web/web/BasicSearchFragment.xhtml | 9 ++-- + src/DVN-web/web/StudyListingPage.xhtml | 43 +++++++++++----- + 18 files changed, 1500 insertions(+), 25 deletions(-) + delete mode 100644 lib/dvn-lib-EJB/lucene-core-3.0.0.jar + create mode 100644 lib/dvn-lib-EJB/lucene-core-3.5.0.jar + create mode 100644 lib/dvn-lib-EJB/lucene-facet-3.5.0.jar + create mode 100644 src/DVN-EJB/src/java/edu/harvard/iq/dvn/core/index/DvnQuery.java + create mode 100644 src/DVN-EJB/src/java/edu/harvard/iq/dvn/core/index/ResultsWithFacets.java + create mode 100644 src/DVN-web/src/edu/harvard/iq/dvn/core/web/study/FacetResultUI.java + create mode 100644 src/DVN-web/src/edu/harvard/iq/dvn/core/web/study/FacetUI.java +murphy:dvn pdurbin$ +murphy:dvn pdurbin$ git status +# On branch develop +# Your branch is ahead of 'origin/develop' by 68 commits. +# +nothing to commit (working directory clean) +murphy:dvn pdurbin$ +murphy:dvn pdurbin$ git push +Counting objects: 51, done. +Delta compression using up to 8 threads. +Compressing objects: 100% (12/12), done. +Writing objects: 100% (19/19), 1.41 KiB, done. +Total 19 (delta 7), reused 0 (delta 0) +To git@github.com:IQSS/dvn.git + b7fae01..2b88b68 develop -> develop +murphy:dvn pdurbin$</pre> +</div> +</div> +<div class="section" id="switching-to-the-master-branch-to-merge-commits-from-the-develop-branch"> +<h4>Switching to the master branch to merge commits from the develop branch<a class="headerlink" href="#switching-to-the-master-branch-to-merge-commits-from-the-develop-branch" title="Permalink to this headline">¶</a></h4> +<p>We should really only need to switch from the develop branch to the +master branch as we prepare for a release.</p> +<p>First, we check out the master branch by clicking Team -> Git -> Branch +-> Switch to Branch.</p> +<p>Change Branch to “origin/master” and check the box for “Checkout as New +Branch” and fill in “master” as the “Branch Name” to match the name of +the branch we’re switching to. Then click “Switch”.</p> +<p>Now, in the Git Repository Browser (from Team -> Repository Browser) the +root of the tree should say <tt class="docutils literal"><span class="pre">dvn</span> <span class="pre">[master]</span></tt> and you should see two +branches under Branches -> Local. <strong>master</strong> should be in bold and +develop should not.</p> +</div> +</div> +<div class="section" id="tips"> +<h3>Tips<a class="headerlink" href="#tips" title="Permalink to this headline">¶</a></h3> +<div class="section" id="previewing-changes-before-a-pull"> +<h4>Previewing changes before a pull<a class="headerlink" href="#previewing-changes-before-a-pull" title="Permalink to this headline">¶</a></h4> +<p>If the build fails overnight you may want to hold off on doing a pull +until the problem is resolved. To preview what has changed since your +last pull, you can do a <tt class="docutils literal"><span class="pre">git</span> <span class="pre">fetch</span></tt> (the first part of a pull) then +<tt class="docutils literal"><span class="pre">git</span> <span class="pre">log</span> <span class="pre">HEAD..origin/develop</span></tt> to see the commit messages. +<tt class="docutils literal"><span class="pre">git</span> <span class="pre">log</span> <span class="pre">-p</span></tt> or <tt class="docutils literal"><span class="pre">git</span> <span class="pre">diff</span></tt> will allow you to see the contents of the +changes:</p> +<div class="highlight-python"><pre>git checkout develop +git fetch +git log HEAD..origin/develop +git log -p HEAD..origin/develop +git diff HEAD..origin/develop</pre> +</div> +<p>After the build is working again, you can simply do a pull as normal.</p> +</div> +</div> +<div class="section" id="errors"> +<h3>Errors<a class="headerlink" href="#errors" title="Permalink to this headline">¶</a></h3> +<div class="section" id="duplicate-class"> +<h4>Duplicate class<a class="headerlink" href="#duplicate-class" title="Permalink to this headline">¶</a></h4> +<p>The error “duplicate class” can result whenever you resolve a merge +conflict in git.</p> +<p>The fix is to close NetBeans and delete (or move aside) the cache like +this:</p> +<div class="highlight-python"><pre>cd ~/Library/Caches/NetBeans +mv 7.2.1 7.2.1.moved</pre> +</div> +<p>According to <a class="reference external" href="https://netbeans.org/bugzilla/show_bug.cgi?id=197983">https://netbeans.org/bugzilla/show_bug.cgi?id=197983</a> this might be fixed in NetBeans 7.3.</p> +</div> +</div> +</div> +</div> + + + </div> + </div> + </div> + </div> + <div class="sidebar"> + <h3>Table Of Contents</h3> + <ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="dataverse-user-main.html">User Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="dataverse-installer-main.html">Installers Guide</a></li> +<li class="toctree-l1 current"><a class="current reference internal" href="">DVN Developers Guide</a><ul> +<li class="toctree-l2"><a class="reference internal" href="#build-environment-configuring-netbeans">Build Environment (Configuring NetBeans)</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#install-netbeans-and-glassfish">Install NetBeans and GlassFish</a><ul> +<li class="toctree-l4"><a class="reference internal" href="#install-netbeans-bundle">Install NetBeans bundle</a></li> +<li class="toctree-l4"><a class="reference internal" href="#if-you-have-to-install-glassfish-3-1-2-2">[If you have to] Install GlassFish 3.1.2.2</a></li> +<li class="toctree-l4"><a class="reference internal" href="#install-junit-if-you-haven-t-already">Install JUnit (if you haven’t already)</a></li> +</ul> +</li> +<li class="toctree-l3"><a class="reference internal" href="#check-out-a-new-copy-of-the-dvn-source-tree">Check out a new copy of the DVN source tree</a><ul> +<li class="toctree-l4"><a class="reference internal" href="#create-a-github-account-if-you-don-t-have-one-already">Create a GitHub account [if you don’t have one already]</a></li> +<li class="toctree-l4"><a class="reference internal" href="#set-up-an-ssh-keypair-if-you-haven-t-already">Set up an ssh keypair (if you haven’t already)</a></li> +<li class="toctree-l4"><a class="reference internal" href="#clone-the-repo">Clone the repo</a><ul> +<li class="toctree-l5"><a class="reference internal" href="#remote-repository">Remote Repository</a></li> +<li class="toctree-l5"><a class="reference internal" href="#remote-branches">Remote Branches</a></li> +<li class="toctree-l5"><a class="reference internal" href="#destination-directory">Destination Directory</a></li> +</ul> +</li> +</ul> +</li> +<li class="toctree-l3"><a class="reference internal" href="#open-projects">Open Projects</a></li> +<li class="toctree-l3"><a class="reference internal" href="#build-for-the-first-time">Build for the first time</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="#application-environment-configuring-glassfish-and-postgresql">Application Environment (Configuring GlassFish and PostgreSQL)</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#install-postgresql-database-server">Install PostgreSQL database server</a></li> +<li class="toctree-l3"><a class="reference internal" href="#run-the-install-dev-script">Run the install-dev script</a></li> +<li class="toctree-l3"><a class="reference internal" href="#testing-login">Testing login</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="#developing-with-git">Developing with Git</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#commit">Commit</a></li> +<li class="toctree-l3"><a class="reference internal" href="#push">Push</a></li> +<li class="toctree-l3"><a class="reference internal" href="#release">Release</a><ul> +<li class="toctree-l4"><a class="reference internal" href="#merge-develop-into-master">Merge develop into master</a><ul> +<li class="toctree-l5"><a class="reference internal" href="#tag-the-release">Tag the release</a></li> +<li class="toctree-l5"><a class="reference internal" href="#make-release-available-for-download">Make release available for download</a></li> +<li class="toctree-l5"><a class="reference internal" href="#increment-the-version-number">Increment the version number</a></li> +</ul> +</li> +</ul> +</li> +<li class="toctree-l3"><a class="reference internal" href="#branches">Branches</a><ul> +<li class="toctree-l4"><a class="reference internal" href="#current-list-of-branches">Current list of branches</a></li> +<li class="toctree-l4"><a class="reference internal" href="#new-branching-model-develop-vs-master">New branching model: develop vs. master</a></li> +<li class="toctree-l4"><a class="reference internal" href="#feature-branches">Feature branches</a></li> +<li class="toctree-l4"><a class="reference internal" href="#example-feature-branch-2656-lucene">Example feature branch: 2656-lucene</a></li> +<li class="toctree-l4"><a class="reference internal" href="#switching-to-the-master-branch-to-merge-commits-from-the-develop-branch">Switching to the master branch to merge commits from the develop branch</a></li> +</ul> +</li> +<li class="toctree-l3"><a class="reference internal" href="#tips">Tips</a><ul> +<li class="toctree-l4"><a class="reference internal" href="#previewing-changes-before-a-pull">Previewing changes before a pull</a></li> +</ul> +</li> +<li class="toctree-l3"><a class="reference internal" href="#errors">Errors</a><ul> +<li class="toctree-l4"><a class="reference internal" href="#duplicate-class">Duplicate class</a></li> +</ul> +</li> +</ul> +</li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="dataverse-api-main.html">APIs Guide</a></li> +</ul> + + <h3 style="margin-top: 1.5em;">Search</h3> + <form class="search" action="search.html" method="get"> + <input type="text" name="q" /> + <input type="submit" value="Go" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> + <p class="searchtip" style="font-size: 90%"> + Enter search terms. + </p> + </div> + <div class="clearer"></div> + </div> + </div> + + <div class="footer-wrapper"> + <div class="footer"> + <div class="left"> + <a href="dataverse-installer-main.html" title="Installers Guide" + >previous</a> | + <a href="dataverse-api-main.html" title="APIs Guide" + >next</a> | + <a href="genindex.html" title="General Index" + >index</a> + <br/> + <a href="_sources/dataverse-developer-main.txt" + rel="nofollow">Show Source</a> + </div> + + <div class="right"> + + <div class="footer"> + © Copyright 1997-2013, President & Fellows Harvard University. + Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. + </div> + </div> + <div class="clearer"></div> + </div> + </div> + + </body> +</html> \ No newline at end of file