shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
$ echo "[extensions]" >> $HGRCPATH
|
2013-08-29 20:22:15 +04:00
|
|
|
$ echo "mq=" >> $HGRCPATH
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
$ echo "shelve=" >> $HGRCPATH
|
|
|
|
$ echo "[defaults]" >> $HGRCPATH
|
|
|
|
$ echo "diff = --nodates --git" >> $HGRCPATH
|
2013-08-29 20:22:15 +04:00
|
|
|
$ echo "qnew = --date '0 0'" >> $HGRCPATH
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
|
|
|
|
$ hg init repo
|
|
|
|
$ cd repo
|
|
|
|
$ mkdir a b
|
|
|
|
$ echo a > a/a
|
|
|
|
$ echo b > b/b
|
|
|
|
$ echo c > c
|
|
|
|
$ echo d > d
|
|
|
|
$ echo x > x
|
|
|
|
$ hg addremove -q
|
|
|
|
|
|
|
|
shelving in an empty repo should be possible
|
2014-06-20 11:15:38 +04:00
|
|
|
(this tests also that editor is not invoked, if '--edit' is not
|
|
|
|
specified)
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
|
2014-06-20 11:15:38 +04:00
|
|
|
$ HGEDITOR=cat hg shelve
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
shelved as default
|
|
|
|
0 files updated, 0 files merged, 5 files removed, 0 files unresolved
|
|
|
|
|
|
|
|
$ hg unshelve
|
|
|
|
unshelving change 'default'
|
|
|
|
|
|
|
|
$ hg commit -q -m 'initial commit'
|
|
|
|
|
|
|
|
$ hg shelve
|
|
|
|
nothing changed
|
|
|
|
[1]
|
|
|
|
|
2013-08-29 20:22:15 +04:00
|
|
|
create an mq patch - shelving should work fine with a patch applied
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
|
|
|
|
$ echo n > n
|
|
|
|
$ hg add n
|
|
|
|
$ hg commit n -m second
|
2013-08-29 20:22:15 +04:00
|
|
|
$ hg qnew second.patch
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
|
|
|
|
shelve a change that we will delete later
|
|
|
|
|
|
|
|
$ echo a >> a/a
|
|
|
|
$ hg shelve
|
|
|
|
shelved as default
|
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
|
|
|
|
set up some more complex changes to shelve
|
|
|
|
|
|
|
|
$ echo a >> a/a
|
|
|
|
$ hg mv b b.rename
|
|
|
|
moving b/b to b.rename/b (glob)
|
|
|
|
$ hg cp c c.copy
|
|
|
|
$ hg status -C
|
|
|
|
M a/a
|
|
|
|
A b.rename/b
|
|
|
|
b/b
|
|
|
|
A c.copy
|
|
|
|
c
|
|
|
|
R b/b
|
|
|
|
|
|
|
|
prevent some foot-shooting
|
|
|
|
|
|
|
|
$ hg shelve -n foo/bar
|
|
|
|
abort: shelved change names may not contain slashes
|
|
|
|
[255]
|
|
|
|
$ hg shelve -n .baz
|
|
|
|
abort: shelved change names may not start with '.'
|
|
|
|
[255]
|
|
|
|
|
|
|
|
the common case - no options or filenames
|
|
|
|
|
|
|
|
$ hg shelve
|
|
|
|
shelved as default-01
|
|
|
|
2 files updated, 0 files merged, 2 files removed, 0 files unresolved
|
|
|
|
$ hg status -C
|
|
|
|
|
|
|
|
ensure that our shelved changes exist
|
|
|
|
|
|
|
|
$ hg shelve -l
|
2014-02-10 03:53:27 +04:00
|
|
|
default-01 (*) changes to '[mq]: second.patch' (glob)
|
|
|
|
default (*) changes to '[mq]: second.patch' (glob)
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
|
|
|
|
$ hg shelve -l -p default
|
2014-02-10 03:53:27 +04:00
|
|
|
default (*) changes to '[mq]: second.patch' (glob)
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
|
|
|
|
diff --git a/a/a b/a/a
|
|
|
|
--- a/a/a
|
|
|
|
+++ b/a/a
|
|
|
|
@@ -1,1 +1,2 @@
|
|
|
|
a
|
|
|
|
+a
|
|
|
|
|
2014-06-05 17:20:32 +04:00
|
|
|
$ hg shelve --list --addremove
|
|
|
|
abort: options '--list' and '--addremove' may not be used together
|
|
|
|
[255]
|
|
|
|
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
delete our older shelved change
|
|
|
|
|
|
|
|
$ hg shelve -d default
|
2013-08-29 20:22:15 +04:00
|
|
|
$ hg qfinish -a -q
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
|
2013-10-24 00:12:48 +04:00
|
|
|
local edits should not prevent a shelved change from applying
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
|
2013-10-24 00:12:48 +04:00
|
|
|
$ printf "z\na\n" > a/a
|
|
|
|
$ hg unshelve --keep
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
unshelving change 'default-01'
|
2014-02-10 03:54:27 +04:00
|
|
|
temporarily committing pending changes (restore with 'hg unshelve --abort')
|
|
|
|
rebasing shelved changes
|
2013-10-24 00:12:48 +04:00
|
|
|
merging a/a
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
|
2013-10-24 00:12:48 +04:00
|
|
|
$ hg revert --all -q
|
|
|
|
$ rm a/a.orig b.rename/b c.copy
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
|
|
|
|
apply it and make sure our state is as expected
|
|
|
|
|
|
|
|
$ hg unshelve
|
|
|
|
unshelving change 'default-01'
|
|
|
|
$ hg status -C
|
|
|
|
M a/a
|
|
|
|
A b.rename/b
|
|
|
|
b/b
|
|
|
|
A c.copy
|
|
|
|
c
|
|
|
|
R b/b
|
|
|
|
$ hg shelve -l
|
|
|
|
|
|
|
|
$ hg unshelve
|
|
|
|
abort: no shelved changes to apply!
|
|
|
|
[255]
|
|
|
|
$ hg unshelve foo
|
|
|
|
abort: shelved change 'foo' not found
|
|
|
|
[255]
|
|
|
|
|
|
|
|
named shelves, specific filenames, and "commit messages" should all work
|
2014-06-20 11:15:38 +04:00
|
|
|
(this tests also that editor is invoked, if '--edit' is specified)
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
|
|
|
|
$ hg status -C
|
|
|
|
M a/a
|
|
|
|
A b.rename/b
|
|
|
|
b/b
|
|
|
|
A c.copy
|
|
|
|
c
|
|
|
|
R b/b
|
2014-06-20 11:15:38 +04:00
|
|
|
$ HGEDITOR=cat hg shelve -q -n wibble -m wat -e a
|
|
|
|
wat
|
|
|
|
|
|
|
|
|
|
|
|
HG: Enter commit message. Lines beginning with 'HG:' are removed.
|
|
|
|
HG: Leave message empty to abort commit.
|
|
|
|
HG: --
|
|
|
|
HG: user: shelve@localhost
|
|
|
|
HG: branch 'default'
|
|
|
|
HG: changed a/a
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
|
|
|
|
expect "a" to no longer be present, but status otherwise unchanged
|
|
|
|
|
|
|
|
$ hg status -C
|
|
|
|
A b.rename/b
|
|
|
|
b/b
|
|
|
|
A c.copy
|
|
|
|
c
|
|
|
|
R b/b
|
|
|
|
$ hg shelve -l --stat
|
2013-10-01 14:20:31 +04:00
|
|
|
wibble (*) wat (glob)
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
a/a | 1 +
|
|
|
|
1 files changed, 1 insertions(+), 0 deletions(-)
|
|
|
|
|
|
|
|
and now "a/a" should reappear
|
|
|
|
|
2013-10-22 07:41:05 +04:00
|
|
|
$ cd a
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
$ hg unshelve -q wibble
|
2013-10-22 07:41:05 +04:00
|
|
|
$ cd ..
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
$ hg status -C
|
|
|
|
M a/a
|
|
|
|
A b.rename/b
|
|
|
|
b/b
|
|
|
|
A c.copy
|
|
|
|
c
|
|
|
|
R b/b
|
|
|
|
|
|
|
|
cause unshelving to result in a merge with 'a' conflicting
|
|
|
|
|
|
|
|
$ hg shelve -q
|
|
|
|
$ echo c>>a/a
|
|
|
|
$ hg commit -m second
|
|
|
|
$ hg tip --template '{files}\n'
|
|
|
|
a/a
|
|
|
|
|
|
|
|
add an unrelated change that should be preserved
|
|
|
|
|
|
|
|
$ mkdir foo
|
|
|
|
$ echo foo > foo/foo
|
|
|
|
$ hg add foo/foo
|
|
|
|
|
|
|
|
force a conflicted merge to occur
|
|
|
|
|
|
|
|
$ hg unshelve
|
|
|
|
unshelving change 'default'
|
2014-02-10 03:54:27 +04:00
|
|
|
temporarily committing pending changes (restore with 'hg unshelve --abort')
|
|
|
|
rebasing shelved changes
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
merging a/a
|
|
|
|
warning: conflicts during merge.
|
|
|
|
merging a/a incomplete! (edit conflicts, then use 'hg resolve --mark')
|
|
|
|
unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
|
|
|
|
[1]
|
|
|
|
|
|
|
|
ensure that we have a merge with unresolved conflicts
|
|
|
|
|
2013-10-24 00:12:48 +04:00
|
|
|
$ hg heads -q --template '{rev}\n'
|
|
|
|
5
|
|
|
|
4
|
|
|
|
$ hg parents -q --template '{rev}\n'
|
|
|
|
4
|
|
|
|
5
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
$ hg status
|
|
|
|
M a/a
|
|
|
|
M b.rename/b
|
|
|
|
M c.copy
|
|
|
|
R b/b
|
|
|
|
? a/a.orig
|
|
|
|
$ hg diff
|
|
|
|
diff --git a/a/a b/a/a
|
|
|
|
--- a/a/a
|
|
|
|
+++ b/a/a
|
|
|
|
@@ -1,2 +1,6 @@
|
|
|
|
a
|
2014-05-26 22:44:58 +04:00
|
|
|
+<<<<<<< dest: * - shelve: pending changes temporary commit (glob)
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
c
|
|
|
|
+=======
|
|
|
|
+a
|
2014-05-26 22:44:58 +04:00
|
|
|
+>>>>>>> source: 4702e8911fe0 - shelve: changes to '[mq]: second.patch'
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
diff --git a/b.rename/b b/b.rename/b
|
2013-10-13 16:38:30 +04:00
|
|
|
new file mode 100644
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
--- /dev/null
|
|
|
|
+++ b/b.rename/b
|
|
|
|
@@ -0,0 +1,1 @@
|
|
|
|
+b
|
|
|
|
diff --git a/b/b b/b/b
|
|
|
|
deleted file mode 100644
|
|
|
|
--- a/b/b
|
|
|
|
+++ /dev/null
|
|
|
|
@@ -1,1 +0,0 @@
|
|
|
|
-b
|
|
|
|
diff --git a/c.copy b/c.copy
|
2013-10-13 16:38:30 +04:00
|
|
|
new file mode 100644
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
--- /dev/null
|
|
|
|
+++ b/c.copy
|
|
|
|
@@ -0,0 +1,1 @@
|
|
|
|
+c
|
|
|
|
$ hg resolve -l
|
|
|
|
U a/a
|
|
|
|
|
|
|
|
$ hg shelve
|
|
|
|
abort: unshelve already in progress
|
|
|
|
(use 'hg unshelve --continue' or 'hg unshelve --abort')
|
|
|
|
[255]
|
|
|
|
|
|
|
|
abort the unshelve and be happy
|
|
|
|
|
|
|
|
$ hg status
|
|
|
|
M a/a
|
|
|
|
M b.rename/b
|
|
|
|
M c.copy
|
|
|
|
R b/b
|
|
|
|
? a/a.orig
|
|
|
|
$ hg unshelve -a
|
2013-10-24 00:12:48 +04:00
|
|
|
rebase aborted
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
unshelve of 'default' aborted
|
|
|
|
$ hg heads -q
|
2013-08-29 20:22:15 +04:00
|
|
|
3:2e69b451d1ea
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
$ hg parents
|
2013-08-29 20:22:15 +04:00
|
|
|
changeset: 3:2e69b451d1ea
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
tag: tip
|
|
|
|
user: test
|
|
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
|
|
summary: second
|
|
|
|
|
|
|
|
$ hg resolve -l
|
|
|
|
$ hg status
|
|
|
|
A foo/foo
|
|
|
|
? a/a.orig
|
|
|
|
|
|
|
|
try to continue with no unshelve underway
|
|
|
|
|
|
|
|
$ hg unshelve -c
|
|
|
|
abort: no unshelve operation underway
|
|
|
|
[255]
|
|
|
|
$ hg status
|
|
|
|
A foo/foo
|
|
|
|
? a/a.orig
|
|
|
|
|
|
|
|
redo the unshelve to get a conflict
|
|
|
|
|
|
|
|
$ hg unshelve -q
|
|
|
|
warning: conflicts during merge.
|
|
|
|
merging a/a incomplete! (edit conflicts, then use 'hg resolve --mark')
|
|
|
|
unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
|
|
|
|
[1]
|
|
|
|
|
|
|
|
attempt to continue
|
|
|
|
|
|
|
|
$ hg unshelve -c
|
|
|
|
abort: unresolved conflicts, can't continue
|
|
|
|
(see 'hg resolve', then 'hg unshelve --continue')
|
|
|
|
[255]
|
|
|
|
|
|
|
|
$ hg revert -r . a/a
|
|
|
|
$ hg resolve -m a/a
|
2014-07-26 05:32:49 +04:00
|
|
|
(no more unresolved files)
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
|
2013-10-28 20:03:43 +04:00
|
|
|
$ hg commit -m 'commit while unshelve in progress'
|
|
|
|
abort: unshelve already in progress
|
|
|
|
(use 'hg unshelve --continue' or 'hg unshelve --abort')
|
|
|
|
[255]
|
|
|
|
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
$ hg unshelve -c
|
|
|
|
unshelve of 'default' complete
|
|
|
|
|
|
|
|
ensure the repo is as we hope
|
|
|
|
|
|
|
|
$ hg parents
|
2013-08-29 20:22:15 +04:00
|
|
|
changeset: 3:2e69b451d1ea
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
tag: tip
|
|
|
|
user: test
|
|
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
|
|
summary: second
|
|
|
|
|
|
|
|
$ hg heads -q
|
2013-08-29 20:22:15 +04:00
|
|
|
3:2e69b451d1ea
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
|
|
|
|
$ hg status -C
|
2013-10-24 00:12:48 +04:00
|
|
|
A b.rename/b
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
b/b
|
2013-10-24 00:12:48 +04:00
|
|
|
A c.copy
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
c
|
|
|
|
A foo/foo
|
|
|
|
R b/b
|
|
|
|
? a/a.orig
|
|
|
|
|
|
|
|
there should be no shelves left
|
|
|
|
|
|
|
|
$ hg shelve -l
|
|
|
|
|
|
|
|
#if execbit
|
|
|
|
|
|
|
|
ensure that metadata-only changes are shelved
|
|
|
|
|
|
|
|
$ chmod +x a/a
|
|
|
|
$ hg shelve -q -n execbit a/a
|
|
|
|
$ hg status a/a
|
|
|
|
$ hg unshelve -q execbit
|
|
|
|
$ hg status a/a
|
|
|
|
M a/a
|
|
|
|
$ hg revert a/a
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if symlink
|
|
|
|
|
|
|
|
$ rm a/a
|
|
|
|
$ ln -s foo a/a
|
|
|
|
$ hg shelve -q -n symlink a/a
|
|
|
|
$ hg status a/a
|
|
|
|
$ hg unshelve -q symlink
|
|
|
|
$ hg status a/a
|
|
|
|
M a/a
|
|
|
|
$ hg revert a/a
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
set up another conflict between a commit and a shelved change
|
|
|
|
|
|
|
|
$ hg revert -q -C -a
|
2013-10-24 00:12:48 +04:00
|
|
|
$ rm a/a.orig b.rename/b c.copy
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
$ echo a >> a/a
|
|
|
|
$ hg shelve -q
|
|
|
|
$ echo x >> a/a
|
|
|
|
$ hg ci -m 'create conflict'
|
|
|
|
$ hg add foo/foo
|
|
|
|
|
|
|
|
if we resolve a conflict while unshelving, the unshelve should succeed
|
|
|
|
|
|
|
|
$ HGMERGE=true hg unshelve
|
|
|
|
unshelving change 'default'
|
2014-02-10 03:54:27 +04:00
|
|
|
temporarily committing pending changes (restore with 'hg unshelve --abort')
|
|
|
|
rebasing shelved changes
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
merging a/a
|
|
|
|
$ hg parents -q
|
2013-10-12 04:19:40 +04:00
|
|
|
4:33f7f61e6c5e
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
$ hg shelve -l
|
|
|
|
$ hg status
|
|
|
|
A foo/foo
|
|
|
|
$ cat a/a
|
|
|
|
a
|
|
|
|
c
|
|
|
|
x
|
|
|
|
|
|
|
|
test keep and cleanup
|
|
|
|
|
|
|
|
$ hg shelve
|
|
|
|
shelved as default
|
|
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
|
|
$ hg shelve --list
|
2014-02-10 03:53:27 +04:00
|
|
|
default (*) changes to 'create conflict' (glob)
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
$ hg unshelve --keep
|
|
|
|
unshelving change 'default'
|
|
|
|
$ hg shelve --list
|
2014-02-10 03:53:27 +04:00
|
|
|
default (*) changes to 'create conflict' (glob)
|
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
2013-08-29 20:22:13 +04:00
|
|
|
$ hg shelve --cleanup
|
|
|
|
$ hg shelve --list
|
2013-10-03 21:41:25 +04:00
|
|
|
|
2014-06-05 17:20:32 +04:00
|
|
|
$ hg shelve --cleanup --delete
|
|
|
|
abort: options '--cleanup' and '--delete' may not be used together
|
|
|
|
[255]
|
|
|
|
$ hg shelve --cleanup --patch
|
|
|
|
abort: options '--cleanup' and '--patch' may not be used together
|
|
|
|
[255]
|
|
|
|
$ hg shelve --cleanup --message MESSAGE
|
|
|
|
abort: options '--cleanup' and '--message' may not be used together
|
|
|
|
[255]
|
|
|
|
|
2013-10-03 21:41:25 +04:00
|
|
|
test bookmarks
|
|
|
|
|
|
|
|
$ hg bookmark test
|
|
|
|
$ hg bookmark
|
2013-10-12 04:19:40 +04:00
|
|
|
* test 4:33f7f61e6c5e
|
2013-10-03 21:41:25 +04:00
|
|
|
$ hg shelve
|
|
|
|
shelved as test
|
|
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
|
|
$ hg bookmark
|
2013-10-12 04:19:40 +04:00
|
|
|
* test 4:33f7f61e6c5e
|
2013-10-03 21:41:25 +04:00
|
|
|
$ hg unshelve
|
|
|
|
unshelving change 'test'
|
|
|
|
$ hg bookmark
|
2013-10-12 04:19:40 +04:00
|
|
|
* test 4:33f7f61e6c5e
|
2013-10-10 01:15:20 +04:00
|
|
|
|
|
|
|
shelve should still work even if mq is disabled
|
|
|
|
|
|
|
|
$ hg --config extensions.mq=! shelve
|
|
|
|
shelved as test
|
|
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
|
|
$ hg --config extensions.mq=! shelve --list
|
2014-02-10 03:53:27 +04:00
|
|
|
test (*) changes to 'create conflict' (glob)
|
2013-10-10 01:15:20 +04:00
|
|
|
$ hg --config extensions.mq=! unshelve
|
|
|
|
unshelving change 'test'
|
2013-10-12 04:19:40 +04:00
|
|
|
|
|
|
|
shelve should leave dirstate clean (issue 4055)
|
|
|
|
|
|
|
|
$ cd ..
|
|
|
|
$ hg init shelverebase
|
|
|
|
$ cd shelverebase
|
|
|
|
$ printf 'x\ny\n' > x
|
|
|
|
$ echo z > z
|
|
|
|
$ hg commit -Aqm xy
|
|
|
|
$ echo z >> x
|
|
|
|
$ hg commit -Aqm z
|
|
|
|
$ hg up 0
|
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ printf 'a\nx\ny\nz\n' > x
|
|
|
|
$ hg commit -Aqm xyz
|
|
|
|
$ echo c >> z
|
|
|
|
$ hg shelve
|
|
|
|
shelved as default
|
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ hg rebase -d 1 --config extensions.rebase=
|
|
|
|
merging x
|
|
|
|
saved backup bundle to $TESTTMP/shelverebase/.hg/strip-backup/323bfa07f744-backup.hg (glob)
|
|
|
|
$ hg unshelve
|
|
|
|
unshelving change 'default'
|
2014-02-10 03:54:27 +04:00
|
|
|
rebasing shelved changes
|
2013-10-12 04:19:40 +04:00
|
|
|
$ hg status
|
|
|
|
M z
|
|
|
|
|
|
|
|
$ cd ..
|
2013-10-24 00:12:48 +04:00
|
|
|
|
|
|
|
shelve should only unshelve pending changes (issue 4068)
|
|
|
|
|
|
|
|
$ hg init onlypendingchanges
|
|
|
|
$ cd onlypendingchanges
|
|
|
|
$ touch a
|
|
|
|
$ hg ci -Aqm a
|
|
|
|
$ touch b
|
|
|
|
$ hg ci -Aqm b
|
|
|
|
$ hg up -q 0
|
|
|
|
$ touch c
|
|
|
|
$ hg ci -Aqm c
|
|
|
|
|
|
|
|
$ touch d
|
|
|
|
$ hg add d
|
|
|
|
$ hg shelve
|
|
|
|
shelved as default
|
|
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
|
|
$ hg up -q 1
|
|
|
|
$ hg unshelve
|
|
|
|
unshelving change 'default'
|
2014-02-10 03:54:27 +04:00
|
|
|
rebasing shelved changes
|
2013-10-24 00:12:48 +04:00
|
|
|
$ hg status
|
|
|
|
A d
|
|
|
|
|
|
|
|
unshelve should work on an ancestor of the original commit
|
|
|
|
|
|
|
|
$ hg shelve
|
|
|
|
shelved as default
|
|
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
|
|
$ hg up 0
|
|
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
|
|
$ hg unshelve
|
|
|
|
unshelving change 'default'
|
2014-02-10 03:54:27 +04:00
|
|
|
rebasing shelved changes
|
2013-10-24 00:12:48 +04:00
|
|
|
$ hg status
|
|
|
|
A d
|
|
|
|
|
2013-11-08 08:36:26 +04:00
|
|
|
test bug 4073 we need to enable obsolete markers for it
|
|
|
|
|
|
|
|
$ cat > ../obs.py << EOF
|
|
|
|
> import mercurial.obsolete
|
|
|
|
> mercurial.obsolete._enabled = True
|
|
|
|
> EOF
|
|
|
|
$ echo '[extensions]' >> $HGRCPATH
|
|
|
|
$ echo "obs=${TESTTMP}/obs.py" >> $HGRCPATH
|
|
|
|
$ hg shelve
|
|
|
|
shelved as default
|
|
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
|
|
$ hg debugobsolete `hg --debug id -i -r 1`
|
|
|
|
$ hg unshelve
|
|
|
|
unshelving change 'default'
|
|
|
|
|
2013-11-27 04:30:52 +04:00
|
|
|
unshelve should leave unknown files alone (issue4113)
|
|
|
|
|
|
|
|
$ echo e > e
|
|
|
|
$ hg shelve
|
|
|
|
shelved as default
|
|
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
|
|
$ hg status
|
|
|
|
? e
|
|
|
|
$ hg unshelve
|
|
|
|
unshelving change 'default'
|
|
|
|
$ hg status
|
|
|
|
A d
|
|
|
|
? e
|
|
|
|
$ cat e
|
|
|
|
e
|
|
|
|
|
|
|
|
unshelve should keep a copy of unknown files
|
|
|
|
|
|
|
|
$ hg add e
|
|
|
|
$ hg shelve
|
|
|
|
shelved as default
|
|
|
|
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
|
|
|
|
$ echo z > e
|
|
|
|
$ hg unshelve
|
|
|
|
unshelving change 'default'
|
|
|
|
$ cat e
|
|
|
|
e
|
|
|
|
$ cat e.orig
|
|
|
|
z
|
|
|
|
|
2014-02-10 03:54:40 +04:00
|
|
|
|
2014-04-08 01:10:20 +04:00
|
|
|
unshelve and conflicts with tracked and untracked files
|
2014-02-10 03:54:40 +04:00
|
|
|
|
|
|
|
preparing:
|
|
|
|
|
|
|
|
$ rm *.orig
|
|
|
|
$ hg ci -qm 'commit stuff'
|
|
|
|
$ hg phase -p null:
|
|
|
|
|
|
|
|
no other changes - no merge:
|
|
|
|
|
|
|
|
$ echo f > f
|
|
|
|
$ hg add f
|
|
|
|
$ hg shelve
|
|
|
|
shelved as default
|
|
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
2014-04-08 01:10:20 +04:00
|
|
|
$ echo g > f
|
2014-02-10 03:54:40 +04:00
|
|
|
$ hg unshelve
|
|
|
|
unshelving change 'default'
|
|
|
|
$ hg st
|
|
|
|
A f
|
|
|
|
? f.orig
|
|
|
|
$ cat f
|
|
|
|
f
|
|
|
|
$ cat f.orig
|
2014-04-08 01:10:20 +04:00
|
|
|
g
|
2014-02-10 03:54:40 +04:00
|
|
|
|
|
|
|
other uncommitted changes - merge:
|
|
|
|
|
|
|
|
$ hg st
|
|
|
|
A f
|
|
|
|
? f.orig
|
|
|
|
$ hg shelve
|
|
|
|
shelved as default
|
|
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
2014-02-11 01:56:10 +04:00
|
|
|
$ hg log -G --template '{rev} {desc|firstline} {author}' -R bundle://.hg/shelved/default.hg -r 'bundle()'
|
2014-02-10 03:54:40 +04:00
|
|
|
o 4 changes to 'commit stuff' shelve@localhost
|
|
|
|
|
|
|
|
|
$ hg log -G --template '{rev} {desc|firstline} {author}'
|
|
|
|
@ 3 commit stuff test
|
|
|
|
|
|
|
|
|
| o 2 c test
|
|
|
|
|/
|
|
|
|
o 0 a test
|
|
|
|
|
|
|
|
$ mv f.orig f
|
2014-04-08 01:10:20 +04:00
|
|
|
$ echo 1 > a
|
2014-04-08 01:10:20 +04:00
|
|
|
$ hg unshelve --date '1073741824 0'
|
2014-02-10 03:54:40 +04:00
|
|
|
unshelving change 'default'
|
|
|
|
temporarily committing pending changes (restore with 'hg unshelve --abort')
|
|
|
|
rebasing shelved changes
|
|
|
|
merging f
|
|
|
|
warning: conflicts during merge.
|
|
|
|
merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
|
|
|
|
unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
|
|
|
|
[1]
|
2014-04-08 01:10:20 +04:00
|
|
|
$ hg log -G --template '{rev} {desc|firstline} {author} {date|isodate}'
|
|
|
|
@ 5 changes to 'commit stuff' shelve@localhost 1970-01-01 00:00 +0000
|
2014-02-10 03:54:40 +04:00
|
|
|
|
|
2014-04-08 01:10:20 +04:00
|
|
|
| @ 4 pending changes temporary commit shelve@localhost 2004-01-10 13:37 +0000
|
2014-02-10 03:54:40 +04:00
|
|
|
|/
|
2014-04-08 01:10:20 +04:00
|
|
|
o 3 commit stuff test 1970-01-01 00:00 +0000
|
2014-02-10 03:54:40 +04:00
|
|
|
|
|
2014-04-08 01:10:20 +04:00
|
|
|
| o 2 c test 1970-01-01 00:00 +0000
|
2014-02-10 03:54:40 +04:00
|
|
|
|/
|
2014-04-08 01:10:20 +04:00
|
|
|
o 0 a test 1970-01-01 00:00 +0000
|
2014-02-10 03:54:40 +04:00
|
|
|
|
|
|
|
$ hg st
|
|
|
|
M f
|
|
|
|
? f.orig
|
|
|
|
$ cat f
|
2014-05-26 22:44:58 +04:00
|
|
|
<<<<<<< dest: 5f6b880e719b - shelve: pending changes temporary commit
|
2014-04-08 01:10:20 +04:00
|
|
|
g
|
2014-02-10 03:54:40 +04:00
|
|
|
=======
|
|
|
|
f
|
2014-05-26 22:44:58 +04:00
|
|
|
>>>>>>> source: 23b29cada8ba - shelve: changes to 'commit stuff'
|
2014-02-10 03:54:40 +04:00
|
|
|
$ cat f.orig
|
2014-04-08 01:10:20 +04:00
|
|
|
g
|
2014-02-10 03:54:40 +04:00
|
|
|
$ hg unshelve --abort
|
|
|
|
rebase aborted
|
|
|
|
unshelve of 'default' aborted
|
|
|
|
$ hg st
|
|
|
|
M a
|
|
|
|
? f.orig
|
|
|
|
$ cat f.orig
|
2014-04-08 01:10:20 +04:00
|
|
|
g
|
2014-02-10 03:54:40 +04:00
|
|
|
$ hg unshelve
|
|
|
|
unshelving change 'default'
|
|
|
|
temporarily committing pending changes (restore with 'hg unshelve --abort')
|
|
|
|
rebasing shelved changes
|
|
|
|
$ hg st
|
|
|
|
M a
|
|
|
|
A f
|
|
|
|
? f.orig
|
|
|
|
|
|
|
|
other committed changes - merge:
|
|
|
|
|
|
|
|
$ hg shelve f
|
|
|
|
shelved as default
|
|
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
|
|
$ hg ci a -m 'intermediate other change'
|
|
|
|
$ mv f.orig f
|
|
|
|
$ hg unshelve
|
|
|
|
unshelving change 'default'
|
|
|
|
rebasing shelved changes
|
|
|
|
merging f
|
|
|
|
warning: conflicts during merge.
|
|
|
|
merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
|
|
|
|
unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
|
|
|
|
[1]
|
|
|
|
$ hg st
|
|
|
|
M f
|
|
|
|
? f.orig
|
|
|
|
$ cat f
|
2014-05-26 22:44:58 +04:00
|
|
|
<<<<<<< dest: * - test: intermediate other change (glob)
|
2014-04-08 01:10:20 +04:00
|
|
|
g
|
2014-02-10 03:54:40 +04:00
|
|
|
=======
|
|
|
|
f
|
2014-05-26 22:44:58 +04:00
|
|
|
>>>>>>> source: 23b29cada8ba - shelve: changes to 'commit stuff'
|
2014-02-10 03:54:40 +04:00
|
|
|
$ cat f.orig
|
2014-04-08 01:10:20 +04:00
|
|
|
g
|
2014-02-10 03:54:40 +04:00
|
|
|
$ hg unshelve --abort
|
|
|
|
rebase aborted
|
|
|
|
no changes needed to a
|
|
|
|
no changes needed to d
|
|
|
|
no changes needed to e
|
|
|
|
unshelve of 'default' aborted
|
2014-04-08 01:10:20 +04:00
|
|
|
$ hg st
|
|
|
|
? f.orig
|
|
|
|
$ cat f.orig
|
|
|
|
g
|
2014-02-10 03:54:40 +04:00
|
|
|
$ hg shelve --delete default
|
|
|
|
|
2014-06-05 17:20:32 +04:00
|
|
|
$ hg shelve --delete --stat
|
|
|
|
abort: options '--delete' and '--stat' may not be used together
|
|
|
|
[255]
|
|
|
|
$ hg shelve --delete --name NAME
|
|
|
|
abort: options '--delete' and '--name' may not be used together
|
|
|
|
[255]
|
|
|
|
|
2013-10-24 00:12:48 +04:00
|
|
|
$ cd ..
|