On 2012/01/15 08:05:35, Graham Percival wrote:

http://codereview.appspot.com/5539062/diff/1/Documentation/contributor/source-code.itexi
File Documentation/contributor/source-code.itexi (right):


http://codereview.appspot.com/5539062/diff/1/Documentation/contributor/source-code.itexi#newcode450
Documentation/contributor/source-code.itexi:450: git rebase
origin/staging
Problem: approximately once every 2 weeks, origin/staging is broken.
As a
result, we delete the existing origin/staging branch, test a subset of
patches,
push them, etc etc.  You've seen the mess that happens.  With this
recipe, the
broken-staging will be in the developer's personal dev/cg branch.


I think you misunderstand what git rebase does.  git rebase
origin/staging does *not* bring origin/staging into dev/cg; it creates
commits that are necessary to get dev/cg from origin/staging.  If
origin/staging is bad, and then deleted, and then built again as a new
origin/staging, the developer can get the appropriate set of commits by
just reissuing git rebase origin/staging.

It works the way you want it to work.  dev/cg *always* holds the
pristine copy of the developer's work.  git rebase origin/staging
doesn't change dev/cg one bit.  At any time I can do git rebase master
and I'll get the set of commits necessary to develop dev/cg from master.

The only time this fails is if two people have been working on the same
lines of the same file, in which case there will be a merge conflict,
and it will need to be resolved manually.  But there is nothing that can
be done about this.  We have to resolve the merge conflict when we do
the rebase -- but it's not an artifact of git, it's a real issue.


I still wish that there was some way of using staging for this purpose
-- then
the developer would always know that dev/cg is his (unspoiled) work,
origin/staging is where he wants to put it, and staging is a temporary
storage
location.

Why do we need a temporary storage location? The only difference between
staging and origin/staging is a timing issue -- staging may be behind
origin/staging because changes have happened when I did git fetch.  But
I can't push to origin/staging until I rebase to origin/staging.

It works just the way you want it to out of the box.

When I went and gathered James's commits to push to staging, I didn't
make *any* changes to his work.  I just created a branch, applied his
patch, rebased to origin/staging, and pushed.  And it went seamlessly.




http://codereview.appspot.com/5539062/

_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to