[Bioc-devel] Git svn mirror: Duplicated commit entries (introduced by git svn rebase?)

Jim Hester james.f.hester at gmail.com
Tue Feb 23 21:43:59 CET 2016


The Git-Bridge commits are in SVN, so unfortunately there is no good way to
avoid the duplication as they will be reintroduced each time you run `git
svn rebase`. Here is the corresponding commit in the Git mirrors directly
from SVN (
https://github.com/Bioconductor-mirror/aroma.light/commit/a0ee1399c24d36b96d5f737907228e250b5ffcba
).

Because of this the best way to have a clean history on the Git side is to
handle all interaction with SVN in a separate branch and simply cherry-pick
the commits you want to commit to SVN from your master branch when needed.
Trying to use `git svn rebase` directly on your master branch will cause
the duplication you observed.

See
http://bioconductor.org/developers/how-to/git-mirrors/#dealing-with-prior-history--merge-conflicts
for an example of this approach.

I realize this is not an ideal workflow, however because SVN commits are
immutable there isn't a lot that can be done to clean up the history
retroactively.

Jim

On Tue, Feb 23, 2016 at 2:59 PM, Dan Tenenbaum <dtenenba at fredhutch.org>
wrote:

> Hi Henrik,
>
> I am not an expert in these matters but I'll take a stab at this (I have
> asked someone who might know but have not yet heard back).
>
> See below.
>
>
> ----- Original Message -----
> > From: "Henrik Bengtsson" <henrik.bengtsson at gmail.com>
> > To: "bioC-devel" <bioc-devel at stat.math.ethz.ch>
> > Sent: Friday, February 19, 2016 1:16:09 PM
> > Subject: [Bioc-devel] Git svn mirror: Duplicated commit entries
> (introduced   by git svn rebase?)
>
> > Hi.
> >
> > I've got https://github.com/HenrikBengtsson/aroma.light which I've
>
> BTW you should probably change the repo comment on this repo as it refers
> to the defunct git-svn bridge.
>
>
> > successfully used for years to sync to Biconductor SVN via the
> > BiocGitHub bridge.  All the time I've had the `master` branch synced
> > to Bioc.  (I've also had my own `develop` branch to which I made all
> > the commits which I then merged in to `master`).
> >
> > Next, I'm following the instruction in Section 'Scenario 2: Set Up
> > Your Own GitHub Repository' on
> > https://www.bioconductor.org/developers/how-to/git-mirrors/.  However,
> > I end up with duplicated commit entries.  For example, I fork
> > https://github.com/HenrikBengtsson/aroma.light to
> > https://github.com/hb-slash/aroma.light and do the following:
>
> I'm not sure why you did this forking. You could have just run
> update_remotes.sh in
> https://github.com/HenrikBengtsson/aroma.light . But it doesn't do any
> harm, I guess, you just have to keep track of where you want your
> development to happen.
>
> >
> > n6{henrik}: curl -O
> >
> https://raw.githubusercontent.com/Bioconductor/mirror/master/update_remotes.sh
> >  % Total    % Received % Xferd  Average Speed   Time    Time     Time
> Current
> >                                 Dload  Upload   Total   Spent    Left
> Speed
> > 100  3303  100  3303    0     0  13741      0 --:--:-- --:--:-- --:--:--
> 18350
> >
> > n6{henrik}: git clone https://github.com/hb-slash/aroma.light.git
> > Cloning into 'aroma.light'...
> > remote: Counting objects: 1936, done.
> > remote: Compressing objects: 100% (670/670), done.
> > remote: Total 1936 (delta 1263), reused 1928 (delta 1256), pack-reused 0
> > Receiving objects: 100% (1936/1936), 813.83 KiB | 1.04 MiB/s, done.
> > Resolving deltas: 100% (1263/1263), done.
> > Checking connectivity... done.
> >
> > n6{henrik}: cd aroma.light
> >
> > n6{henrik}: git status
> > On branch master
> > Your branch is up-to-date with 'origin/master'.
> > nothing to commit, working directory clean
> >
> > n6{henrik}: bash ../update_remotes.sh
> > Commit to git as normal, when you want to push your commits to svn
> >  1. `git checkout devel` to switch to the devel branch. (use release-X.X
> for
> >        release branches)
> >  2. `git svn rebase` to get the latest SVN changes.
> >  3. `git merge master --log` to merge your changes from the master branch
> >        or skip this step and work directly on the current branch.
> >  4. `git svn dcommit --add-author-from` to sync and commit
> >        your changes to svn.
> > n6{henrik}: pwd
> > /home/henrik/ghf/aroma.light
> >
> > n6{henrik}: git br
> >  devel
> > * master
> >  release-3.0
> >  release-3.1
> >  release-3.2
> >
> > n6{henrik}: git checkout devel
> > Switched to branch 'devel'
> > Your branch is up-to-date with 'bioc/master'.
> >
> > n6{henrik}: git svn rebase
> > Migrating from a git-svn v1 layout...
> > Data from a previous version of git-svn exists, but
> >        .git/svn
> >        (required for this version (2.1.3) of git-svn) does not exist.
> > Done migrating from a git-svn v1 layout
> > Rebuilding
> >
> .git/svn/refs/remotes/git-svn-devel/.rev_map.bc3139a8-67e5-0310-9ffc-ced21a209358
> > ...
> > r18895 = 143ee9ee3f234d83b56e32db0b0b8d4383f2a61d
> > r18903 = 5ef8bcd18515a2ef2de90d165ea831797380dd9d
> > r18904 = 9c5d176667c453079e571a224b7609f51033a1a9
> > [... (in total 193 of these lines) ...]
> > r109270 = 1cfcf8f2d257c6a2a90d9292b93a6863e3aabf51
> > r109589 = 0c24adb439efd2f30e45e8927e4bcbde0273f320
> > r109592 = dc91cede48ea7d60263e452304e035622497a25b
> > r109897 = 496182c760cbac378f98b374008d5273d48b5ec9
> > r112254 = 44cd054eb4115d6955cd918b84f382bca41a7839
> > r113262 = 81f338b4f7d6825786f917f9e712889db20f66f2
> > Done rebuilding
> >
> .git/svn/refs/remotes/git-svn-devel/.rev_map.bc3139a8-67e5-0310-9ffc-ced21a209358
> > Current branch devel is up to date.
> >
> > n6{henrik}: git status
> > On branch devel
> > Your branch is up-to-date with 'bioc/master'.
> >
> > n6{henrik}: git checkout master
> > Switched to branch 'master'
> > Your branch is up-to-date with 'origin/master'.
> >
> > n6{henrik}: git merge -X theirs devel
> > Auto-merging tests/normalizeFragmentLength-ex2.R
> > Merge made by the 'recursive' strategy.
> > tests/normalizeFragmentLength-ex2.R | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > n6{henrik}: git status
> > On branch master
> > Your branch is ahead of 'origin/master' by 194 commits.
> >  (use "git push" to publish your local commits)
> > nothing to commit, working directory clean
> >
> > Note that this single merge now makes local master to be **194**
> > commits ahead of origin/master.   This looks like 193 + 1 where 193
> > corresponds to those 193 "tweaks" introduced by `git svn rebase`.
> >
> > I did a `git push --all` after the above, so you can see the
> > repository online at https://github.com/hb-slash/aroma.light/.  For
> > instance, there are lots of the commits are now duplicated, where one
> > show my original commit message the other the "Git-SVN bridge"
> > message, e.g.
> >
> > "Updated NEWS to reflect new Bioc releases.":
> >
> https://github.com/hb-slash/aroma.light/commit/32e70c12bd9b6ea106128a1db466a13aebcf88a6
> >
> > "Commit made by the Bioconductor Git-SVN bridge. ...":
> >
> https://github.com/hb-slash/aroma.light/commit/a0ee1399c24d36b96d5f737907228e250b5ffcba
> >
> > Note that the code changes are identical, but based on different parents.
> >
> > Any suggestions?  Are the actions for `git svn rebase` expected?
>
> I think this is a result of the old git-svn bridge being kind of brain
> dead, which I can say because I wrote it.
>
> One thing you might want to try is...
>
> - git checkout devel
> - do your git svn rebase, make a note of the first and last commits that
>   are pulled down (let's call them FIRST and LAST)
> - check out a temporary branch. (git checkout -b temp)
> - git cherry-pick FIRST..LAST . You might need to resolve some conflicts
> here.
>   This will basically 'replay' all those commits into a single new commit.
> - git checkout master
> - git merge temp
> - if all looks ok, then push
>
> Not sure if I've totally addressed your actual problem here, but HTH
> anyway....
>
> Dan
>
>
>
> >
> > Thanks
> >
> > Henrik
> >
> > _______________________________________________
> > Bioc-devel at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/bioc-devel
>
> _______________________________________________
> Bioc-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/bioc-devel
>

	[[alternative HTML version deleted]]



More information about the Bioc-devel mailing list