1

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 <crazycasta@gmail.com>
date:        Thu Jun 16 19:44:05 2016 -0600
summary:     a as aa
StayOnTarget
  • 11,743
  • 10
  • 52
  • 81
CrazyCasta
  • 26,917
  • 4
  • 45
  • 72
  • 1
    It is *very* difficult to troubleshoot if we have no idea what commands you ran. – Kevin Jun 10 '16 at 04:23
  • I sadly don't have the slightest clue what commands I ran to get this. I can't reproduce it with what I've tried, I'm hoping someone can explain how this could happen, given that it cause a bit of merge pain by adding another random head. – CrazyCasta Jun 10 '16 at 04:45
  • Is it possible you went and found the bundle files that shelve uses to store the shelved changes, and then ran `hg unbundle` on them? – Kevin Jun 10 '16 at 04:49
  • 1
    I don't understand what that means. What would that command look like? – CrazyCasta Jun 10 '16 at 04:51
  • 1
    `hg unbundle .hg/something...`, or perhaps `hg pull .hg/something...` – Kevin Jun 10 '16 at 04:52
  • Ok, just realized I do have history after all. – CrazyCasta Jun 10 '16 at 04:55
  • iirc all the `hg resolve`s had something to do with the `hg unshelve`. – CrazyCasta Jun 10 '16 at 04:59
  • @Kevin Apparently it was caused by a partial unshelve. Now I just have to figure out how to fix it. – CrazyCasta Jun 11 '16 at 05:57

1 Answers1

0

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 <crazycasta@gmail.com>
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 <crazycasta@gmail.com>
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 <crazycasta@gmail.com>
date:        Thu Jun 16 20:02:43 2016 -0600
summary:     a as aaa
CrazyCasta
  • 26,917
  • 4
  • 45
  • 72