WormBase Source Code

From WormBaseWiki
Revision as of 13:20, 2 June 2014 by Tharris (talk | contribs) (Protected "WormBase Source Code": COMPLETELY 100% DEPRECATED ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)))
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search


The WormBase source code is maintained using the distributed SCM system Mercurial. We use BitBucket.org as a convenient place to host the code and track issues:


Available Repositories

http://bitbucket.org/tharris/wormbase - The WormBase web application (public)

http://bitbucket.org/tharris/wormbase-admin - Administration code (private)

Get Mercurial


Set up your environment

Minimally, create a file at ~/.hgrc containing:

username=First Last <email@example.net>

Checking out the code

The following examples all use Mercurial over http. You can also use mercurial over ssh.

cd ~/projects
$ hg clone http://bitbucket.org/tharris/wormbase/

Or via https:

$ hg clone https://username@bitbucket.org/tharris/wormbase

If checked out through http/https, you will be required to provide username/password when you do 'hg push'

Working With Mercurial

Be sure to see the excellent Mercurial reference text.

Joel Spolsky has written an excellent tutorial at hginit.com.

Here's a great tutorial on managing complex commits and merges using a triple-repository strategy. What follows is a distillation of this strategy.

Pulling in Changes and Updating in one step

$ hg pull -u 

Pushing Changes to the Repository

$ hg push

Suggested Work Strategy

As derived from:


Create two parallel repositories

remember to register ssh key in your bitbucket account first in order to use hg clone ssh. website-main and website-sync

% hg clone ssh://hg@bitbucket.org/tharris/wormbase/ website-main
% hg clone ssh://hg@bitbucket.org/tharris/wormbase/ website-sync
# (If you cloned your local repository, make sure that
#  website-sync points back to master)
% cp website-main/.hg/hgrc website-sync/.hg/hgrc
1. Work in website-main. Edit files at will,
   and check in logical changesets as needed(hg commit ...)

2. When you want to push a changeset, go to
   your sync clone, and pull your new changesets
   from your working clone:

        % cd ../website-sync
        % hg pull ../website-main && hg update

3. At this point, it's best to try a build/test
   as well, to make sure changeset is complete.
   If you're working on many things in parallel,
   it's possible that your changeset is depending
   on a change in a file you haven't checked in yet.

4. Now pull in the new changes from the master, and merge these:

        % hg fetch

   If don't have the fetch extension installed, do it manually

	% hg pull && hg merge && hg ci -m "Merge"

5. If something went wrong with the merge - no problem.
   You can just go and nuke the entire sync clone and try again!
   Your modified files, and your new changesets, are still
   sitting completely unaffected in the main clone. Just clone
   main again and try more carefully :)

6. Now you can push your merged changesets to the master repository:

         % hg push

7. ...and now you can pull these changes back into your main repository:

	% hg pull ../sync && hg update

Reference: Migrating to Mercurial

After creating the repository on BitBucket, I cloned it and populated with a exported version of source from SVN. $ hg clone http://bitbucket.org/harris/wormbase $ mv ~/wormbase.svn/* wormbase/. # Add and commit the files $ hg add $ hg commit -m 'Initial import of my old svn repository' # Push the changes back to BitBucket $ hg push

Reference: Migrating to git

Global setup: Download and install Git: http://git-scm.com/download git config --global user.name "Your Name" git config --global user.email info@tharris.org Next steps: mkdir wormbase-app cd wormbase-app git init touch README git add README git commit -m 'first commit' git remote add origin git@github.com:tharris/wormbase-app.git git push origin master Existing Git Repo? cd existing_git_repo git remote add origin git@github.com:tharris/wormbase-app.git git push origin master Importing a SVN Repo? Click here When you're done: Continue