[PATCH STABLE RFC] transplant: abort early if commit finds nothing to commit

Martin Geisler mg at aragost.com
Fri Oct 29 09:11:40 CDT 2010


Greg Ward <greg-hg at gerg.ca> writes:

> On Thu, Jul 1, 2010 at 1:33 PM, Greg Ward <greg-hg at gerg.ca> wrote:
>> # HG changeset patch
>> # User Greg Ward <greg-hg at gerg.ca>
>> # Date 1278001885 14400
>> # Branch stable
>> # Node ID e71642ce17bd129e5a75d558a7f029aab136ddd8
>> # Parent  b2468fb58b2bbbe5711119437449f253fda68318
>> transplant: abort early if commit finds nothing to commit
>> (partially addresses issue2135)
> [...]
>> --- a/hgext/transplant.py
>> +++ b/hgext/transplant.py
>> @@ -246,6 +246,17 @@
>>             m = match.exact(repo.root, '', files)
>>
>>         n = repo.commit(message, user, date, extra=extra, match=m)
>> +        if not n:
>> +            # Aborting here prevents an unclear crash later, in
>> +            # transplants.write().  This can happen if patch.patch()
>> +            # does nothing but claims success or if repo.status() fails
>> +            # to report changes done by patch.patch().  These both
>> +            # appear to be bugs in other parts of Mercurial, so perhaps
>> +            # Abort is the wrong exception to use.  But dying here, as
>> +            # soon as we can detect the problem, seems preferable to
>> +            # silently putting a bad tuple in the transplants object,
>> +            # causing it to crash in write().
>> +            raise util.Abort(_('nothing committed after transplant'))
>
> The more I think about this patch, the more I think it's right
> *except* it raise something other than Abort.  This is not the user's
> fault, and there is nothing the user can do about it.  It's a bug in
> Mercurial, and crashing here just makes sure the problem is detected
> and reported early and explicitly.

Do you still want us to apply this for Mercurial 1.7?

-- 
Martin Geisler

aragost Trifork
Professional Mercurial support
http://aragost.com/mercurial/


More information about the Mercurial-devel mailing list