[Bioc-devel] GitHub and svn

S Manimaran manimaran_1975 at hotmail.com
Mon Oct 17 01:14:02 CEST 2016

Thanks, Henrik, for the nice git-bioc package. Thank you Kevin and Nathan for the information.


-----Original Message-----
Date: Sat, 15 Oct 2016 22:25:23 -0700

From: Henrik Bengtsson <henrik.bengtsson at gmail.com<mailto:henrik.bengtsson at gmail.com>>

To: Nathan Sheffield <nathan at code.databio.org<mailto:nathan at code.databio.org>>

Cc: bioc-devel at r-project.org<mailto:bioc-devel at r-project.org>

Subject: Re: [Bioc-devel] GitHub and svn

Hi folks, I'm a person who prefers to use Git as my main source for my Bioc packages.  These Git repositories are then synced online to GitHub for each collaboration yada yada.  This also means that these days I also tend to think of the Bioconductor SVN repository mostly as a communication channel for submitting new versions (very much as you FTP package updates to CRAN).

That's my setup.  Now, I constantly failed to remember the git svn commands to synchronizing between local Git repository and the Bioc SVN repository - to be honest - it was lots of trial and error whenever I had to do it.  This caused me to hold back on committing updates or sometimes I committed directly to the Bioc SVN and manually copied it over to the Git repository.  Things didn't work smoothly because I constantly ran into those dreaded `git svn` errors that I think is due to a non-linear Git history or whatever.

So, I wrote the git-bioc tools: https://github.com/HenrikBengtsson/git-bioc

Now, when I've done updates to my Git repository and feel they're ready to go live on Bioc devel (after first having pushed to GitHub and verified that Travis CI and Appveyor CI reports all OK), I basically do:

1. git bioc pull

2. git bioc import (and solve any conflicts, iff needed) 3. git bioc export (and solve any conflicts, iff needed) 4. git bioc push

The first two won't do anything unless there have been updates directly to the SVN repos.

Feel free to try it out, improve on it and so on.  I don't have any plans to maintain this for everyone, but maybe it's a good enough stub for someone else to build something more general.  Things that can be improved is how commit messages are compiled / generated and how conflicts are solved.

Before using it, please read the big WARNING in the README file.


From: Kevin RUE [mailto:kevinrue67 at gmail.com]
Sent: Saturday, October 15, 2016 6:41 PM
To: S Manimaran
Cc: bioc-devel at r-project.org; Gabe Becker
Subject: Re: [Bioc-devel] GitHub and svn

Dear Mani,

That's actually where I think the git-svn bridge becomes useful.
If you take the time once to synchronise the devel branch of your package from the Bioconductor-mirror to one of the branch on your GitHub repository (for me the master branch), you could then:
1) commit changes to your own repository first (does not affect the BioC code)
2) follow the BioC git-svn instructions that you mentioned to selectively push the changes to either or both the devel and release branche(s) of Bioconductor.

I personally don't think that the current system is "unnecessarily complicated". That handful of commands is probably as simple as a system can be, to handle version control selectively applied to multiple branches (devel, 3.3, 3.2, master, ...) of multiple repositories (BioC, GitHub, ...) using multiple version control software (git, svn).

The learning curve for version control can be quite steep beyond the basic commands, but one has to bear in mind that RStudio is not a version control software in itself. The GUI only provides buttons for the most common version controls commands (pull/push/update). For more advanced commands, you will have to open a shell anyway (the little wheel icon).
I must admit that I was a bit scared/frustrated at first with the system, but after a few attempts to get it right, this little process to control the branches to synchronise can almost become enjoyable when proudly releasing new code :)

All the best,

	[[alternative HTML version deleted]]

More information about the Bioc-devel mailing list