folding commits with renames generates conflicts

Cristian Vasile Mocanu cvmocanu at gmail.com
Fri May 16 11:12:40 UTC 2014


Hello,

I created a ticket in bugzilla ( 
http://bz.selenic.com/show_bug.cgi?id=4251 ), since for me a fold should 
never result in a conflict by its very definition (folding 2 commits 
should produce 1 commit that makes the same changes as the 2 folded 
commits).

Kind regards,
Cristian

On 16-05-2014 11:43, Cristian Vasile Mocanu wrote:
> Hi Fritz,
>
> Thanks for trying to help.
>
> Here is a stripped-down version of how to reproduce this. Sorry, I 
> should have prepare this for the initial posting.
>
> $ hg init
>
> $ mkdir initial-dir ; echo foo > initial-dir/initial-file ; hg add 
> initial-dir/initial-file ; hg commit -m "initial commit"
>
> $ mkdir another-dir ; hg mv initial-dir/initial-file another-dir/ ; 
> echo changed > another-dir/initial-file ; hg commit -m "moved and 
> changed"
>
> $ hg mv another-dir/initial-file another-dir/renamed-file ; hg commit 
> -m "renamed"
>
> $ hg histedit --rev "draft()"
> > pick 6ed6458efaa6 0 initial commit
> > fold 652030fdfb10 1 moved and changed
> > pick 13e1a480f2a7 2 renamed
> 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
> adding another-dir\initial-file
> removing initial-dir\initial-file
> 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
> 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> local changed another-dir/initial-file which remote deleted
> use (c)hanged version or (d)elete?
>
> I think the conflict is when it tries to apply the 3rd commit.
>
> The expected outcome it so have the file in the same state as if I had 
> 3 commits (before the fold), namely:
> - the content of the file should be "changed"
> - the name of the file should be "another-dir/renamed-file"
>
> And of course, I don't expect conflicts.
>
> Thanks a lot,
> Cristian
>
> On 16-05-2014 10:52, Kastner Masilko, Friedrich wrote:
>>> From: mercurial-bounces at selenic.com 
>>> [mailto:mercurial-bounces at selenic.com] On Behalf Of Cristian Vasile 
>>> Mocanu
>>>
>>> The problem is that quite often, when I fold a commit into the commit
>>> above, and there was a file rename involved, I get a conflict, and
>>> Mercurial asks: "use (c)hanged version or (d)elete?".
>>> It looks like Mercurial can't apply changes to file which were renamed,
>>> which is strange since Mercurial has better metadata than GIT (GIT has
>>> to guess renames whereas Mercurial has the rename metadata so it
>>> doesn't have to guess).
>>>
>>> I have 2 questions:
>>> 1) is this a Mercurial bug? If it is, is it reported?
>>> 2) is there a workaround?
>> Perhaps it is a shortcoming in the histedit extension, but this is 
>> hard to say without an appropriate use-case and a reproducible example.
>>
>> Could you perhaps provide a stripped-down script to better 
>> demonstrate what happens, and a description to show what you think 
>> that should happen?
>>
>> regards,
>> Fritz
>>
>>
>>
>> Development Software Systems
>> Festo Gesellschaft m.b.H.
>> Linzer Strasse 227
>> Austria - 1140 Wien
>>
>> Firmenbuch Wien
>> FN 38435y
>> UID: ATU14650108
>>
>> Tel: +43(1)91075-198
>> Fax:
>> www.festo.at
>>
>> Der Inhalt dieser E-Mail und moeglicher Anhaenge sind ausschliesslich 
>> fuer den bezeichneten Adressaten bestimmt.
>> Jede Form der Kenntnisnahme, Veroeffentlichung, Vervielfaeltigung 
>> oder Weitergabe des Inhalts dieser E-Mail und
>> moeglicher Anhaenge durch unberechtigte Dritte ist unzulaessig. Wir 
>> bitten Sie, sich mit dem Absender der E-Mail in
>> Verbindung zu setzen, falls Sie nicht der Adressat dieser E-Mail sind 
>> sowie das Material von Ihrem Computer zu loeschen.
>>
>> This e-mail and any attachments are confidential and intended solely 
>> for the addressee. The perusal, publication, copying or
>> dissemination of the contents of this e-mail by unauthorised third 
>> parties is prohibited. If you are not the intended recipient of this
>> e-mail, please delete it and immediately notify the sender.
>>
>




More information about the Mercurial mailing list