[prev in list] [next in list] [prev in thread] [next in thread] 

List:       boost
Subject:    Re: [boost] [git] Pushing commit(s) after pulling
From:       Vladimir Prus <ghost () cs ! msu ! su>
Date:       2014-08-19 14:53:55
Message-ID: lsvoe3$q4b$1 () ger ! gmane ! org
[Download RAW message or body]


Gavin,

On 08/19/2014 11:58 AM, Gavin Lambert wrote:
> On 19/08/2014 16:18, Edward Diener wrote:
> > > Lost in what way?
> > 
> > The message in the log for my push says:
> > 
> > 'Merge branch 'develop' of https://github.com/boostorg/build into develop'
> > 
> > rather than the actual commit message for my local repository change.
> 
> That's actually correct though (albeit confusingly worded).  Have another look at \
> this: 
> > > A - B - D - F
> > > \     /
> > > C - E
> 
> Your current head will be F, so that's the commit message you're seeing, which is \
> just a merge of D & E.  The commit messages for C, D, and E themselves are still \
> intact and you should see them if you look at the log.  (When you push F, C & E \
> come along for the ride automatically.) 
> > I think I was supposed to do the "git pull --rebase" so that my change
> > is applied on top of the pull's latest.
> 
> Possibly.  As I said this tends to be one of those bikeshed arguments, with some \
> people arguing that it should always be used and others arguing that it should \
> never be used.  (It mostly revolves around the commit messages being more readable \
> with rebase, but the actual development timeline being more visible without.)
> 
> Coming from an SVN background I think a rebased pull is the easiest option to get \
> your head around, since it's similar to how SVN itself works (it does an invisible \
> merge between your uncommitted changes and the incoming changes whenever you do an \
> Update); the difference is just while in SVN you have a single clump of uncommitted \
> changes when this invisible merge happens, in Git you can have many separate \
> committed clumps of changes. 
> The other related option is "squash"; it's similar to a rebase except that all your \
> changes are folded into a single commit, ie. instead of this graph:
> 
> A - B - D - C' - E'
> 
> you get this one:
> 
> A - B - D - F
> 
> where F contains both C & E in a single commit.  This is probably the variant \
> that's the most like an SVN Update&Commit cycle, and again some people prefer this \
> (particularly if their local commits aren't logically divided, maybe just multiple \
> parking commits that don't all compile or pass tests) while others (perhaps more \
> organised with their commits) prefer to retain each individual commit as a logical \
> unit.

Thanks for writing this down in detail! It's indeed a matter of preference, although:

- For Boost.Build specifically, I prefer to avoid merge commits as much as possible.
- In most cases of a single commit, or a few unrelated commits, using "git pull" and
   creating merge commits results in rather noisy and unclear history. I'd imagine
   maintainers of other components might prefer to avoid that - although it's up to \
them,  of course.

Thanks,
Volodya



_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic