[Python-Dev] Workflow proposal (original) (raw)

John Arbash Meinel john at arbash-meinel.com
Wed Mar 23 13:38:46 CET 2011


-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1

On 3/23/2011 1:23 PM, Dirkjan Ochtman wrote:

On Wed, Mar 23, 2011 at 12:39, John Arbash Meinel <john at arbash-meinel.com> wrote:

Just as an aside, and I might be wrong. But reading through what strip does, (and from my knowledge of the disk layout) it can't actually be atomic. So if you kill it at the wrong time, it will have corrupted your repository.

At least, that is from what I can tell. Which is that it has to rewrite each file history to omit the revisions you are stripping, and then rewrite the revision history to do the same. It would be possible to be 'stable' if you wrote a write-ahead-log and did all the work on the side, and then any client that tries to read or write to the repository finishes up the steps. But the individual file histories refer to the global revision history (by index), so you don't have a 'top-down' view that makes it all atomic by changing the top level object to point to the new lower level objects. The reason that shouldn't happen is the ordering. If we strip the changelog first (what you call the global revision history), other clients won't be able to "find" the any file-level revisions only referenced by the revision just stripped, so it should be atomic. Cheers, Dirkjan

http://mercurial.selenic.com/wiki/Strip

Thats only true if you are stripping only from the top. According to the strip page, you also might re-order the numbers.

Also, even with stripping the changelog first, it still leaves you with data in your repo that is going to suddenly think it is associated with the next commit you do. (So I make a change to 'foo.txt' commit it, then strip, the next commit I only change 'bar.txt'. If the strip was canceled 'hg log foo.txt' would include the latest revision as modifying foo.txt)

John =:-> -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (Cygwin) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk2J6dYACgkQJdeBCYSNAAMQMQCfXvD4dGOVV8LB9LmtMNqXeHys 5xkAoJBWAXXVbZcCKC1GXDPjUMSNbVtn =k1FG -----END PGP SIGNATURE-----



More information about the Python-Dev mailing list