-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Petr Baudis wrote: > Dear diary, on Fri, Oct 20, 2006 at 05:34:39PM CEST, I got a letter > where Aaron Bentley <aaron.bentley@xxxxxxxxxxx> said that... >> -----BEGIN PGP SIGNED MESSAGE----- >> Hash: SHA1 >> >> Jakub Narebski wrote: >>> Aaron Bentley wrote: >>>> In Bazaar bundles, the text of the diff is an integral part of the data. >>>> It is used to generate the text of all the files in the revision. >>> >>> I thought that the diff was combined diff of changes. >> It is. It's a description of how to produce revision X given revision >> Y, where Y is the last-merged mainline revision. > > Aha, so by default a bundle can carry just a _single_ revision? No, bundles contain 1 or more revisions. They contain all the ancestors of X that are not ancestors of Y. Only the diff from X to Y is shown, but the diffs for all other revisions are present in the MIME-encoded section. Consider these four revisions in a straight-line ancestry: a, b, c, d. 'a' is a common ancestor. b, c and d are the revisions that are missing from the target repository. A default bundle will contain metadata for d diff from a -> d in plaintext metadata for c diff from b -> c in MIME encoding metadata for b diff from a -> b in MIME encoding To install b, the diff for a->b is applied to a. To install c, the diff for b->c is applied to b. To install d, the diff for a -> d is applied to a. Doing a diff from a -> d instead of from c -> d introduces some redundancy, of course. But we do that because we want an overview diff. > That doesn't sound right either, because then it wouldn't make sense to > talk about "combined" or "simple" diffs. So I guess sending a bundle > really is taking n revisions at your side, bundling them to a single > diff and when the other side takes it, it will result in a single > revision? No, it copies the revisions verbatim, and we are careful to avoid data loss. > Hmm, but that doesn't sound right either, that's certainly no revolting > functionality and seems to be in contradiction with previous bundles > description. But if it doesn't squash the changes, I don't see how the > combined diff can be integral part of the data. Sorry, I don't get it. It's because there's no other diff in the bundle that produces 'd'. >> I've attached an example of what a combined patch-by-patch bundle looks >> like. > > But that's the one there's no UI to select? Or where is the combined > diff? That is the one that doesn't have UI to select it. I've attached a normal bundle for comparison. Aaron -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.2 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFFOVzR0F+nu1YWqI0RAkACAJ4z2SJZgelZLfhoFKhEZbmvRIXMjACfag+h 6j+5vvIeHt7xMZOvp6CUcPk= =33G4 -----END PGP SIGNATURE-----
# Bazaar revision bundle v0.8 # # message: # Added 'world' # committer: Aaron Bentley <abentley@xxxxxxxxxxxxxxxxxxxxx> # date: Fri 2006-10-20 11:30:21.903000116 -0400 === added directory // file-id:TREE_ROOT === added file world // file-id:world-20061020152929-12bknd8mm9mx48as-1 --- /dev/null +++ world @@ -0,0 +1,1 @@ +Hello, world # revision id: abentley@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # sha1: 6d553e72158aaa76c258d98c15cd24922d171cd9 # inventory sha1: 64af82c4d81d9d6ad4f33fc734d32c2a1eaa0df5 # parent ids: # abentley@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # base id: null: # properties: # branch-nick: bar # message: # Capitalized # committer: Aaron Bentley <abentley@xxxxxxxxxxxxxxxxxxxxx> # date: Fri 2006-10-20 11:29:51.953999996 -0400 === modified file world // encoding:base64 LS0tIHdvcmxkCisrKyB3b3JsZApAQCAtMSwxICsxLDEgQEAKLWhlbGxvCitIZWxsbwoK === modified directory // last-changed:abentley@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ... 152951-10cff5ff5a51e9a2 # revision id: abentley@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # sha1: f7b79934bc3b0a944e35168b5df6b106c5b29ebf # inventory sha1: 1400d56451752300cc31c9c94ff7ee2188e8ef8c # parent ids: # abentley@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # properties: # branch-nick: bar # message: # initial commit # committer: Aaron Bentley <abentley@xxxxxxxxxxxxxxxxxxxxx> # date: Fri 2006-10-20 11:29:35.536999941 -0400 === added directory // file-id:TREE_ROOT === added file world // file-id:world-20061020152929-12bknd8mm9mx48as-1 // enco ... ding:base64 LS0tIC9kZXYvbnVsbAorKysgd29ybGQKQEAgLTAsMCArMSwxIEBACitoZWxsbwoK # revision id: abentley@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # sha1: 0728f761b891b257f0a71e2e360799eec080cd21 # inventory sha1: e52e030ea40f6bf5da78f4e8eb8efcd072b0930a # properties: # branch-nick: bar