mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 16:31:02 +03:00
effa0da8de
Summary: The helper could be used in individual tests to enable chg if chg exists. This allows us to have more precise control on what tests to use chg instead of using a global flag in run-tests.py. This makes certain tests containing many hg commands much faster. For example, `test-revset.t` took 99 seconds before: % ./run-tests.py test-revset.t --time . # Ran 1 tests, 0 skipped, 0 failed. # Producing time report start end cuser csys real Test 0.000 99.990 86.410 12.000 99.990 test-revset.t And 10 seconds after: % ./run-tests.py test-revset.t --time . # Ran 1 tests, 0 skipped, 0 failed. # Producing time report start end cuser csys real Test 0.000 10.080 0.380 0.130 10.080 test-revset.t Also enable it for some other tests. Note the whitelist is not complete. We probably want to whitelist more tests in the future. The feature could be opted out by deleting `contrib/chg/chg`. Reviewed By: phillco Differential Revision: D6767036 fbshipit-source-id: 8220cf408aa198d5d8e2ca5127ca60e2070d3444
200 lines
3.5 KiB
Perl
200 lines
3.5 KiB
Perl
$ . helpers-usechg.sh
|
|
|
|
$ echo "[extensions]" >> $HGRCPATH
|
|
$ echo "mq=" >> $HGRCPATH
|
|
|
|
$ hg init a
|
|
$ cd a
|
|
|
|
$ echo 'base' > base
|
|
$ hg ci -Ambase -d '1 0'
|
|
adding base
|
|
|
|
$ hg qnew -d '1 0' pa
|
|
$ hg qnew -d '1 0' pb
|
|
$ hg qnew -d '1 0' pc
|
|
|
|
$ hg qdel
|
|
abort: qdelete requires at least one revision or patch name
|
|
[255]
|
|
|
|
$ hg qdel pc
|
|
abort: cannot delete applied patch pc
|
|
[255]
|
|
|
|
$ hg qpop
|
|
popping pc
|
|
now at: pb
|
|
|
|
Delete the same patch twice in one command (issue2427)
|
|
|
|
$ hg qdel pc pc
|
|
|
|
$ hg qseries
|
|
pa
|
|
pb
|
|
|
|
$ ls .hg/patches
|
|
pa
|
|
pb
|
|
series
|
|
status
|
|
|
|
$ hg qpop
|
|
popping pb
|
|
now at: pa
|
|
|
|
$ hg qdel -k 1
|
|
|
|
$ ls .hg/patches
|
|
pa
|
|
pb
|
|
series
|
|
status
|
|
|
|
$ hg qdel -r pa
|
|
patch pa finalized without changeset message
|
|
|
|
$ hg qapplied
|
|
|
|
$ hg log --template '{rev} {desc}\n'
|
|
1 [mq]: pa
|
|
0 base
|
|
|
|
$ hg qnew pd
|
|
$ hg qnew pe
|
|
$ hg qnew pf
|
|
|
|
$ hg qdel -r pe
|
|
abort: cannot delete revision 3 above applied patches
|
|
[255]
|
|
|
|
$ hg qdel -r qbase:pe
|
|
patch pd finalized without changeset message
|
|
patch pe finalized without changeset message
|
|
|
|
$ hg qapplied
|
|
pf
|
|
|
|
$ hg log --template '{rev} {desc}\n'
|
|
4 [mq]: pf
|
|
3 [mq]: pe
|
|
2 [mq]: pd
|
|
1 [mq]: pa
|
|
0 base
|
|
|
|
$ cd ..
|
|
|
|
$ hg init b
|
|
$ cd b
|
|
|
|
$ echo 'base' > base
|
|
$ hg ci -Ambase -d '1 0'
|
|
adding base
|
|
|
|
$ hg qfinish
|
|
abort: no revisions specified
|
|
[255]
|
|
|
|
$ hg qfinish -a
|
|
no patches applied
|
|
|
|
$ hg qnew -d '1 0' pa
|
|
$ hg qnew -d '1 0' pb
|
|
$ hg qnew pc # XXX fails to apply by /usr/bin/patch if we put a date
|
|
|
|
$ hg qfinish 0
|
|
abort: revision 0 is not managed
|
|
[255]
|
|
|
|
$ hg qfinish pb
|
|
abort: cannot delete revision 2 above applied patches
|
|
[255]
|
|
|
|
$ hg qpop
|
|
popping pc
|
|
now at: pb
|
|
|
|
$ hg qfinish -a pc
|
|
abort: unknown revision 'pc'!
|
|
[255]
|
|
|
|
$ hg qpush
|
|
applying pc
|
|
patch pc is empty
|
|
now at: pc
|
|
|
|
$ hg qfinish qbase:pb
|
|
patch pa finalized without changeset message
|
|
patch pb finalized without changeset message
|
|
|
|
$ hg qapplied
|
|
pc
|
|
|
|
$ hg log --template '{rev} {desc}\n'
|
|
3 imported patch pc
|
|
2 [mq]: pb
|
|
1 [mq]: pa
|
|
0 base
|
|
|
|
$ hg qfinish -a pc
|
|
patch pc finalized without changeset message
|
|
|
|
$ hg qapplied
|
|
|
|
$ hg log --template '{rev} {desc}\n'
|
|
3 imported patch pc
|
|
2 [mq]: pb
|
|
1 [mq]: pa
|
|
0 base
|
|
|
|
$ ls .hg/patches
|
|
series
|
|
status
|
|
|
|
qdel -k X && hg qimp -e X used to trigger spurious output with versioned queues
|
|
|
|
$ hg init --mq
|
|
$ hg qimport -r 3
|
|
$ hg qpop
|
|
popping imported_patch_pc
|
|
patch queue now empty
|
|
$ hg qdel -k imported_patch_pc
|
|
$ hg qimp -e imported_patch_pc
|
|
adding imported_patch_pc to series file
|
|
$ hg qfinish -a
|
|
no patches applied
|
|
|
|
|
|
resilience to inconsistency: qfinish -a with applied patches not in series
|
|
|
|
$ hg qser
|
|
imported_patch_pc
|
|
$ hg qapplied
|
|
$ hg qpush
|
|
applying imported_patch_pc
|
|
patch imported_patch_pc is empty
|
|
now at: imported_patch_pc
|
|
$ echo next >> base
|
|
$ hg qrefresh -d '1 0'
|
|
$ echo > .hg/patches/series # remove 3.diff from series to confuse mq
|
|
$ hg qfinish -a
|
|
revision 47dfa8501675 refers to unknown patches: imported_patch_pc
|
|
|
|
more complex state 'both known and unknown patches
|
|
|
|
$ echo hip >> base
|
|
$ hg qnew -f -d '1 0' -m 4 4.diff
|
|
$ echo hop >> base
|
|
$ hg qnew -f -d '1 0' -m 5 5.diff
|
|
$ echo > .hg/patches/series # remove 4.diff and 5.diff from series to confuse mq
|
|
$ echo hup >> base
|
|
$ hg qnew -f -d '1 0' -m 6 6.diff
|
|
$ echo pup > base
|
|
$ hg qfinish -a
|
|
warning: uncommitted changes in the working directory
|
|
revision 2b1c98802260 refers to unknown patches: 5.diff
|
|
revision 33a6861311c0 refers to unknown patches: 4.diff
|
|
|
|
$ cd ..
|