[PATCH 2 of 2] tag: fix uncommitted merge check and error message (issue2542)

Kevin Bullock kbullock+mercurial at ringworld.org
Tue Dec 14 10:21:53 CST 2010


On Dec 14, 2010, at 2:46 AM, Adrian Buehlmann wrote:

> tl;dr summary: IMHO, not really progress compared to my version
> 
> On 2010-12-14 04:42, Kevin Bullock wrote:
>> # HG changeset patch
>> # User Adrian Buehlmann <adrian at cadifra.com>
> 
> Please don't send patches on my behalf. Just put your name here, it's
> all yours now. I don't want to be blamed for your changes.

Sorry. I wanted to give credit where due, but I'm happy to put my name to it.

>> # Date 1291705374 -3600
>> # Branch stable
>> # Node ID 08021c74f46ed05b9739b3cea8ecd35e10c17645
>> # Parent  55ee5a2cc1f5f62cc3284d900e21d40d23d5a3ff
>> tag: fix uncommitted merge check and error message (issue2542)
>> 
>> This patch corrects the check for tagging on an uncommitted merge. We
>> should never commit a new tag changeset on an uncommitted merge, whether
>> or not --rev is specified. It also changes the error message from:
>> 
>>  abort: cannot partially commit a merge (do not specify files or patterns)
>> 
>> to the much more accurate (and terse):
>> 
>>  abort: uncommitted merge
>> 
>> Local tags are ok.
>> 
>> diff --git a/mercurial/commands.py b/mercurial/commands.py
>> --- a/mercurial/commands.py
>> +++ b/mercurial/commands.py
>> @@ -3712,9 +3712,8 @@
>>             if n in repo.tags():
>>                 raise util.Abort(_('tag \'%s\' already exists '
>>                                    '(use -f to force)') % n)
>> -    if not rev_ and repo.dirstate.parents()[1] != nullid:
>> -        raise util.Abort(_('uncommitted merge - please provide a '
>> -                           'specific revision'))
>> +    if not opts.get('local') and repo.dirstate.parents()[1] != nullid:
>> +        raise util.Abort(_('uncommitted merge'))
>>     r = repo[rev_].node()
>> 
>>     if not message:
>> diff --git a/tests/test-tag.t b/tests/test-tag.t
>> --- a/tests/test-tag.t
>> +++ b/tests/test-tag.t
>> @@ -208,3 +208,42 @@
>>   ? editor
>>   $ hg tag --local baz
>>   $ hg revert --no-backup .hgtags
>> +
>> +tagging with a uncommitted merge
>> +
>> +  $ hg heads -q
>> +  11:7d32ded1f932
>> +  8:2bba354f91af
>> +  5:b4bb47aaff09
>> +  $ hg up 8
>> +  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
>> +  $ hg st -A
>> +  ? .hgtags.orig
>> +  ? editor
>> +  C .hgtags
>> +  C a
>> +  $ hg merge --tool internal:local 5
>> +  0 files updated, 1 files merged, 0 files removed, 0 files unresolved
>> +  (branch merge, don't forget to commit)
> 
> The careful test reader notes here that this merge is merging .hgtags.

Yeah, as Matt suggested, there are multiple heads in the test, but they are all created by tagging. This does make the test a bit unclear.

>> +  $ hg diff
>> +
>> +  $ hg tag t1
>> +  abort: uncommitted merge
>> +  [255]
>> +  $ hg tag --rev 1 t2
>> +  abort: uncommitted merge
>> +  [255]
>> +  $ hg tag --rev 1 --local t3
>> +  $ hg tags -v
>> +  tip                               11:7d32ded1f932
>> +  baz                               11:7d32ded1f932 local
>> +  custom-tag                        10:e51b312ec2b1
>> +  tag-and-branch-same-name           9:1ba9e63eb5b8
>> +  newline                            7:a0eea09de1ee
>> +  localnewline                       6:c2899151f4e7 local
>> +  gawk                               2:336fccc858a4
>> +  t3                                 1:d4f0d2909abc local
>> +  bleah1                             1:d4f0d2909abc local
>> +  foobar                             0:acb14030fe0a
>> +  bleah0                             0:acb14030fe0a
>> +  bleah                              0:acb14030fe0a
> 
> Not really easier to spot the new t3 line in this pile, compared to my
> original version of this patch:
> 
> +  $ hg tag --rev 1 --local t3
> +  $ hg tags -v
> +  tip                                2:9adf12931dba
> +  t3                                 1:3ec40a953f20 local

Okay, V2 coming.

pacem in terris / mir / shanti / salaam / heiwa
Kevin R. Bullock



More information about the Mercurial-devel mailing list