Search code examples
mercurialshelving

hg shelve created a commit, I don't understand


I'm a bit confused by hg shelve because the documentation is rather sparse. Somehow I got a commit in my log of the form:

changeset:   29:ad47ed1ca915
parent:      27:afca280f2884
user:        shelve@localhost
date:        Wed Jun 08 15:30:36 2016 -0600
summary:     changes to: ...

I'm confused as to where this came from. It was my understanding that shelve was just stuffing things on the local machine and that they wouldn't get in the history. Am I misunderstanding that?

Here's my hg command history:

   hg status
   hg shelve list
   hg shelve --list
   hg unshelve
   hg unshelve
   hg resolve
   hg resolve -all
   hg resolve --all
   hg resolve --all
   hg clone a/ b
   # By this point we have the commit (since 28 is after 27)
   hg update -r 28

EDIT:

Ok, so the problem seems to be a partial unshelve. However, because I pull the changesets else where now I'm stuck with the changesets and am not sure what to do :(

EDIT2: Here's an example of how to cause this problem:

~ $ cd tmp
~/tmp $ mkdir shelve shelve/a
~/tmp $ cd shelve/a
~/tmp/shelve/a $ hg init
~/tmp/shelve/a $ echo a > a
~/tmp/shelve/a $ hg add a
~/tmp/shelve/a $ hg commit -m "a as a"
~/tmp/shelve/a $ cd ..
~/tmp/shelve $ hg clone a b
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
~/tmp/shelve $ cd b
~/tmp/shelve/b $ echo aa > a
~/tmp/shelve/b $ hg commit -m "a as aa"
~/tmp/shelve/b $ cd ../a
~/tmp/shelve/a $ echo aaa > a
~/tmp/shelve/a $ hg shelve 
shelved as default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
~/tmp/shelve/a $ hg pull -u ../b
pulling from ../b
searching for changes
adding changesets
adding manifests 
adding file changes 
added 1 changesets with 1 changes to 1 files
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
~/tmp/shelve/a $ hg unshelve
unshelving change 'default'
rebasing shelved changes 
rebasing 2:6696488053d1 "changes to: a as a" (tip)
merging a 
3 files to edit
was merge successful (yn)? n
merging a failed!
unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
~/tmp/shelve/a $ hg heads
changeset:   2:6696488053d1
tag:         tip
parent:      0:845abf4a2513
user:        shelve@localhost
date:        Thu Jun 16 19:44:05 2016 -0600
summary:     changes to: a as a

changeset:   1:e1f75f582f85
user:        Alex Orange <[email protected]>
date:        Thu Jun 16 19:44:05 2016 -0600
summary:     a as aa

Solution

  • Here's my solution. Also shows a bit more of the problem. The problem comes if you do an hg pull with an unresolved unshelve.

    ~ $ cd tmp
    ~/tmp $ cd shelve/a
    ~/tmp/shelve/a $ hg resolve a
    merging a
    3 files to edit
    continue: hg unshelve --continue
    ~/tmp/shelve/a $ cd ../b
    ~/tmp/shelve/b $ echo Cause failure
    Cause failure
    ~/tmp/shelve/b $ hg pull ../a
    pulling from ../a
    searching for changes
    adding changesets
    adding manifests
    adding file changes
    added 1 changesets with 1 changes to 1 files (+1 heads)
    (run 'hg heads' to see heads, 'hg merge' to merge)
    ~/tmp/shelve/b $ hg heads
    changeset:   2:6696488053d1
    tag:         tip
    parent:      0:845abf4a2513
    user:        shelve@localhost
    date:        Thu Jun 16 19:44:05 2016 -0600
    summary:     changes to: a as a
    
    changeset:   1:e1f75f582f85
    user:        Alex Orange <[email protected]>
    date:        Thu Jun 16 19:44:05 2016 -0600
    summary:     a as aa
    
    ~/tmp/shelve/b $ cd ../a
    ~/tmp/shelve/a $ hg unshelve --continue
    rebasing 2:6696488053d1 "changes to: a as a" (tip)
    unshelve of 'default' complete
    ~/tmp/shelve/a $ hg commit -m "a as aaa"
    ~/tmp/shelve/a $ cd ../b
    ~/tmp/shelve/b $ hg pull
    pulling from /home/crazycasta/tmp/shelve/a
    searching for changes
    adding changesets
    adding manifests
    adding file changes
    added 1 changesets with 1 changes to 1 files
    (run 'hg update' to get a working copy)
    ~/tmp/shelve/b $ echo Problem
    Problem
    ~/tmp/shelve/b $ hg heads
    changeset:   3:a804c9f51cd6
    tag:         tip
    parent:      1:e1f75f582f85
    user:        Alex Orange <[email protected]>
    date:        Thu Jun 16 20:02:43 2016 -0600
    summary:     a as aaa
    
    changeset:   2:6696488053d1
    parent:      0:845abf4a2513
    user:        shelve@localhost
    date:        Thu Jun 16 19:44:05 2016 -0600
    summary:     changes to: a as a
    
    ~/tmp/shelve/b $ echo Solution
    Solution
    ~/tmp/shelve/b $ hg strip -r 2
    saved backup bundle to /home/crazycasta/tmp/shelve/b/.hg/strip-backup/6696488053d1-313495de-backup.hg
    ~/tmp/shelve/b $ hg heads
    changeset:   2:a804c9f51cd6
    tag:         tip
    user:        Alex Orange <[email protected]>
    date:        Thu Jun 16 20:02:43 2016 -0600
    summary:     a as aaa