On 10/18/06, Petr Baudis <pasky@xxxxxxx> wrote:
Dear diary, on Wed, Oct 18, 2006 at 11:28:32AM CEST, I got a letter where Erik B?gfors <zindar@xxxxxxxxx> said that... > On 10/18/06, Petr Baudis <pasky@xxxxxxx> wrote: > >Dear diary, on Wed, Oct 18, 2006 at 02:30:14AM CEST, I got a letter > >where Aaron Bentley <aaron.bentley@xxxxxxxxxxx> said that... > >> Petr Baudis wrote: > >> > Another aspect of this is that Git (Linus ;) is very focused on getting > >> > the history right, nice and clean (though it does not _mandate_ it and > >> > you can just wildly do one commit after another; it just provides tools > >> > to easily do it). > >> > >> Yes, rebasing is very uncommon in the bzr community. We would rather > >> evaluate the complete change than walk through its history. (Bundles > >> only show the changes you made, not the changes you merged from the > >> mainline.) > >> > >> In an earlier form, bundles contained a patch for every revision, and > >> people *hated* reading them. So there's definitely a cultural > >> difference there. > > > >BTW, I think what describes the Git's (kernel's) stance very nicely is > >what I call the Al Viro's "homework problem": > > > > http://lkml.org/lkml/2005/4/7/176 > > > >If I understand you right, the bzr approach is what's described as "the > >dumbest kind" there? (No offense meant!) > > Yes and no, The bundle includes both the full final thing, and each > step along the way. Each step along the way is something you'll get > when you merge it. > > Once merged, it will be "next one" in the description above. It would > typically look something like this in "bzr log"(shortened) In this > example, doing C requires doing A and B as well... > > committer: foobar@xxxxxxxxxx > message: merged in C > ------- > committer: bar@xxxxxxx > message: opps, fix bug in A > ------- > committer: bar@xxxxxxx > message: implement B > ------- > committer: bar@xxxxxxx > message: implement A > > So, you'll get full history, including errors made :) You can also > see who approved it to this branch (foobar) and who did the actual > work (bar) I see, that's what I've been missing, thanks. So it's the middle path (as any other commonly used VCS for that matter, expect maybe darcs?; patch queues and rebasing count but it's a hack, not something properly supported by the design of Git, since at this point the development cannot be fully distributed). I also assume that given this is the case, the big diff does really not serve any purpose besides human review? But somewhere else in the thread it's been said that bundles can also contain merges. Does that means that bundles can look like: 1 / \ 2 4 | | _ 3 5 | \ / | a bundle 6 | ~ In that case, against what the big diff from 6 is done? 2? 4? Or even 1?
When you run the "bundle" command, you can tell it what you want the bundle to be created against. So, If I just commited 5, I can run "bzr bundle -r-1" to get the bundle against 4, or I can do "bzr bundle path/to/other/branch" to get a bundle that relates to it. To merge a bundle into a branch, the parrent of the first revision in the bundle, has to exist in the branch is't being merged into. (well, unless you use patch, but that's outside of bzr, and bzr wouldn't know about each revision in them) This command will find a common root and create a bundle that corresponds to it. The "big diff" as you call it, would be the changes between the point where the branch was created, and the last commit. In the case of just committing 5, and you want to create a bundle that can be merged back at point 6, the "big diff" would be against 1 since that's the branch point. /Erik -- google talk/jabber. zindar@xxxxxxxxx SIP-phones: sip:erik_bagfors@xxxxxxxxxxxxxxxx sip:17476714687@xxxxxxxxxxxxxxxxxxxx - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html