Michał Górny posted on Sun, 11 Oct 2015 15:02:43 +0200 as excerpted:

> Furthermore, *please* don't mix old version removals with other changes.
> This makes it unnecessarily hard to revert breaking changes. Let's
> suppose you accidentally removed a version that had reverse
> dependencies. If you did it in a separate commit, we could quickly
> revert that commit and save users from seeing the breakage, and we could
> do the removal properly afterwards. When changes are mixed like this,
> you have to do partial reverts and partial re-commits, and things get
> unnecessarily hard.

Yes, please.  Advanced users doing direct git syncs appreciate it too. 
=:^)

The git experts drill this and drill this, as handled correctly, it's a 
major advantage git has over more traditional VCS tools, but it's oh so 
easy to not "get it", for those used to working with those more 
traditional but less flexible tools.  One single logical change per 
commit.  If you want to bunch up, bunch up the commits and push them all 
at once, but the commits really do need to be one logical change per 
commit.  It makes bisect-debugging, reverting, and cherry-picking, all 
three, /so/ much simpler. =:^)

Adding new python compatibility is one logical change.  Removing old 
ebuilds is another.  In fact, ideally each removal would be a separate 
commit.

It is, however, worth repeating that in git, commits are entirely 
separate from pushes and are very (as in, extremely!) cheap, while 
pushes, particularly if properly repoman-checked, are obviously much more 
expensive.  It's thus very possible to do all the above in a single 
/push/ even with each logical change in a separate /commit/.  Simply make 
each logical change a commit of its own without a push, until finished 
with what you wanted to do.  Then do the push of all the commits at 
once.  In fact, with git it's entirely possible to do separate commits to 
several unrelated things (in gentoo context, probably packages), then 
push them all at once, without screwing things up, because again, commits 
and pushes are entirely separate things, and just because all the changes/
commits happen to arrive at the same time with a single push, doesn't 
necessarily have anything at all to do with whether they're related, 
because the logical unit is the individual commit, not the push that 
lands all those individual commits upstream.

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman


Reply via email to