Don't interpret silence as disagreement - I'm dead tired and in sufficient
agreement in case you want to get some sleep...
-Ben
On Feb 4, 2013, at 9:35 PM, "Derek Gaston"
<fried...@gmail.com<mailto:fried...@gmail.com>> wrote:
On Mon, Feb 4, 2013 at 10:15 PM, Derek Gaston
<fried...@gmail.com<mailto:fried...@gmail.com>> wrote:
And the alternative rebased log looks like "A, then D, then D+(B-A),
then D+(C-A)", right? And that's nice because it's more like what
we'd get from passing patches around, but in fact that intermediate
"D+(B-A)" state is one that never really existed and was never
actually tested.
A little more of a direct reply (just to be even more clear). What the rebased
log looks like (in your scenario): A, D, B, C (with the way you named them).
Just before the rebase you had this scenario:
upstream/master: A, D
roys_feature: A, B, C
When you do a rebase (git pull --rebase upstream master) you end up with:
upstream/master: A, D
roys_feature: A, D, B1, C1
ie you took your _new_ patches and "stacked" them on top of what was currently
sitting in master. If there were any collisions with D you fixed them up
during the rebase... so that's why B and C (possibly) changed to B1 and C1.
They might be slightly different from the B and C you started with. This is
normal and familiar to us though. The same thing happens when you do "svn up"
and fix collisions. Your local work has been modified somewhat because of what
someone did in trunk.
Now you quickly rerun your testing for B1 and C1 (just like with SVN) and
verify that everything is still good and then you push:
git push upstream HEAD:master
Meaning:
upstream/master: A, D, B1, C1
roys_feature: A, D, B1, C1
No merge commits get created. All collisions are dealt with _per patch_ which
means that there are no extraneous bits of commits mashed together in merge
commits... each patch is whole and complete and applies cleanly.
This means that if I pull and start working with master I get:
dereks_feature: A, D, B1, C1
And if I want to undo C1 for some reason I can simply do:
git reset HEAD~1 --hard
To get:
dereks_feature: A, D, B1
I don't have to worry about what happens when I undo a merge commit (does the
code even compile in that case? Are things just somewhat broken?). I can move
_linearly_ back through the history in master with impunity. No messy merge
commits to step around or try to understand.
Derek
------------------------------------------------------------------------------
Free Next-Gen Firewall Hardware Offer
Buy your Sophos next-gen firewall before the end March 2013
and get the hardware for free! Learn more.
http://p.sf.net/sfu/sophos-d2d-feb
_______________________________________________
Libmesh-devel mailing list
Libmesh-devel@lists.sourceforge.net<mailto:Libmesh-devel@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/libmesh-devel
------------------------------------------------------------------------------
Free Next-Gen Firewall Hardware Offer
Buy your Sophos next-gen firewall before the end March 2013
and get the hardware for free! Learn more.
http://p.sf.net/sfu/sophos-d2d-feb
_______________________________________________
Libmesh-devel mailing list
Libmesh-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-devel