Dear diary, on Thu, Apr 14, 2005 at 09:59:04PM CEST, I got a letter where Junio C Hamano <[EMAIL PROTECTED]> told me that... > >>>>> "LT" == Linus Torvalds <[EMAIL PROTECTED]> writes: > > LT> On Thu, 14 Apr 2005, Junio C Hamano wrote: > > >> Sorry, I have not seen what you have been doing since pasky 0.3, > >> and I have not even started to understand the mental model of > >> the world your tool is building. That said, my gut feeling is > >> that telling this script about git-pasky's world model might be > >> a mistake. I'd rather see you consider the script as mere "part > >> of the plumbing". > > LT> I agree. Having separate abstraction layers is good. I'm actually very > LT> happy with Pasky's cleaned-up-tree, exactly because unlike the first one,
(Just a side-note - functionally and even organizationally, the cleaned up tree does not differ significantly from the original one.) > LT> Pasky did a great job of maintaining the abstraction between "plumbing" > LT> and user interfaces. > > Agreed, not just with your agreeing with me, but with the > statement that Pasky did a good job (although I am ashamed to > say I have not caught up with the "userland" tools). Thanks. :-) > LT> The plumbing should take user interface needs into account, but the more > LT> conceptually separate it is ("does it makes sense on its own?") the better > LT> off we'll be. And "merge these two trees" (which works on a _tree_ level) > LT> or "find the common commit" (which works on a _commit_ level) look like > LT> plumbing to me - the kind of things I should have written, if I weren't > LT> such a lazy slob. > > I am planning drop the ancestor computation from the script, and > make it another command line parameter to the script. Dan > Barkalow's merge-base program should be used to compute it and > his result should drive the merge. That sounds more UNIXy to > me. Good move, I say! > I even may want to make the script take three trees not > commits, since the merge script does not need commits (it only > needs trees). As plumbing it would be cleaner interface to it > to do so. The wrapper SCM scripts can and should make sure it > is fed trees when the user gives it commits (or symbolic > representation of it like .git/tags/blah, or `cat .git/HEAD`). Agreed. > But one different thing to note here. > > You say "merge these two trees" above (I take it that you mean > "merge these two trees, taking account of this tree as their > common ancestor", so actually you are dealing with three trees), > and I am tending to agree with the notion of merging trees not > commits. However you might get richer context and more sensible > resulting merge if you say "merge these two commits". Since > commit chaining is part of the fundamental git object model you > may as well use it. Could you be more particular on the richer context etc? I think this script should stay strictly on the level of trees. When someone invents it, there could be a merge-commits script which does something very smart about two commits, traversing the graph between them etc, and doing a set of merge-tree invocations, possibly preparing the staging area for them etc. -- Petr "Pasky" Baudis Stuff: http://pasky.or.cz/ C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html