Mutating history in Subversion and Bazaar
Jelmer Vernooij
jelmer at samba.org
Thu Aug 31 01:04:38 BST 2006
On Tue, 2006-08-29 at 15:28 +0200, David Allouche wrote:
> Changing history in Subversion in different from changing history in bzr
> because the trade-off is different.
[...]
> One the one hand, changing the history of a SVN repository may break
> existing checkouts, but the downfall is quite limited in time and space.
> This trade-off may be worthwhile in some circumstances, and even
> advanced users who are aware of the implications will sometimes make
> that choice.
>
> On the other hand, changing the history of a bzr repository compromises
> the integrity of the data in all existing repositories, in a /latent/
> way. That is much more serious since repositories are more persistent
> and precious than checkouts.
>
> I am not familiar with the storage layer of bzr, so I will make some
> (informed) assumptions in the following story.
>
> A SVN repository: A->B0->C
> A bzr-svn branch FOO: A->B0->D
> The SVN repository is altered: A->B1->C
> This SVN repository is imported into a new bzr-svn branch BAR.
> FOO is merged into BAR: A->B1->C->E B1->D->E
>
> That's where bad things start happening. D is defined in FOO storage as
> a delta from B0, but since BAR already has B1, it will define D by
> applying the B0->D delta on B1. At this point BAR is corrupt although it
> was created initially from a fresh import.
>
> This specific story is likely to show obvious breakage quickly, but I
> wanted to keep it simple for the sake of the example. I could come up
> with equally plausible but more complicated stories that would produce
> nasty time bombs.
>
> You only need to have pulled /at some point/ into your repository a
> branch that contains B0 to contaminate all the branches that use that
> repository, in ways that may not be immediately obvious. This problem is
> non-existent in Subversion because checkouts do not duplicate the
> repository.
So, we would have to make sure that Subversion revisions with the same
revnum and UUID are not necessarily considered to be the same revision
by Bazaar. How about adding the timestamp of the Subversion commit to
the revision id? This won't be the same if you uncommit and then
recommit.
Cheers,
Jelmer
--
Jelmer Vernooij <jelmer at samba.org> - http://samba.org/~jelmer/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20060831/c0a21c6b/attachment.pgp
More information about the bazaar
mailing list