[gmx-developers] Accidental push of merge, was: git release branch

Mark Abraham mark.abraham at anu.edu.au
Mon Mar 8 23:47:02 CET 2010



----- Original Message -----
From: Roland Schulz <roland at utk.edu>
Date: Tuesday, March 9, 2010 2:26
Subject: Re: [gmx-developers] Accidental push of merge, was: git release	branch
To: Discussion list for GROMACS development <gmx-developers at gromacs.org>

> Sure. 
> I'm happy to put a cleaned up version (e.g. with code highlighting for the commands to paste) to the wiki.> 
> Could whoever manages the wiki check why I'm not allowed to edit pages? 

Some pages can't be edited. Overall site availability is not rock-steady, so please try again another time. Editing is fine for me at time of writing this email.

Mark
 
> I can login but afterwards the Edit Link is still grey and can't be clicked.> I tested it with Chrome 5.0.307.11 beta and Firefox 3.5.8.> 
> My user is: rolandschulz.

> 
> Thanks> 
> Roland> 
> 
> On Mon, Mar 8, 2010 at 2:10 AM, David van der Spoel <spoel at xray.bmc.uu.se> wrote:


> On 2010-03-08 07.04, Roland Schulz wrote:

> 
Hi,

> 
> 
I'm sorry! I just accidentally pushed from a repository where I had
> 
merged in release-4-0-patches.

> 
> 
I merged with "git merge -s ours release-4-0-patches"


> 
> 
Maybe you or another healthy volunteer can write a step by step howto for fixing bugs in the release branch and subsequent merge into the head branch. It should preferentially be cut-and-paste stuff...

> 

> 


> 
> 
man git-merge: "This resolves any number of heads, but the result of the
> 
merge is always the current branch head. It is meant to be used to
> 
supersede old
> 
            development history of side branches."
> 
Or put another way (stackoverflow): "to pull in another [branch], but
> 
throw away all of the changes that [branch] introduces.
> 
This keeps the history of a branch without any of the effects of the
> 
branch."

> 
> 
Thus I merged in the history of release-4-0-patches without changing any
> 
files in "master".

> 
> 
Thus the good news is that no file was changed by my mistake.
> 
The bad news is that the history was changed. The history of master now
> 
also includes the history of release-4-0-patches. This makes most
> 
bug-fixes now appear twice. Sorry!

> 
> 
I can't undo this because rewriting the history, would produce very
> 
weird merge conflicts if someone had already pulled after
> 
I accidentally pushed this merge.

> 
> 
One potential good effect: If we want we can start using the strategy to
> 
always merge bug fixes from the release branch instead of
> 
cherry-picking. Because now git knows that the master branch includes
> 
all bug-fixes up to this point. And thus will merge only further
> 
bug-fixes. I'd suggest this strategy as explained in the earlier mail.
> 
See below for detailed explanation of this strategy.

> 
> 
Sorry again for the mistake.

> 
> 
Roland

> 
> 
On Mon, Mar 1, 2010 at 10:02 PM, Roland Schulz <roland at utk.edu
> 
<mailto:roland at utk.edu>> wrote:

> 
> 
    Hi,

> 
> 
    currently we are applying the a bugfix to both the HEAD and release
> 
    branch by committing it to one and then cherry-picking it in the other.

> 
> 
    If I remember correctly the reason we decided to do this is:
> 
    There might be fixes in the release branch which are workarounds
> 
    which shouldn't be merged into the master branch (where the bug is
> 
    fixed e.g. by a new feature). Thus there are some fixes which should
> 
    be merged into "master" and there are others which should not be
> 
    merged into "master".

> 
> 
    The disadvantage of cherry-pick is that git does not know that a
> 
    commit and the cherry-picked copy in a different branch a identical.
> 
    This has several disadvantages:
> 
    - There is no command listing the commands which haven't been merged
> 
    into "master" yet.
> 
    - The log between the "master" and release branch lists also commits
> 
    which are applied to both
> 
    - It makes it more difficult to back-port features (producing more
> 
    merge conflicts)

> 
> 
    Thus I suggest the following strategy instead:

> 
> 
    - All bug-fixes are committed to the release branch first (if
> 
    one accidentally commits to the "master" branch see below)
> 
    - If it is a workaround which shouldn't be merged into master this
> 
    should be noted in the commit message
> 
    - Next one checks that the release branch doesn't contain any
> 
    unmerged commits (git log mater..release - where release is the name
> 
    of the release branch i.e. currently "release-4-0-patches")
> 
    - If it does contain unmerged commits, one checks that it is clear
> 
    whether the commits are supposed to be merged or not (and asks the
> 
    author if it is not clear)
> 
    - Next one merges the release branch into the "master" branch (git
> 
    checkout master; git merge release)
> 
    - If the release branch contained one or more workarounds which
> 
    shouldn't be included into the "master" branch one reverts those
> 
    with "git revert -n; git commit --amend"

> 
> 
    This way it is always clear which commits are bug-fixes and which
> 
    are workarounds and the git logs reflect this difference. Also all
> 
    the problems from above (listing unmerged commits, log between
> 
    versions, back-port) are solved.

> 
> 
    I don't think it is possible to switch the strategy at the moment.
> 
    Instead I propose to switch the strategy after the release of 4.5.

> 
> 
    What do you think? Should we change the policy in this way? I have
> 
    tried it on a small test repository and the strategy seems to work.

> 
> 
    Roland

> 
> 
    Minor detail:
> 
    In case one has accidentally committed a bug-fix  into the "master"
> 
    branch:
> 
    - One cherry-picks it into the release branch
> 
    - If the bug-fix commit in the master branch isn't committed yet:
> 
    one can rebase or reset it to remove the commit
> 
    - If it is already committed: one can either revert it or merge and
> 
    fix potential conflict in the merge

> 

> 
> 
    --
> 
    ORNL/UT Center for Molecular Biophysics cmb.ornl.gov
> 
    <http://cmb.ornl.gov>
> 
    865-241-1537, ORNL PO BOX 2008 MS6309

> 

> 

> 

> 
> 
--
> 
ORNL/UT Center for Molecular Biophysics cmb.ornl.gov <http://cmb.ornl.gov>
> 
865-241-1537, ORNL PO BOX 2008 MS6309

> 


> 

> 
> 
-- 
> 
David van der Spoel, Ph.D., Professor of Biology
> 
Dept. of Cell & Molec. Biol., Uppsala University.
> 
Box 596, 75124 Uppsala, Sweden. Phone:  +46184714205.

> spoel at xray.bmc.uu.se    http://folding.bmc.uu.se
> 
-- 
> 
gmx-developers mailing list

> gmx-developers at gromacs.org

> http://lists.gromacs.org/mailman/listinfo/gmx-developers
> 
Please don't post (un)subscribe requests to the list. Use the www interface or send it to gmx-developers-request at gromacs.org.

> 
> > 
> -- 
> ORNL/UT Center for Molecular Biophysics cmb.ornl.gov
> 865-241-1537, ORNL PO BOX 2008 MS6309


> -- 
> gmx-developers mailing list
> gmx-developers at gromacs.org
> http://lists.gromacs.org/mailman/listinfo/gmx-developers
> Please don't post (un)subscribe requests to the list. Use the 
> www interface or send it to gmx-developers-request at gromacs.org.



More information about the gromacs.org_gmx-developers mailing list