The Git-SVN Bridge allows Github repositories to be in sync with the Bioconductor Subversion (SVN) repository. Once you have created a bridge, you don't need to use Subversion again if you don't want to. Using a bridge also enables social coding features of Github such as issue tracking and pull requests.
In order to create a bridge, you must be the maintainer of a Bioconductor package, with read/write access to its directory in the Bioconductor Subversion repository.
You will also need to create a Github repository which will mirror the Subversion repository. If you already have a Github repository that has files in it, that will work too.
Let's assume that your package is called
MyPackage, your Subversion
j.user, your Github username is
username, and your email
Your package will be in Subversion at the URL
That's the URL for the devel version of the package. You can also create a bridge to the release version of a package (see the FAQ).
If you haven't already created a Github repository, please do so now. Open the repository page in a web browser; it will have a URL like:
If you are working with a repository that is part of an organization, see the FAQ.
Click on the "Settings" link in the right-side nav bar. It will look like this:
Under Options in the left-hand nav bar, click "Collaborators". At this point, you may be asked to enter your Github password. Do so. Then in the "Add a Friend" box, type
Then click the Add button. This allows the Git-SVN bridge to make changes to your github repository in response to Subversion commits.
Again in the nav bar at left, click on "Webhooks & Services". Then click on "Add webhook". You may need to confirm your password here.
In the Payload URL box, enter:
Important Note: This url must start with
Leave "Payload version" alone (it should be "application/vnd.github-v3+form")
Under "Which events", choose "Just the
push event". Make sure
the "Active" box is checked. Then click "Update webhook".
This step lets Bioconductor know when there has been a push to your Github repository.
Important Note: Both of the above steps must be done or your Git-SVN bridge will not function properly.
Open a browser window pointing to the Git-SVN bridge web application.
In the bridge web app, click "Log In".
Log in with your SVN Username, SVN password and email address. See the FAQ if you don't remember either of these.
Once you've logged in, click the Create New Github-SVN mapping link.
Choose the root directory path. If you are creating a bridge
for a software package in Bioconductor's
devel branch, use
the default value of this dropdown
For Directory Name, choose the name of your package, e.g.
In the next box, enter the URL for the Github repository you created in step 1, e.g.
Decide how you want to handle initial merge conflicts. If you are starting with a completely empty Github repository (which does not even have a README file in it), then it does not matter how you answer this question.
If both your Subversion and your Github repositories have contents, decide carefully how you want to proceed:
Choosing "SVN wins unconditionally" means that if there are any conflicts when merging the two repositories together, the SVN version will overwrite the Github version. You will not have the opportunity to manually merge conflicting files. You will still have access to the previous versions of files that were changed, via git's commit history.
Choosing "Git wins unconditionally" means the opposite-- any merge conflicts will be resolved in Git's favor, and this will then propagate to the Bioconductor build system. You will have access to earlier versions of files that were changed, but only via svn.
You now need to check two boxes: the first confirms that you have configured your Github repository as described in Step 1, the second that you will respond to pull requests and issues filed in your Github repository (see the FAQ).
You may now click the Create New Project button.
You should see a message that your bridge was created successfully. You can click My Bridges to confirm this.
Any commits made to your package in Subversion will be mirrored in the master branch of your Github repository.
Any pushes to the master branch of your Github repository will automatically be mirrored in Subversion, and will propagate to the Bioconductor Build System.
The Git-SVN bridge only affects the master branch of your Github repository. It will ignore changes made in any other branch, even if those branches are pushed to Github. So you are free to experiment and even break your package as long as you don't do it in the master branch.
After creating a bridge, you can't see old svn commit information from prior to bridge creation if you're using git. (You can still see it with svn).
Conversely, in svn, you can't see Git commit messages from before the bridge was created. You can still see them in git.
Once the bridge is created, you'll see subsequent commit messages from both git and svn, whether you are using git or svn.
This may change in the future.
If a commit was made in svn, it will show up in the output
git log as something like this:
commit f0c494108cc854a7a7a267c6a40ea8a3bdef2209 Author: j.user <j.user@bc3139a8-67e5-0310-9ffc-ced21a209358> Date: Tue Dec 24 19:12:36 2013 +0000 This is my commit message. git-svn-id: https://hedgehog.fhcrc.org/bioconductor/trunk/madman/Rpacks/MyPackage0@85102 bc3139a8-67e5-0310-9ffc-ced21a209358
git-svn-id tells you that this commit originated in svn,
and the number after the
@ is the SVN revision number.
If you are working in Subversion, a commit made in git will look
something like this when you run
svn log -v:
------------------------------------------------------------------------ r85104 | j.user | 2013-12-24 11:13:59 -0800 (Tue, 24 Dec 2013) | 12 lines Changed paths: M /trunk/madman/Rpacks/MyPackage/DESCRIPTION Commit made by the Bioconductor Git-SVN bridge. Consists of 1 commit(s). Commit information: Commit id: 6132d20eb3615afdeafcb8a086e952e4b9f8977f Commit message: Bumped the version number Committed by Jill User <juser at contributor.org> Commit date: 2013-12-24T11:13:49-08:00
Note that the svn user who did the commit will always be the user you were logged in as when you created the bridge in Step 2.
The name of the Git user (denoted by the
Committed by line)
might vary, if you have granted other users "push" access to
your repository, or if you accept a pull request.
Yes. Be sure this is what you want. If you grant another user push access to your repository, they can push to any branch, including
master, which will then propagate to the Bioconductor build system. If you don't want the user to have that level of access, then don't grant them push access. You can accept pull requests from them instead.
The Git-SVN bridge will correctly record the name of the git user who made the commits (see above FAQ).
Look at the list of bridges maintained by the web app.
Add the Github URL of your repository to the URL: field in the DESCRIPTION file of your package. You can also mention your bridge on the bioc-devel mailing list.
You can request that the maintainer of the package create a bridge, but if they do not wish to do so, you'll need to contribute via other means. If a maintainer will not review pull requests and issues filed via Github, then it is pointless to file them.
As implied by the previous question, package maintainers must respond to pull requests and issues filed in their Github repositories.
One of the following steps should work:
Go to your
~/.subversion/auth/svn.simple directory. There should be
one or more files whose names are long hexadecimal numbers. Use
to find out which file contains your username. If you don't know your
it's usually your first initial, a dot, and your last name (all
lowercase). So Jill User would be
$ grep -l j.user * 81a52e36a28dfd7750bd975f30c7998b
This indicates that your password can be found in the file called
81a52e36a28dfd7750bd975f30c7998b. Examine that file and you should see
password V 8 Z7oRUVH6
In this case,
Z7oRUVH6 is your password.
maintainer at bioconductor dot org. Mention the package(s) that you maintain. We cannot send you your password but we can ask for a new one to be generated, and send it to you. It may take a day or two for the request to be processed.
Follow the same instructions as given in Step 1, but
give your Github repository a name indicating that it's the release
In Step 2, be sure you choose the release directory
Root Directory dropdown when creating the bridge.
For the current release, that would be:
Your release bridge is completely separate from your devel bridge. The Github repositories in each are separate from each other, not branches of each other.
Shortly before each Bioconductor release (twice a year, usually in Spring and Fall), we will disable commits to the release branch, and your release bridge will stop working. You can delete it.
When the new release branch is created, you can create a new release bridge pointing to it.
If you're working with a Github Organization repository, the steps to set up a collaborator are a little bit different:
Go to the Organization's main page. If the organization is called
myorg, you'd go to
Click on "Teams", at the right-hand side of the top navigation bar.
myorg/MyPackage, and click
Now you can go back to the repository "Settings" page and continue configuring repository settings.
You can do that by following these guidelines. Thanks to Laurent Gatto for providing these instructions which are also the inspiration for the Git-SVN bridge.
Contact the bioc-devel mailing list.