mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 08:18:15 +03:00
433 lines
6.9 KiB
Turing
433 lines
6.9 KiB
Turing
$ echo "[extensions]" >> $HGRCPATH
|
||
$ echo "mq=" >> $HGRCPATH
|
||
|
||
$ hg init
|
||
$ hg qinit
|
||
|
||
$ echo x > x
|
||
$ hg ci -Ama
|
||
adding x
|
||
|
||
$ hg qnew a.patch
|
||
$ echo a > a
|
||
$ hg add a
|
||
$ hg qrefresh
|
||
|
||
$ hg qnew b.patch
|
||
$ echo b > b
|
||
$ hg add b
|
||
$ hg qrefresh
|
||
|
||
$ hg qnew c.patch
|
||
$ echo c > c
|
||
$ hg add c
|
||
$ hg qrefresh
|
||
|
||
$ hg qpop -a
|
||
popping c.patch
|
||
popping b.patch
|
||
popping a.patch
|
||
patch queue now empty
|
||
|
||
|
||
should fail
|
||
|
||
$ hg qguard does-not-exist.patch +bleh
|
||
abort: no patch named does-not-exist.patch
|
||
|
||
|
||
should fail
|
||
|
||
$ hg qguard +fail
|
||
abort: no patches applied
|
||
|
||
$ hg qpush
|
||
applying a.patch
|
||
now at: a.patch
|
||
|
||
should guard a.patch
|
||
|
||
$ hg qguard +a
|
||
|
||
should print +a
|
||
|
||
$ hg qguard
|
||
a.patch: +a
|
||
$ hg qpop
|
||
popping a.patch
|
||
patch queue now empty
|
||
|
||
|
||
should fail
|
||
|
||
$ hg qpush a.patch
|
||
cannot push 'a.patch' - guarded by ['+a']
|
||
|
||
$ hg qguard a.patch
|
||
a.patch: +a
|
||
|
||
should push b.patch
|
||
|
||
$ hg qpush
|
||
applying b.patch
|
||
now at: b.patch
|
||
|
||
$ hg qpop
|
||
popping b.patch
|
||
patch queue now empty
|
||
|
||
test selection of an empty guard
|
||
|
||
$ hg qselect ""
|
||
abort: guard cannot be an empty string
|
||
$ hg qselect a
|
||
number of unguarded, unapplied patches has changed from 2 to 3
|
||
|
||
should push a.patch
|
||
|
||
$ hg qpush
|
||
applying a.patch
|
||
now at: a.patch
|
||
|
||
$ hg qguard -- c.patch -a
|
||
|
||
should print -a
|
||
|
||
$ hg qguard c.patch
|
||
c.patch: -a
|
||
|
||
|
||
should skip c.patch
|
||
|
||
$ hg qpush -a
|
||
applying b.patch
|
||
skipping c.patch - guarded by '-a'
|
||
now at: b.patch
|
||
|
||
should display b.patch
|
||
|
||
$ hg qtop
|
||
b.patch
|
||
|
||
$ hg qguard -n c.patch
|
||
|
||
should push c.patch
|
||
|
||
$ hg qpush -a
|
||
applying c.patch
|
||
now at: c.patch
|
||
|
||
$ hg qpop -a
|
||
popping c.patch
|
||
popping b.patch
|
||
popping a.patch
|
||
patch queue now empty
|
||
$ hg qselect -n
|
||
guards deactivated
|
||
number of unguarded, unapplied patches has changed from 3 to 2
|
||
|
||
should push all
|
||
|
||
$ hg qpush -a
|
||
applying b.patch
|
||
applying c.patch
|
||
now at: c.patch
|
||
|
||
$ hg qpop -a
|
||
popping c.patch
|
||
popping b.patch
|
||
patch queue now empty
|
||
$ hg qguard a.patch +1
|
||
$ hg qguard b.patch +2
|
||
$ hg qselect 1
|
||
number of unguarded, unapplied patches has changed from 1 to 2
|
||
|
||
should push a.patch, not b.patch
|
||
|
||
$ hg qpush
|
||
applying a.patch
|
||
now at: a.patch
|
||
$ hg qpush
|
||
applying c.patch
|
||
now at: c.patch
|
||
$ hg qpop -a
|
||
popping c.patch
|
||
popping a.patch
|
||
patch queue now empty
|
||
|
||
$ hg qselect 2
|
||
|
||
should push b.patch
|
||
|
||
$ hg qpush
|
||
applying b.patch
|
||
now at: b.patch
|
||
$ hg qpush -a
|
||
applying c.patch
|
||
now at: c.patch
|
||
|
||
Used to be an issue with holes in the patch sequence
|
||
So, put one hole on the base and ask for topmost patch.
|
||
|
||
$ hg qtop
|
||
c.patch
|
||
$ hg qpop -a
|
||
popping c.patch
|
||
popping b.patch
|
||
patch queue now empty
|
||
|
||
$ hg qselect 1 2
|
||
number of unguarded, unapplied patches has changed from 2 to 3
|
||
|
||
should push a.patch, b.patch
|
||
|
||
$ hg qpush
|
||
applying a.patch
|
||
now at: a.patch
|
||
$ hg qpush
|
||
applying b.patch
|
||
now at: b.patch
|
||
$ hg qpop -a
|
||
popping b.patch
|
||
popping a.patch
|
||
patch queue now empty
|
||
|
||
$ hg qguard -- a.patch +1 +2 -3
|
||
$ hg qselect 1 2 3
|
||
number of unguarded, unapplied patches has changed from 3 to 2
|
||
|
||
|
||
list patches and guards
|
||
|
||
$ hg qguard -l
|
||
a.patch: +1 +2 -3
|
||
b.patch: +2
|
||
c.patch: unguarded
|
||
|
||
have at least one patch applied to test coloring
|
||
|
||
$ hg qpush
|
||
applying b.patch
|
||
now at: b.patch
|
||
|
||
list patches and guards with color
|
||
|
||
$ hg --config extensions.color= qguard --config color.mode=ansi \
|
||
> -l --color=always
|
||
[0;30;1ma.patch[0m: [0;33m+1[0m [0;33m+2[0m [0;31m-3[0m
|
||
[0;34;1;4mb.patch[0m: [0;33m+2[0m
|
||
[0;30;1mc.patch[0m: [0;32munguarded[0m
|
||
|
||
should pop b.patch
|
||
|
||
$ hg qpop
|
||
popping b.patch
|
||
patch queue now empty
|
||
|
||
list series
|
||
|
||
$ hg qseries -v
|
||
0 G a.patch
|
||
1 U b.patch
|
||
2 U c.patch
|
||
|
||
list guards
|
||
|
||
$ hg qselect
|
||
1
|
||
2
|
||
3
|
||
|
||
should push b.patch
|
||
|
||
$ hg qpush
|
||
applying b.patch
|
||
now at: b.patch
|
||
|
||
$ hg qpush -a
|
||
applying c.patch
|
||
now at: c.patch
|
||
$ hg qselect -n --reapply
|
||
guards deactivated
|
||
popping guarded patches
|
||
popping c.patch
|
||
popping b.patch
|
||
patch queue now empty
|
||
reapplying unguarded patches
|
||
applying c.patch
|
||
now at: c.patch
|
||
|
||
guards in series file: +1 +2 -3
|
||
|
||
$ hg qselect -s
|
||
+1
|
||
+2
|
||
-3
|
||
|
||
should show c.patch
|
||
|
||
$ hg qapplied
|
||
c.patch
|
||
|
||
$ hg qrename a.patch new.patch
|
||
|
||
should show :
|
||
|
||
|
||
new.patch: +1 +2 -3
|
||
|
||
|
||
b.patch: +2
|
||
|
||
|
||
c.patch: unguarded
|
||
|
||
$ hg qguard -l
|
||
new.patch: +1 +2 -3
|
||
b.patch: +2
|
||
c.patch: unguarded
|
||
|
||
$ hg qnew d.patch
|
||
$ hg qpop
|
||
popping d.patch
|
||
now at: c.patch
|
||
|
||
should show new.patch and b.patch as Guarded, c.patch as Applied
|
||
|
||
|
||
and d.patch as Unapplied
|
||
|
||
$ hg qseries -v
|
||
0 G new.patch
|
||
1 G b.patch
|
||
2 A c.patch
|
||
3 U d.patch
|
||
|
||
qseries again, but with color
|
||
|
||
$ hg --config extensions.color= qseries -v --color=always
|
||
0 G [0;30;1mnew.patch[0m
|
||
1 G [0;30;1mb.patch[0m
|
||
2 A [0;34;1;4mc.patch[0m
|
||
3 U [0;30;1md.patch[0m
|
||
|
||
$ hg qguard d.patch +2
|
||
|
||
new.patch, b.patch: Guarded. c.patch: Applied. d.patch: Guarded.
|
||
|
||
$ hg qseries -v
|
||
0 G new.patch
|
||
1 G b.patch
|
||
2 A c.patch
|
||
3 G d.patch
|
||
|
||
$ qappunappv()
|
||
> {
|
||
> for command in qapplied "qapplied -v" qunapplied "qunapplied -v"; do
|
||
> echo % hg $command
|
||
> hg $command
|
||
> done
|
||
> }
|
||
|
||
$ hg qpop -a
|
||
popping c.patch
|
||
patch queue now empty
|
||
$ hg qguard -l
|
||
new.patch: +1 +2 -3
|
||
b.patch: +2
|
||
c.patch: unguarded
|
||
d.patch: +2
|
||
$ qappunappv
|
||
% hg qapplied
|
||
% hg qapplied -v
|
||
% hg qunapplied
|
||
c.patch
|
||
% hg qunapplied -v
|
||
0 G new.patch
|
||
1 G b.patch
|
||
2 U c.patch
|
||
3 G d.patch
|
||
$ hg qselect 1
|
||
number of unguarded, unapplied patches has changed from 1 to 2
|
||
$ qappunappv
|
||
% hg qapplied
|
||
% hg qapplied -v
|
||
% hg qunapplied
|
||
new.patch
|
||
c.patch
|
||
% hg qunapplied -v
|
||
0 U new.patch
|
||
1 G b.patch
|
||
2 U c.patch
|
||
3 G d.patch
|
||
$ hg qpush -a
|
||
applying new.patch
|
||
skipping b.patch - guarded by ['+2']
|
||
applying c.patch
|
||
skipping d.patch - guarded by ['+2']
|
||
now at: c.patch
|
||
$ qappunappv
|
||
% hg qapplied
|
||
new.patch
|
||
c.patch
|
||
% hg qapplied -v
|
||
0 A new.patch
|
||
1 G b.patch
|
||
2 A c.patch
|
||
% hg qunapplied
|
||
% hg qunapplied -v
|
||
3 G d.patch
|
||
$ hg qselect 2
|
||
number of unguarded, unapplied patches has changed from 0 to 1
|
||
number of guarded, applied patches has changed from 1 to 0
|
||
$ qappunappv
|
||
% hg qapplied
|
||
new.patch
|
||
c.patch
|
||
% hg qapplied -v
|
||
0 A new.patch
|
||
1 U b.patch
|
||
2 A c.patch
|
||
% hg qunapplied
|
||
d.patch
|
||
% hg qunapplied -v
|
||
3 U d.patch
|
||
|
||
$ for patch in `hg qseries`; do
|
||
> echo % hg qapplied $patch
|
||
> hg qapplied $patch
|
||
> echo % hg qunapplied $patch
|
||
> hg qunapplied $patch
|
||
> done
|
||
% hg qapplied new.patch
|
||
new.patch
|
||
% hg qunapplied new.patch
|
||
b.patch
|
||
d.patch
|
||
% hg qapplied b.patch
|
||
new.patch
|
||
% hg qunapplied b.patch
|
||
d.patch
|
||
% hg qapplied c.patch
|
||
new.patch
|
||
c.patch
|
||
% hg qunapplied c.patch
|
||
d.patch
|
||
% hg qapplied d.patch
|
||
new.patch
|
||
c.patch
|
||
% hg qunapplied d.patch
|
||
|
||
|
||
hg qseries -m: only b.patch should be shown
|
||
the guards file was not ignored in the past
|
||
|
||
$ hg qdelete -k b.patch
|
||
$ hg qseries -m
|
||
b.patch
|
||
|
||
hg qseries -m with color
|
||
|
||
$ hg --config extensions.color= qseries -m --color=always
|
||
[0;31;1mb.patch[0m
|