[Bug 5202] New: evolve --continue fails for merges

mercurial-bugs at selenic.com mercurial-bugs at selenic.com
Thu Apr 14 04:27:24 UTC 2016


https://bz.mercurial-scm.org/show_bug.cgi?id=5202

            Bug ID: 5202
           Summary: evolve --continue fails for merges
           Product: Mercurial
           Version: default branch
          Hardware: PC
                OS: Windows
            Status: UNCONFIRMED
          Severity: feature
          Priority: wish
         Component: evolution
          Assignee: bugzilla at selenic.com
          Reporter: timeless at gmail.com
                CC: mercurial-devel at selenic.com,
                    pierre-yves.david at ens-lyon.org

hg evolve gained some support for evolving merges, but if you get a conflict,
hg evolve --continue uses graft which doesn't support merges.

(py)[timeless at gcc2-power8 crew]$ hg evolve --any --all --traceback;
no support for evolving merge changesets with two obsolete parents yetno
support for evolving merge changesets with two obsolete parents yetcannot solve
instability of 2de6ae0ca86a, skipping
cannot solve instability of f95a0b91627e, skipping
skipping e9e0ec4acc4c: divergent rewriting. can't choose destination
move:[29465] merging with clowncopter
atop:[29391] changegroup: introduce makelookupmflinknode(dir)
merging hgext/blackbox.py
merging mercurial/dispatch.py
merging tests/run-tests.py
merging tests/test-blackbox.t
warning: conflicts while merging hgext/blackbox.py! (edit, then use 'hg resolve
--mark')
warning: conflicts while merging tests/run-tests.py! (edit, then use 'hg
resolve --mark')
evolve failed!
fix conflict and run "hg evolve --continue" or use "hg update -C" to abort
...

(py)[timeless at gcc2-power8 crew]$ vi tests/run-tests.py
(py)[timeless at gcc2-power8 crew]$ vi hgext/blackbox.py
(py)[timeless at gcc2-power8 crew]$ hg resolve -m
*** failed to import extension blackbox: expected an indented block
(blackbox.py, line 57)
(no more unresolved files)
(py)[timeless at gcc2-power8 crew]$ hg evolve --cont --debugger
*** failed to import extension blackbox: expected an indented block
(blackbox.py, line 57)
skipping ungraftable merge revision 29465

>> _dograft commands.py:3947
# check for merges                                                  
for rev in repo.revs('%ld and merge()', revs):                      
    ui.warn(_('skipping ungraftable merge revision %s\n') % rev)    
    skipped.add(rev)                                                
revs = [r for r in revs if r not in skipped]                        
if not revs:                                                        
    return -1                                                       


>> evolve evolve.py:1790
# Continuation handling                                                         
if contopt:                                                                     
    if anyopt:                                                                  
        raise error.Abort('cannot specify both "--any" and "--continue"')       
    if allopt:                                                                  
        raise error.Abort('cannot specify both "--all" and "--continue"')       
    state = _evolvestateread(repo)                                              
    if state is None:                                                           
        raise error.Abort('no evolve to continue')                              
    orig = repo[state['current']]                                               
    # XXX This is a terrible terrible hack, please get rid of it.               
    repo.opener.write('graftstate', orig.hex() + '\n')                          
    try:                                                                        
        graftcmd = commands.table['graft'][0]                                   
        ret = graftcmd(ui, repo, old_obsolete=True, **{'continue': True})       
        _evolvestatedelete(repo)                                                
        return ret                                                              
    finally:                                                                    
        util.unlinkpath(repo.join('graftstate'), ignoremissing=True)            


I don't think the unlink graftstate in finally is correct either.
But given that there's no `hg evolve --abort`, I guess it'll have to stay until
that's added...

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Mercurial-devel mailing list