[PATCH 0 of 3] Transactional support for rebase/strip to avoid permanent repository corruptions

Benoit Boissinot bboissin at gmail.com
Wed Apr 15 17:46:38 CDT 2009


On Wed, Apr 15, 2009 at 10:34:29PM +0200, Henrik Stuart wrote:

[Thanks for the detailed explaination, I'll have a closer look at the patches later]

> Furthermore, since localrepository.transaction defines an "after" function
> that renames journal* to undo*, and if the second call to transaction
> returns the first transaction, then the "after" function will be called
> again, but now there is suddenly no journal file(s) to rename anymore.
> This is solved by, in addition to querying whether there is a weakref, to
> see whether the transaction is running - if it is not, a new transaction
> is returned.
> 
> The alternative would have been to delete the transaction inside repair.strip,
> but this would mean that we would never allow strip to be called nested
> inside another transaction, something that we were not comfortable with
> just decreeing (addchangegroup has this limit currently, but is it
> intentional?).

I looked at the nesting transaction stuff the other day, and I think the
only use of the nesting of in mq.
Should we try to avoid it?

regards,

Benoit
-- 
:wq


More information about the Mercurial-devel mailing list