tests/test-mq.out
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
Mon, 20 Nov 2006 19:32:42 -0200
changeset 3699 4bafcf7aeb32
parent 3697 da262f35fbc8
child 3700 4c158de5f245
permissions -rw-r--r--
qrefresh: fix handling of added files (including copies) in the slow path

% help
mq extension - patch management and development

This extension lets you work with a stack of patches in a Mercurial
repository.  It manages two stacks of patches - all known patches, and
applied patches (subset of known patches).

Known patches are represented as patch files in the .hg/patches
directory.  Applied patches are both patch files and changesets.

Common tasks (use "hg help command" for more details):

prepare repository to work with patches   qinit
create new patch                          qnew
import existing patch                     qimport

print patch series                        qseries
print applied patches                     qapplied
print name of top applied patch           qtop

add known patch to applied stack          qpush
remove patch from applied stack           qpop
refresh contents of top applied patch     qrefresh

list of commands (use "hg help -v mq" to show aliases and global options):

 qapplied     print the patches already applied
 qclone       clone main and patch repository at same time
 qcommit      commit changes in the queue repository
 qdelete      remove patches from queue
 qdiff        diff of the current patch
 qfold        fold the named patches into the current patch
 qguard       set or print guards for a patch
 qheader      Print the header of the topmost or specified patch
 qimport      import a patch
 qinit        init a new queue repository
 qnew         create a new patch
 qnext        print the name of the next patch
 qpop         pop the current patch off the stack
 qprev        print the name of the previous patch
 qpush        push the next patch onto the stack
 qrefresh     update the current patch
 qrename      rename a patch
 qrestore     restore the queue state saved by a rev
 qsave        save current queue state
 qselect      set or print guarded patches to push
 qseries      print the entire series file
 qtop         print the name of the current patch
 qunapplied   print the patches not yet applied
 strip        strip a revision and all later revs on the same branch
adding a
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
adding b/z
% qinit
% -R qinit
% qinit -c
A .hgignore
A series
% qnew implies add
A .hgignore
A series
A test.patch
% qnew -m
foo bar
% qrefresh
foo bar

diff -r  xa
--- a/a
+++ b/a
@@ -1,1 +1,2 @@ a
 a
+a
% qpop
Patch queue now empty
% qpush
applying test.patch
Now at: test.patch
% pop/push outside repo
Patch queue now empty
applying test.patch
Now at: test.patch
% qrefresh in subdir
% pop/push -a in subdir
Patch queue now empty
applying test.patch
applying test2.patch
Now at: test2.patch
% qseries
test.patch
test2.patch
Now at: test.patch
0 A test.patch: foo bar
1 U test2.patch: 
applying test2.patch
Now at: test2.patch
% qapplied
test.patch
test2.patch
% qtop
test2.patch
% qprev
test.patch
% qnext
All patches applied
% pop, qnext, qprev, qapplied
Now at: test.patch
test2.patch
Only one patch applied
test.patch
% commit should fail
abort: cannot commit over an applied mq patch
% push should fail
pushing to ../../k
abort: source has mq patches applied
% qunapplied
test2.patch
% qpush/qpop with index
applying test2.patch
Now at: test2.patch
Now at: test.patch
applying test1b.patch
Now at: test1b.patch
applying test2.patch
Now at: test2.patch
Now at: test1b.patch
Now at: test.patch
applying test1b.patch
applying test2.patch
Now at: test2.patch
% push should succeed
Patch queue now empty
pushing to ../../k
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
% strip
adding x
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
saving bundle to 
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
(run 'hg update' to get a working copy)
% cd b; hg qrefresh
adding a
foo

diff -r cb9a9f314b8b a
--- a/a
+++ b/a
@@ -1,1 +1,2 @@ a
 a
+a
diff -r cb9a9f314b8b b/f
--- /dev/null
+++ b/b/f
@@ -0,0 +1,1 @@
+f
% hg qrefresh .
foo

diff -r cb9a9f314b8b b/f
--- /dev/null
+++ b/b/f
@@ -0,0 +1,1 @@
+f
M a
% qpush failure
Patch queue now empty
applying foo
applying bar
1 out of 1 hunk ignored -- saving rejects to file foo.rej
patch failed, unable to continue (try -v)
patch failed, rejects left in working dir
Errors during apply, please fix and refresh bar
? foo
? foo.rej
new file

diff --git a/new b/new
new file mode 100755
--- /dev/null
+++ b/new
@@ -0,0 +1,1 @@
+foo
copy file

diff --git a/new b/copy
copy from new
copy to copy
Now at: new
applying copy
Now at: copy
diff --git a/new b/copy
copy from new
copy to copy
diff --git a/new b/copy
copy from new
copy to copy
1 files updated, 0 files merged, 2 files removed, 0 files unresolved
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
adding branch
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
(run 'hg update' to get a working copy)
Patch queue now empty
applying bar
Now at: bar
diff --git a/bar b/bar
new file mode 100644
--- /dev/null
+++ b/bar
@@ -0,0 +1,1 @@
+bar
diff --git a/foo b/baz
rename from foo
rename to baz
2 baz (foo)

1 files updated, 0 files merged, 2 files removed, 0 files unresolved
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
adding branch
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
(run 'hg update' to get a working copy)
Patch queue now empty
applying bar
Now at: bar
diff --git a/foo b/bleh
rename from foo
rename to bleh
diff --git a/quux b/quux
new file mode 100644
--- /dev/null
+++ b/quux
@@ -0,0 +1,1 @@
+bar
3 bleh (foo)