From 66340a950ed5b4a0a830272d84b44fec62d36a93 Mon Sep 17 00:00:00 2001 From: Gianni Chiappetta Date: Sat, 26 Feb 2011 23:04:58 -0500 Subject: [PATCH] added: Bundling mercurial extensions. --- .hgext/hg-prompt/.hg/00changelog.i | Bin 0 -> 57 bytes .hgext/hg-prompt/.hg/branch | 1 + .hgext/hg-prompt/.hg/branchheads.cache | 2 + .hgext/hg-prompt/.hg/dirstate | Bin 0 -> 1078 bytes .hgext/hg-prompt/.hg/hgrc | 2 + .hgext/hg-prompt/.hg/requires | 3 + .hgext/hg-prompt/.hg/store/00changelog.i | Bin 0 -> 22434 bytes .hgext/hg-prompt/.hg/store/00manifest.i | Bin 0 -> 18742 bytes .hgext/hg-prompt/.hg/store/data/.hgignore.i | Bin 0 -> 268 bytes .hgext/hg-prompt/.hg/store/data/.hgtags.i | Bin 0 -> 231 bytes .../hg-prompt/.hg/store/data/_r_e_a_d_m_e.i | Bin 0 -> 10134 bytes .../.hg/store/data/docs/.templates/404.html.i | Bin 0 -> 106 bytes .../store/data/docs/.templates/base.html.i | Bin 0 -> 107 bytes .../data/docs/.templates/document.html.i | Bin 0 -> 111 bytes .../store/data/docs/.templates/listing.html.i | Bin 0 -> 110 bytes .../store/data/docs/.templates/macros/html.i | Bin 0 -> 309 bytes .../.templates/markdoc-default/404.html.i | Bin 0 -> 279 bytes .../.templates/markdoc-default/base.html.i | Bin 0 -> 735 bytes .../markdoc-default/document.html.i | Bin 0 -> 135 bytes .../.templates/markdoc-default/listing.html.i | Bin 0 -> 432 bytes .hgext/hg-prompt/.hg/store/data/docs/.venv.i | Bin 0 -> 73 bytes .../.hg/store/data/docs/markdoc.yaml.i | Bin 0 -> 546 bytes .../.hg/store/data/docs/publish.sh.i | Bin 0 -> 304 bytes .../data/docs/static/media/css/layout.css.i | Bin 0 -> 1164 bytes .../data/docs/static/media/css/pygments.css.i | Bin 0 -> 927 bytes .../data/docs/static/media/css/reset.css.i | Bin 0 -> 564 bytes .../docs/static/media/css/typography.css.i | Bin 0 -> 1004 bytes .../docs/wiki/documentation/index.mdown.i | Bin 0 -> 534 bytes .../wiki/documentation/keywords/index.mdown.i | Bin 0 -> 2894 bytes .../wiki/documentation/samples/index.mdown.i | Bin 0 -> 1090 bytes .../wiki/documentation/usage/index.mdown.i | Bin 0 -> 1147 bytes .../.hg/store/data/docs/wiki/index.mdown.i | Bin 0 -> 1065 bytes .../data/docs/wiki/installation/index.mdown.i | Bin 0 -> 897 bytes .../data/docs/wiki/quickstart/index.mdown.i | Bin 0 -> 1228 bytes .hgext/hg-prompt/.hg/store/data/prompt.py.i | Bin 0 -> 23051 bytes .../.hg/store/data/tests/____init____.py.i | Bin 0 -> 157 bytes .../.hg/store/data/tests/test__branch.py.i | Bin 0 -> 450 bytes .../.hg/store/data/tests/test__node.py.i | Bin 0 -> 554 bytes .../.hg/store/data/tests/test__none.py.i | Bin 0 -> 256 bytes .../.hg/store/data/tests/test__rev.py.i | Bin 0 -> 532 bytes .../.hg/store/data/tests/test__tip.py.i | Bin 0 -> 441 bytes .../.hg/store/data/tests/test__update.py.i | Bin 0 -> 492 bytes .../hg-prompt/.hg/store/data/tests/util.py.i | Bin 0 -> 1090 bytes .hgext/hg-prompt/.hg/store/fncache | 35 + .hgext/hg-prompt/.hg/store/undo | Bin 0 -> 1280 bytes .hgext/hg-prompt/.hg/tags.cache | 4 + .hgext/hg-prompt/.hg/undo.branch | 1 + .hgext/hg-prompt/.hg/undo.desc | 3 + .hgext/hg-prompt/.hg/undo.dirstate | 0 .hgext/hg-prompt/.hgignore | 6 + .hgext/hg-prompt/.hgtags | 2 + .hgext/hg-prompt/LOL | 0 .hgext/hg-prompt/README | 46 ++ .hgext/hg-prompt/docs/.venv | 1 + .hgext/hg-prompt/docs/markdoc.yaml | 21 + .hgext/hg-prompt/docs/publish.sh | 6 + .../docs/static/media/css/layout.css | 182 +++++ .../docs/static/media/css/pygments.css | 61 ++ .../hg-prompt/docs/static/media/css/reset.css | 7 + .../docs/static/media/css/typography.css | 86 +++ .../docs/wiki/documentation/index.mdown | 14 + .../wiki/documentation/keywords/index.mdown | 183 +++++ .../wiki/documentation/samples/index.mdown | 63 ++ .../docs/wiki/documentation/usage/index.mdown | 53 ++ .hgext/hg-prompt/docs/wiki/index.mdown | 28 + .../docs/wiki/installation/index.mdown | 28 + .../docs/wiki/quickstart/index.mdown | 56 ++ .hgext/hg-prompt/prompt.py | 600 ++++++++++++++++ .hgext/hg-prompt/prompt.pyc | Bin 0 -> 20354 bytes .hgext/hg-prompt/tests/__init__.py | 5 + .hgext/hg-prompt/tests/test_branch.py | 41 ++ .hgext/hg-prompt/tests/test_node.py | 73 ++ .hgext/hg-prompt/tests/test_none.py | 22 + .hgext/hg-prompt/tests/test_rev.py | 55 ++ .hgext/hg-prompt/tests/test_tip.py | 77 ++ .hgext/hg-prompt/tests/test_update.py | 132 ++++ .hgext/hg-prompt/tests/util.py | 68 ++ .hgext/hgshelve/.hg/00changelog.i | Bin 0 -> 57 bytes .hgext/hgshelve/.hg/branch | 1 + .hgext/hgshelve/.hg/branchheads.cache | 2 + .hgext/hgshelve/.hg/dirstate | Bin 0 -> 200 bytes .hgext/hgshelve/.hg/hgrc | 2 + .hgext/hgshelve/.hg/requires | 3 + .hgext/hgshelve/.hg/store/00changelog.i | Bin 0 -> 7867 bytes .hgext/hgshelve/.hg/store/00manifest.i | Bin 0 -> 4707 bytes .hgext/hgshelve/.hg/store/data/hgshelve.py.i | Bin 0 -> 13498 bytes .hgext/hgshelve/.hg/store/data/shelve.py.i | Bin 0 -> 4688 bytes .../.hg/store/data/test-shelve-color.i | Bin 0 -> 270 bytes .../.hg/store/data/test-shelve-color.out.i | Bin 0 -> 243 bytes .hgext/hgshelve/.hg/store/data/test-shelve.i | Bin 0 -> 540 bytes .../hgshelve/.hg/store/data/test-shelve.out.i | Bin 0 -> 1110 bytes .hgext/hgshelve/.hg/store/fncache | 6 + .hgext/hgshelve/.hg/store/undo | Bin 0 -> 175 bytes .hgext/hgshelve/.hg/tags.cache | 2 + .hgext/hgshelve/.hg/undo.branch | 1 + .hgext/hgshelve/.hg/undo.desc | 3 + .hgext/hgshelve/.hg/undo.dirstate | 0 .hgext/hgshelve/hgshelve.py | 661 ++++++++++++++++++ .hgext/hgshelve/hgshelve.pyc | Bin 0 -> 22530 bytes .hgext/hgshelve/test-shelve | 73 ++ .hgext/hgshelve/test-shelve-color | 45 ++ .hgext/hgshelve/test-shelve-color.out | 16 + .hgext/hgshelve/test-shelve.out | 143 ++++ .hgrc | 4 +- 104 files changed, 2927 insertions(+), 2 deletions(-) create mode 100644 .hgext/hg-prompt/.hg/00changelog.i create mode 100644 .hgext/hg-prompt/.hg/branch create mode 100644 .hgext/hg-prompt/.hg/branchheads.cache create mode 100644 .hgext/hg-prompt/.hg/dirstate create mode 100644 .hgext/hg-prompt/.hg/hgrc create mode 100644 .hgext/hg-prompt/.hg/requires create mode 100644 .hgext/hg-prompt/.hg/store/00changelog.i create mode 100644 .hgext/hg-prompt/.hg/store/00manifest.i create mode 100644 .hgext/hg-prompt/.hg/store/data/.hgignore.i create mode 100644 .hgext/hg-prompt/.hg/store/data/.hgtags.i create mode 100644 .hgext/hg-prompt/.hg/store/data/_r_e_a_d_m_e.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/.templates/404.html.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/.templates/base.html.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/.templates/document.html.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/.templates/listing.html.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/.templates/macros/html.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/.templates/markdoc-default/404.html.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/.templates/markdoc-default/base.html.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/.templates/markdoc-default/document.html.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/.templates/markdoc-default/listing.html.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/.venv.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/markdoc.yaml.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/publish.sh.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/static/media/css/layout.css.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/static/media/css/pygments.css.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/static/media/css/reset.css.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/static/media/css/typography.css.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/wiki/documentation/index.mdown.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/wiki/documentation/keywords/index.mdown.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/wiki/documentation/samples/index.mdown.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/wiki/documentation/usage/index.mdown.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/wiki/index.mdown.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/wiki/installation/index.mdown.i create mode 100644 .hgext/hg-prompt/.hg/store/data/docs/wiki/quickstart/index.mdown.i create mode 100644 .hgext/hg-prompt/.hg/store/data/prompt.py.i create mode 100644 .hgext/hg-prompt/.hg/store/data/tests/____init____.py.i create mode 100644 .hgext/hg-prompt/.hg/store/data/tests/test__branch.py.i create mode 100644 .hgext/hg-prompt/.hg/store/data/tests/test__node.py.i create mode 100644 .hgext/hg-prompt/.hg/store/data/tests/test__none.py.i create mode 100644 .hgext/hg-prompt/.hg/store/data/tests/test__rev.py.i create mode 100644 .hgext/hg-prompt/.hg/store/data/tests/test__tip.py.i create mode 100644 .hgext/hg-prompt/.hg/store/data/tests/test__update.py.i create mode 100644 .hgext/hg-prompt/.hg/store/data/tests/util.py.i create mode 100644 .hgext/hg-prompt/.hg/store/fncache create mode 100644 .hgext/hg-prompt/.hg/store/undo create mode 100644 .hgext/hg-prompt/.hg/tags.cache create mode 100644 .hgext/hg-prompt/.hg/undo.branch create mode 100644 .hgext/hg-prompt/.hg/undo.desc create mode 100644 .hgext/hg-prompt/.hg/undo.dirstate create mode 100644 .hgext/hg-prompt/.hgignore create mode 100644 .hgext/hg-prompt/.hgtags create mode 100644 .hgext/hg-prompt/LOL create mode 100644 .hgext/hg-prompt/README create mode 100644 .hgext/hg-prompt/docs/.venv create mode 100644 .hgext/hg-prompt/docs/markdoc.yaml create mode 100755 .hgext/hg-prompt/docs/publish.sh create mode 100644 .hgext/hg-prompt/docs/static/media/css/layout.css create mode 100644 .hgext/hg-prompt/docs/static/media/css/pygments.css create mode 100644 .hgext/hg-prompt/docs/static/media/css/reset.css create mode 100644 .hgext/hg-prompt/docs/static/media/css/typography.css create mode 100644 .hgext/hg-prompt/docs/wiki/documentation/index.mdown create mode 100644 .hgext/hg-prompt/docs/wiki/documentation/keywords/index.mdown create mode 100644 .hgext/hg-prompt/docs/wiki/documentation/samples/index.mdown create mode 100644 .hgext/hg-prompt/docs/wiki/documentation/usage/index.mdown create mode 100644 .hgext/hg-prompt/docs/wiki/index.mdown create mode 100644 .hgext/hg-prompt/docs/wiki/installation/index.mdown create mode 100644 .hgext/hg-prompt/docs/wiki/quickstart/index.mdown create mode 100644 .hgext/hg-prompt/prompt.py create mode 100644 .hgext/hg-prompt/prompt.pyc create mode 100644 .hgext/hg-prompt/tests/__init__.py create mode 100644 .hgext/hg-prompt/tests/test_branch.py create mode 100644 .hgext/hg-prompt/tests/test_node.py create mode 100644 .hgext/hg-prompt/tests/test_none.py create mode 100644 .hgext/hg-prompt/tests/test_rev.py create mode 100644 .hgext/hg-prompt/tests/test_tip.py create mode 100644 .hgext/hg-prompt/tests/test_update.py create mode 100644 .hgext/hg-prompt/tests/util.py create mode 100644 .hgext/hgshelve/.hg/00changelog.i create mode 100644 .hgext/hgshelve/.hg/branch create mode 100644 .hgext/hgshelve/.hg/branchheads.cache create mode 100644 .hgext/hgshelve/.hg/dirstate create mode 100644 .hgext/hgshelve/.hg/hgrc create mode 100644 .hgext/hgshelve/.hg/requires create mode 100644 .hgext/hgshelve/.hg/store/00changelog.i create mode 100644 .hgext/hgshelve/.hg/store/00manifest.i create mode 100644 .hgext/hgshelve/.hg/store/data/hgshelve.py.i create mode 100644 .hgext/hgshelve/.hg/store/data/shelve.py.i create mode 100644 .hgext/hgshelve/.hg/store/data/test-shelve-color.i create mode 100644 .hgext/hgshelve/.hg/store/data/test-shelve-color.out.i create mode 100644 .hgext/hgshelve/.hg/store/data/test-shelve.i create mode 100644 .hgext/hgshelve/.hg/store/data/test-shelve.out.i create mode 100644 .hgext/hgshelve/.hg/store/fncache create mode 100644 .hgext/hgshelve/.hg/store/undo create mode 100644 .hgext/hgshelve/.hg/tags.cache create mode 100644 .hgext/hgshelve/.hg/undo.branch create mode 100644 .hgext/hgshelve/.hg/undo.desc create mode 100644 .hgext/hgshelve/.hg/undo.dirstate create mode 100644 .hgext/hgshelve/hgshelve.py create mode 100644 .hgext/hgshelve/hgshelve.pyc create mode 100755 .hgext/hgshelve/test-shelve create mode 100755 .hgext/hgshelve/test-shelve-color create mode 100644 .hgext/hgshelve/test-shelve-color.out create mode 100644 .hgext/hgshelve/test-shelve.out diff --git a/.hgext/hg-prompt/.hg/00changelog.i b/.hgext/hg-prompt/.hg/00changelog.i new file mode 100644 index 0000000000000000000000000000000000000000..d3a8311050e54c57c5be7cfe169e60a95768812c GIT binary patch literal 57 zcmWN_K?=Yi3zQju0B(`ficg=*D8DU|n zDlsAk{s$Ix?NC+fU(oTkB369KcXCidhUk;ud*6@u*)N`5U)}sYxP5XNoc7LF_m{tq z-lB$&A#`|#Q0xDPi=!QbKh;EOY6A^3Da0p&fJ*f zLoNg5QWlVJP8#qb1Mz$Y;#Uue6;4G$nzXa$pj|7pYEsR2QxZ_@`bxQyD54z`L9Mwz zz+Wt9$uv#u7-$~Q$3-@0K-d6;-7!GR6%#TMU|q2ReF0LhBzYcXRC}JSFcSk~#m-uH zq^M=VaX59e z9l`nBr@h^GANQsv|Ab?(p|~)b3foHOJuvQHsi5NJLI)_N2er*6IOkb)wU7QaRF!04 ztIoUu#)dV3GLtz;%1c_`MC&<7Hm&5oXLZf~1!%fL@>FPOU~FE{FF=-xY$EF?R7H-8 zz_?Zdc(1@yEMpTmIZhK`px4vfW)n1IToOPQe*jVrSMy8c;p8={%42Asfn=*FSCi;m L@K9nATi6UgnKTxc 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 literal 0 HcmV?d00001 diff --git a/.hgext/hg-prompt/.hg/store/data/.hgignore.i b/.hgext/hg-prompt/.hg/store/data/.hgignore.i new file mode 100644 index 0000000000000000000000000000000000000000..ced024ca09ff2e0e8c0cdcd549bfe32840099c80 GIT binary patch literal 268 zcmZQzWME`~01+T13}rL?hl0s|Qx^|#0o2g z^ql-8E-k%+%49CEJjgT#21Ov&0J9hvTtPI**ycBG)1Ta#oE2Zlb>_HoW?ov{CtIi* z7zJ_%2#coVCl~AMWt8ORa6y5sOC`( iE7u>z2|IthE`X|mQM^C~2y=7kxdg`tm*f|vasdFA$3Ywb literal 0 HcmV?d00001 diff --git a/.hgext/hg-prompt/.hg/store/data/.hgtags.i b/.hgext/hg-prompt/.hg/store/data/.hgtags.i new file mode 100644 index 0000000000000000000000000000000000000000..88161f5c154cede873eb7b4ce86066c6d3499806 GIT binary patch literal 231 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 literal 0 HcmV?d00001 diff --git a/.hgext/hg-prompt/.hg/store/data/docs/.templates/404.html.i b/.hgext/hg-prompt/.hg/store/data/docs/.templates/404.html.i new file mode 100644 index 0000000000000000000000000000000000000000..c92b8086488e2fb5d69d79b2f3fd4d3c6a61d73d GIT binary patch literal 106 zcmZQzWME`~04*S;31z$ehk^%BjDLLmSs~5#x?lP2F8f36C6l|LYQR)!wW>mDMM-L2 lO0j}^Zeme(N`A6#N@`kSX-U~%HB0#~K`L57}CHDIc=T2&#nq9iph prC32dH?b%?B|lj=B{eOvG^a!#$S%!I%`4H%D9O!HS5U3x0suOjBY^+_ literal 0 HcmV?d00001 diff --git a/.hgext/hg-prompt/.hg/store/data/docs/.templates/listing.html.i b/.hgext/hg-prompt/.hg/store/data/docs/.templates/listing.html.i new file mode 100644 index 0000000000000000000000000000000000000000..b05fc48a08a840e2eae3b7f329c8a1d83b6d7193 GIT binary patch literal 110 zcmZQzWME`~06ie33uU|ghXUJw8yBo+Yy8E3ty}tA(1!J{b9t(uYQR)!wW>mDMM-L2 pO0j}^Zeme(N`A6#N@`kSX-f}jqrcNWxygmEyl+^U|KDT{8ds;?Jv6)$Nanv5} zm5Z-G75i}O@S7*ko6KUHiZfHzw6mtGx{0MaY_a|Ez~t1DIjQ*t&z`b`ym!0F&ynFV z{T=^-%-yt>C-?c(_PQf0`h)HWpIA_HOQ7Yu un`hu#U3N8Q_&Nklb2vq~7D(0y6Z_GPv zAmChH&pPqI*)+x2s4ZQ``y#vj8gu3vl#^?6@+S=HCMb_-ni6U!WkxQDJSc=1D-}>kfHFKBHf-|Dec6oTN PU;bf^)-C&~`B6~-Y0-b9 literal 0 HcmV?d00001 diff --git a/.hgext/hg-prompt/.hg/store/data/docs/.templates/markdoc-default/base.html.i b/.hgext/hg-prompt/.hg/store/data/docs/.templates/markdoc-default/base.html.i new file mode 100644 index 0000000000000000000000000000000000000000..c89d05cccede259b3c3e121f39b43dcfccd04b55 GIT binary patch literal 735 zcmV<50wDbW0RRC20000000N%?00wLT00000002h+|NsC0|Ns93Lw&}^uANhdy&D=K z>EnhxlNT=l00000000000001ZoTXGtmM6#eo^!9y{UB#|c?MIiDj|yy1^xj7UL=x< zVicm=!CUVLokcyeb^f70_;ParsW$#Mw{I@r_W^kre>&`Ad_Fjb&+i6Tmk{^?#uwM9 z2j)Ym*5wJtv)Rm_9r{v@@Zcl9vlKyKLCdqxG(#pzLv9i(s&E4~I6gjh2xOg3GHP?= zg+T(4lv5TpVM)$41&jCikBOLus4ol63+)Z+k|RjmUx;W~W+I{5Jl*lWGPI|Vq*PU0 zhwk-&9jl|(LTB7v0L*tl3}J63#=$vgs`o%1fyGXH_kXe}qtA<%UxM~aqd{S1<_9$85B z1O>s%&apqSWOdZLFK(hHd0fG&M8<`QDF_y#SQ(tNqiAI|4rTYRr5Z{FwgL7bRead= z$v?~;cN4ks3q!b;1>fY=Jl#?@9kq#sXVoJ}LL2%J8Hxv**hZT-wuTi&-53PZ$mNzv zS^A1kMZx&pfr$aT+riQ6(^XGze$^v3XR!)BFcI7ll3*iy1Z2zez?`-_;)CaP268Qi z8m%3OluOIH%3~F7XcXnD(;Vxq@$>?D==#Jq+07ZP($jV7 zjdI_}8CRS^T;F#=yJ};h<4H0$V{fr zm59z2uC`4)PhTvMDsbNFZ>1VrbZgrB>nhuFoV_1bwnm2}O;48J zwsX&sk`Gxutut7z>fgQ;ToFAlUQ-|-``sPA_m%3Ovstrkre1Jg{cnPEcIxKSnFhi9 zbKm^EC-s=~Tt!@!^CW|}XSmHP0tITLbXMFbaXhAOogBA>hvv8HDIbVH?b%?B|n)9 E0M?Eb?*IS* literal 0 HcmV?d00001 diff --git a/.hgext/hg-prompt/.hg/store/data/docs/markdoc.yaml.i b/.hgext/hg-prompt/.hg/store/data/docs/markdoc.yaml.i new file mode 100644 index 0000000000000000000000000000000000000000..f3b23ddf2d4ea8fdb239d01048d708c3dada3d29 GIT binary patch literal 546 zcmZQzWME`~fG-RTjCoMD>whS?toUMi(BoC-!@T**>pTQ+rSZ>pgQ@{j6>~!S&*rr% z2(*5;VJ&>@)>C%5Ej%-i=hTAWpN0l8Z*Pl7?cSlt_-xL@nlqi&Tk%FrBc_^a*Zh7|UBEHNy0i61;aoxk_8Z@TWBee<;5ef^c7UD46y5aH8OH#O#F zaIJdT^+O9mg=oEQ7J}c`HY806$;vQZ@&C?!#>RD++-tzoeR7- z1e!TcbXul-ImM}@OJ%=Smd>x!3f`5Q7P>a|iC+k@zgoz3x_KkZN6wAQ&cE3DU+pZ6$^D_dZ9Wb0qXrxCR-V2=Ys3kbr1VYUR! zVqgG=3n?+bB;_3 zxjW^Ik~XWVt;GI_&ec0qHmVp)YB4_4C@f^$`jzRUqQbTZTDojmKEB>MXEiUjuGkRd z;eAHa&vjzsY|hCn48KpRy$2c1=moYw0?5h%vltj+K*Atb39iUcT-E0Ily5~Zt3-P7 Y+b64?d!TAylq8U00_EHW(mz0K0Lbyp1poj5 literal 0 HcmV?d00001 diff --git a/.hgext/hg-prompt/.hg/store/data/docs/publish.sh.i b/.hgext/hg-prompt/.hg/store/data/docs/publish.sh.i new file mode 100644 index 0000000000000000000000000000000000000000..bcfbc3428abec34acb544c9b7ace0a51b08e2946 GIT binary patch literal 304 zcmZQzWME`~fN4PL4V3Nr9|~qBR_t8ucwkG`x}+PQB>%r$yY{6NR1KJ_nA6&C%g3ZB z&|2+hc&v$Q+4j#|YH|z_Ognf4Bz(4fc(blGN^*C2&HMcQhb^scgxZ_*kYp~Nm{$XGM zx%M2G#lR2)qCp;e7(93Nyd(AXk5{>Dxz}98-o?7^GgJ+X5(P3GftW8hu_!wwKUpEE JG&3iK3jnJ9bKw90 literal 0 HcmV?d00001 diff --git a/.hgext/hg-prompt/.hg/store/data/docs/static/media/css/layout.css.i b/.hgext/hg-prompt/.hg/store/data/docs/static/media/css/layout.css.i new file mode 100644 index 0000000000000000000000000000000000000000..90879106de833e1d4f511986036b6220b8920b2a GIT binary patch literal 1164 zcmV;71atcU0RRC20000000SNX01GJq00000002h+|NsC0|NsA#vMG2^@{j@?Gpj^o z3d8UO5fqUC00000000000001ZoUK;dZlf>|ecpV9rD)#*f{>sFq`p+@e;91Qs==%= zO|z@~``YGab4ge2CL&7gxt*CaGf5b_9Y7&U3jXYVBrtu;IcqEAq>M5if&K9qzCK;z z-H#IToKz9;xbJp|yzdi^Axe2$CXKelIKtdXm=LUtz^VQK2sQ;q(qec% zhv#^dp*Rx}@TEk`ixhBWmzUKt^|o90%t9DUm&R! zmd?qD#dD97aLOuyE3uKh&PRcJ0G{`AEoSzPc}Cea0tG<`S0)U90AYU4e9rO-jYJ7n>%ilc)SbH2)d$eh14t-K-+r}BV5Lq; zg`F{3?vrUj+w_(e{mvd#`a{XOjkr0aawA2y@qnD$XvlvpdBs)F|M^sC9&{Yu?oj?P?PSn z(tiG?{utj>l%R)@GK9By5~}w)RW6r{S@>i9p;%E6ft{v?sgCQ)VXeD@V=%huO?6RQ z6W0h~ytgb$JI-Jef@R>N*38M)i0{aUaLPCogh>ff6_^vD9k>rN6J+Y$Q9uvLOwLQ^ z+V^!DLWFOQN-lA@f&A8Qf zv-B=tLa`ZC53)NKga+b(_4+IASeZhtzs5!I`KwH%WCsJzgglB#2tc$COq9U)D{AT0}K7!)RfFb{p8|e{hY+g z{L&IVAX7n0p9`qH8i?mWjoJsq&wyBzvmh}gB{MJGO2HsCSHV!vG&R>6sF;x#f*E8v za}$fwGxH$wFszGEs0_qbV3XhqL2?R-r6u`b1w}yIjH&=EsbCB>VHyx`2P%-q;ucg_ zG5uj+VCDoWZ=5(3eebV8+P6xjZkkLx*{AtzqRlo@6K$W3 zxdT>=jchZ?Xx0B-gU!UIz=RgRp>vM!_jQ~z7X2S3m^@}uR6Ko01QYTy`fF!CLZTmU zVqyU8-_NK%(U0i;+h`?<0=SOezJC*glpbn}>hJG9*)3X_V+A%+3fa&fJu)&E)a0Gu z`rQ-IEZ3J&B3Nok|G?o%$h4sekMwV8D&I z(gy~Y5!IMc5)w8=nOk&_yzQ^jFPX~nAXRm;2EAz6SAbI!2g|1cfAPyz*Ia=-x*-PQ z+oEqPT~@XPGe2=;c9Ej_Nz3k}C`w0HZN!G*_gae9k1DY2RdKkllH3o44nlE`)*a^_ zBqmVzknIsNxk=)c;7ViHqmSuyfi)0@O)pWwtp=a2@f8=KO5=)ECYRmv_U47w)XKPzzoBoqrutyH(6ggPxz7a3W9{=@;P(tIPtdm&CogQ~ zvF9c=r!K$23E0WcgQkPe=gGx5HS9R9J4J!~qIkfr%=UqOv*R*tQ2${`apE?acmV@Htz}~q^)OWGQSbtLGq^XG72A z5p!;J-tH6G(}zQ1yI!$xrZ#Pfs}GX{<2`Pb|F~VC*>T2nDTg9)p-9SC>?(it@BPxP zx6Zt8LV1g7pLvAz6(jek@r8-RJ-hcb3f~LM-dnGm73anlWq&#@;v4tS{0RWcFI|_B B%pL#$ literal 0 HcmV?d00001 diff --git a/.hgext/hg-prompt/.hg/store/data/docs/static/media/css/reset.css.i b/.hgext/hg-prompt/.hg/store/data/docs/static/media/css/reset.css.i new file mode 100644 index 0000000000000000000000000000000000000000..fedd36393b08dd246763451dd8bdc48b05b79da6 GIT binary patch literal 564 zcmV-40?YjX0RRC20000000Hy>00XQ500000002h+|NsC0|Ns9G{tcQd9vM@-_#BG# z{T-dvjH1i{00000000000001ZoP|=$Zrd;ry!$Iy1V!3lEi35@rA~byK!M(R>X9N> zB9Rp-lPfo>pnorAD@oJmZ85~m&dhRmvH1}CF}l{Wc&49=tFn9x;;XVDJQ1I~F2p+` zaePlAV#0VpQ)H4sK~AGjXvE+RM!^=v`!65G=MyY9mbsU^oxuZA=rI=KB3pRm-8i`2 zN-y}9HwTQ#1uw-_@uny@7rRXEXwrc~lxJmGR<+VMZ47ypJiETWuI4(J5sW*4AutTa zz(5cP$br2Cdj<9d*q2~mfqe~qM9|qYG$D4-I3$yhfv`ny!1;b)s0ZfYf$^4ALe)0Nu!F=g_;zt}P!U4UOC9~x1kc;VBcXKOVsu;`p>Mbx?H-#A zQVyD?CEwPd4pA+8qz@jencPG!-3gtrJ11;UBt@?ElCa5Yzg4{YaNkj0mgUn&9(*oc zQ8n*njrjlwd#M`6nD6TuJWLN=;%G(K+o82mBv|C9V{^>pz|q4N);cUx-k Cx(-?Z literal 0 HcmV?d00001 diff --git a/.hgext/hg-prompt/.hg/store/data/docs/static/media/css/typography.css.i b/.hgext/hg-prompt/.hg/store/data/docs/static/media/css/typography.css.i new file mode 100644 index 0000000000000000000000000000000000000000..f386bef1a690c001379dd665d2b002330d6aa47a GIT binary patch literal 1004 zcmZQzWME_f1EzKc2G;!$HiO%LC^!^gqjTG;J$Lhk8Q&*gVqDjfpC1HO1EwnGw1#;5 z-*ynNn;dV*`>OR;ql$x+yX}@QM;WVDoLZW-wAc1n^fl{uRdZTG{=T34RhdO7#9O=f z`R`{NKi}vnX0ESd*No%~o|;`O@A%(%7VD-y(U|1czYJzw4ELNU7UhJAL~EnB)UPkzU}N}skEmiAXi>U}S~pLzJp^VxOB zVqE^pR~N6yX*&19Y~mvW)ufL<=C^QnXdYzHy3BQj(^LHn@6q!8+8?iJRrsB(RZm|r zDXQ*L^YynmB7PCN)8}7nk}WXWpmm%t(`)PkJLFSU`!#`7rCcl{MbQCtVe5rkbaCp^Ulb z;fo#R8_qmYN{n0)VKiaG!%Hg{^$AZ;-O(=mYzv>Y(w+;Ij(t;~-g?$`?Uuy zlU>{RS39lJKWZgCXYVJs*znu258nK|?mR1|NMg6v{P!h04I?!wt9A2BKgsiPT>B47 zi=YGy1bV<^yco=4U4I1GbS&2rbp`?RCyRKvv4j1X<^z5)>sa-Z3&pg zzz`3l89}xsY80i&-e1AG-*wu9McZ>P}uDX>^y%abN&d=gzc=t)` F9{{P7!=3;D literal 0 HcmV?d00001 diff --git a/.hgext/hg-prompt/.hg/store/data/docs/wiki/documentation/index.mdown.i b/.hgext/hg-prompt/.hg/store/data/docs/wiki/documentation/index.mdown.i new file mode 100644 index 0000000000000000000000000000000000000000..4c3354836c6a657681798b378e6d9b7ff76f725c GIT binary patch literal 534 zcmZQzWME`~fNmgl70Pz~4+X}e?_TZ|+jc39(dYKs$5Rj2CWtjb)qtsrIkmmke1{AK zTz=ag^~zhIV8-%qyV`UGgVUdsbw4(J3+RWc0aF!oRJ#oM8WeaKW>&fii^)z|Kf^$ZU5R%V zhw2s{yDR@^94I&(>!wW;NYGBL`smVV$~;Fh>=LWpBWCWdR*10ku2^NHc;QDD>OE`O0~j1qYt4 zTiNSvcf$G9l!s6?V5(wHazes{)P#f&Oi8J!PhVVkbmYsG2;RR_{ye#K=gOW*M<$*5 zWAis?!is&%HW`TrL~07GXGl^ozh%93lg)mOr4r8WW+6<=UP>`DE6Y!~#+=3FcSiSw aXDElpsq?xT2d_l&Oly0=!tn2qt_%Qo)7EqV literal 0 HcmV?d00001 diff --git a/.hgext/hg-prompt/.hg/store/data/docs/wiki/documentation/keywords/index.mdown.i b/.hgext/hg-prompt/.hg/store/data/docs/wiki/documentation/keywords/index.mdown.i new file mode 100644 index 0000000000000000000000000000000000000000..75be94947611a9808dac0548d1910ac8ef4af5e7 GIT binary patch literal 2894 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 h%$P(S%R!VHYf8cL1kH|{f786NO2S#&!C zYwFrq@1PQT0}I@&jLqE{%o-0H(*T{DiJ96!ZuHQ@N@x$>K;sa6iB%$$0^z~v3`g** zlv%k=!tq1eE~L&mplB52Sfi#bqd6St+@ersb>dF>bds5>GMa9qaDGMA0!YNRJzkd;Eu(Sh8R&5^mZn0aG2 zF+se7_!MAqDV+>F2|sk84X;KlUe<6TM?|?Sz&2WQHfk$0buK)nbOV=^o4}keY5SDO z`Pniiy26!Qa2sW4Rir`WdAmgP(yE2@X*`+i=eQi}MyV8zhlGm9N1c(+DF3I~6sS9H(;U%j+VtxddnHvXXGOa>liE-kl{bNRDQnt=1uSW|70d=mCd3t31@(tMUr24Q+lS zHU;(I6(fA%inna9HJa8Fu|P|yT}9rG_6!s{GVGbRjg!l+TO){O!uA9Uws=z{v6I0~ zga*Sy8@xMqI;0}+CASDK5+d!8o%D?4cgO5Y6PfOH5keM-pEK_8o_Ldm{KGbS6aKre ztm!_ZcrD;^y4M{Hni(w^iv~7J*~vuGoh|dk!vFvP0000000000 z0C=1g%CQl`FboAyL74?;e;1(e9&8bT z0uC^mJhiJEqH@d~=6}65wp&H$hNC7)(1JG1)K)BY#n>{3EEDkZanHz(?hlFj3#T-F I0c46JkYNq^mjD0& literal 0 HcmV?d00001 diff --git a/.hgext/hg-prompt/.hg/store/data/docs/wiki/documentation/usage/index.mdown.i b/.hgext/hg-prompt/.hg/store/data/docs/wiki/documentation/usage/index.mdown.i new file mode 100644 index 0000000000000000000000000000000000000000..56310d22a89fd79468ae4658187cb2538bcfa1bb GIT binary patch literal 1147 zcmZQzWME_f1IBF(3@n}yHiPSbDDa6?)r@(=QP=x5V%uYld0Y>9{whP&fT@Z(TZ0e! zDI4yL=~ad4I&%UzuINaLK2Z0H~BvSrSi1us&Iz2>Cv7vKLQ zu)z6UzwUFnZ7lk?d6%52)zZIEbU*pcf(Lyp0!NPfDomJE%DiGB#|(34|BVfdl^U5E zO#ALI{#ojCJveH<$=mIUYzrNf%pIz?WIUF6ku_`CQw^CFa`gw>xpru&JYCh6`}~e= z@A^5`sht=2EPFPby0Pj&*wZy9G(wEzk2)+n@`(F+pzyUh)jIPYv+jwqetme0ox6pG zd(QU!$rCoO?z?8ua{iD3$6>Mm6HPn5wI(f})braV+9d8fyPp~db413omzKhF?(Ugs zAD1Or@m28*zs{>!jH{T-7StX(wPQBR!K8zRJ>9H7N?FeoN=Ch%y{3JE{>)7-y{k=@ zr@h)b(doG=tIXM|)YBFdqf%GD?yj60^g(x>-lwm}|6OxWxM=)&-SIuYS3VXl%lk7Y zsBrovnSCE)9KN(B`nA^W+4}dtc)^*OKkqd2E#r&0(0ugl?d6Mie){u;M|OLu#p~(Y zX9@)EshjJ+-y!Eo{_}~`6;;o>D3m~%6pTBq`tO$9|AD87Nf02u4` zU={;I42T9rJo{d?x$j?zu-(|PXP;K=)336n;n`3%P>Mwwnp#w%vr{X}^NUi7W33eQ zQ}UBbb5rw55=%1k^Ymdd`XEh=&%oqW1_stkP($KC!XW$jmO6H3EPPS@_nEb~|2K)d ztJ9a*LDhh%iaE8xu~~Nv1j6d)vFvr2-?sEZN@6jC@TWPiofs)3rMX+} z$n~V;Ws^Pmdcu}~X2(l4v)<3ncXR6Scj|cmXL)Y_hS&T8i{zbeHGX@%B8J;E;L%lQ?X+wY7RmmY&{IC4=3$Fet7_EG^NT#C+&M*O z-)uZL@um0;?U#2XSspKVK1t2uTSWi2V^@#O(Vbo_KfO-Y_f_H-LGCSLlWsV_nz;7e zrpvDLH>vp+B%TcjxaR(I#Uf47%c;t$AFiA9e(SS&u76wqgOS08s-%Mx+Z$br*ZS++ zdHL^WW$48GB;7Kt+ab*VpZvUS8xgyIXN|4;zMVh)lXgB`n5wKXX`B#!_9rU?fo literal 0 HcmV?d00001 diff --git a/.hgext/hg-prompt/.hg/store/data/docs/wiki/index.mdown.i b/.hgext/hg-prompt/.hg/store/data/docs/wiki/index.mdown.i new file mode 100644 index 0000000000000000000000000000000000000000..6487e99643a81ef20d4daef8b668fd920fa5b614 GIT binary patch literal 1065 zcmZQzWME_f14cat2Bs_so5A%z6wIDh`)~F?d4+4b;&JExg>ta)PoDr)1EwnG^ak4c zA2txU`&YY9uT`-y(IHFKtmVo==2sG~t7gk=Jh-vBHuL5F=Rvnj99 zaLwHb6;}NM(zXBYHgqmXXkD1m94Pjo`-1CZ*$H7Rt8^sG4X%p*(O4GnV^`QZmQT!g zXY+3`-eJD3siC*Ot;V9EkmpL*4FlGQOD0a87en~^f9X0&|IC!p7c`Bk_VR2!F->pM zrf(YOHpi&!Z_`}AR?{xQSL=c(n{ZszwwiCQ(Tf+`&#n5UQN+0Ez2_`OrQ-*c@1?UJ zc^4n&D?jnHqDpIoIOERRx1K!LcbyDlzp-kC|I-6;(zi{oPrbW)>Cd%lSz2{(PyV&pnNwPrbEE##`Zp)%{$Pu|er^XS z$Uxx?1U|sfUI}I~F!+OLP=GtNuDH;!K}^-@^|F??1*wyZna)FF2coiKPI5xRl~jgg zwuc$d|4g}Z<3)sCtj2>!OkQgn6WC-swoG+$^Ym<-y00!M%`+&os4S~9t}bv_U13;X zo!hQF$H2Ng$4)zOhJO!5|AI_ptOA=`1awOSn8m;l0}=+g#X`g2%tF)qwKrmKr10KK zzH`n_X(Ln(m;$?{Bq1T8=Int37ewC943C*KWAfyPNi*k*XD?kazw^lT=Usd{XMN6v zap-yKXfd7?Yua&CK`!9jS`&5mgR1sBP0UT#v*bB&ZDI(RT3qL)6=1V?$&v$J@%EaV zRaTl(t7-$J{cn}Pp{!A_91jBmh}_W)g74`wkiBmik9kc)30tUG`B^5bvz zX%Y&r?#atZ#NCMe7>IOo#rO%luq&Lr4{Cz%xlga*4!cM zrV!X;a_RDHPQ^D)9P8&jpK`fwZCKcR1>P3n>y@jWxPQD`w`LkzDnz>^B%-J*MMXlivnKgA*Owbzs>&y7B#xj_A QcWP8mG19y_c(YYPVAs5laea&Ar$oKxYfN@HVBEIEc6XMfoo0#V zU-zd+HVC9d_Pm{=`E{P4sl_6`FRpi0zMqz_jz4-F6tbY`0D@Xzr09WJ z3=ATDXS%OtViHbR*r}pwP z8S=0NI9I9)*9dRmZhBYJ%4(PN^mt$rx1m5a)6>av7auy8*a!yhEfh28ie$64;k@Sk z!uIhio0@2I8)tbYbCHJ^C%pOU&VPK1R)=Qw6xZ8%i#M${&G_BA{pbOoAg*5 zVq*m$P*KQ8S4hsu&r4OvC@Cqh($`PQEJ-R&&Q2}S%P&gTFV4!*&q&uTD9X<*DADHv E0DCuALjV8( literal 0 HcmV?d00001 diff --git a/.hgext/hg-prompt/.hg/store/data/docs/wiki/quickstart/index.mdown.i b/.hgext/hg-prompt/.hg/store/data/docs/wiki/quickstart/index.mdown.i new file mode 100644 index 0000000000000000000000000000000000000000..203c6ec7d6058279fcbb7f4340d87101aabd13b8 GIT binary patch literal 1228 zcmZQzWME_f1E!S>46LglYzEi=P|#W{x`yv8d+g=Axd*)Dmwsb86`2QB1EwnGtPOde zecM3b@4EeuG+I?kR%Y6>-MVz}7@KxU$?qvGt{cy9?9h>XIYnp3&HMW%&oR+VNo{`F zocnjj^Xm8W-em{;6q@H@C1l>Ncx1a*Wduv8!kVeqHaIl(@(M^zSjHgU6PU($Z`sut zsSKu%TiiJ0PA_nrd1+VFq)l!6HDya4Xs2vBc5~N4Z$-Q5n)@bco7gg~ls%QioSbUo zxpw1>clOH{ypRVf7IH#>_Sqc1;>RtU*mczRHC<-x?{y-Kgm5@NNU-a6(~C~Bf_+i}H z-7LlD_8An!uZbwo`S*rR(e9?{iJf<6?miv(Zs!#<&qJ3sX6-5de!f&be#;x>=;9B> zdCd#omRRh$yX{<5RhodwrenFYW%nGsEpvoZ_f6o1`VVI&ddJ;Pe?F^v-}ey3>v!C9 ze{b~QQMmkc(!F*m+irQ*mmH39o|_%cuT}oW6BT`9xvfR)-H%5@m(=e#z1vCc-1W=B zU;lWAzghi{b*b@(1Es>pL;sy5!TJFBaazN{^%erDhD zkC#+-e~z;$O=0&a`)E+@nLKR+xAg4moLjsixPakIHlHDIb@PI5xRjpGLneBkI|o z5d(o%-X=Bk1=V-MTIMldxOj1GSeK_-=hi-Tss6}Z=Jp3XclwMK)b8o({NG#o`E2ny zTZ`xWa(eTNPt5R=;8-r8tQIt9=YlmKG8?8$ahf$@=e}=tiMmOMX~k& zJWjY~6yLciCS()m`Ag~Gakq@8GE<)NOzSFtw8hv$DcSyY&I8?74TdY+c0Gz==as*@ z<7V2*sNhIv>u2fA`+gU{t20fg+^BV?+2RfV lZ6DF&|9rMSO}2~Np0_pK&D_6VeBHV#{yS#>cLepz0s!NWF@yjB literal 0 HcmV?d00001 diff --git a/.hgext/hg-prompt/.hg/store/data/prompt.py.i b/.hgext/hg-prompt/.hg/store/data/prompt.py.i new file mode 100644 index 0000000000000000000000000000000000000000..4cc8fd8af64fb5773646f9bec0c51bc7ec9d10cb GIT binary patch literal 23051 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 Q?FIagtYu=5ViwQ<0CtAI2><{9 literal 0 HcmV?d00001 diff --git a/.hgext/hg-prompt/.hg/store/data/tests/test__node.py.i b/.hgext/hg-prompt/.hg/store/data/tests/test__node.py.i new file mode 100644 index 0000000000000000000000000000000000000000..293dc1d86318842f1c2332cde8be355e04dbed53 GIT binary patch literal 554 zcmZQzWME_f1IBp_4D2BgHbdBdC^)>b<@Q&eqM4D!8*YAVeZFwQug@?wV5Jpvj)t7h zYc>$r^I5docnOE9t((&;@h?}RLnD{yFmi54T|e6+^WR>x{(x0(0wP=OB=*FmUE7>2 zk*vRhvqdrUjdF9aZjg<8kKuW3EzK#tS^B|?nxZmV^tNR=w{;b9RK|5l7R=OG(`l_> zf1@g)eZmsOHerK9Ueh=gZ!=}@jNtHj*v{?p&NjDvzH4t;s>!N6*5_=iXYSC{xhL28 zdWm28qYUP{3;C{>Ueu&-;t3V65f4ojE)D70n{RyR;&!g3ADRWiw8JwDE@-GMekB%k zf_u?(TUoACJGb4wl>balo8^$p(nkT`CoTwVU2`VcGwNjWgfI`!x@C{!CTwePxxF|( zO8EGJYsT!-d>^#ARap8~W`8R^dM<% zA=Q5#Zgb>K`@dIEcIE0Pui93(OwPFYpe_0v??k>NpQ{Z&XD1w*+MD3}F7%+=)3a@} zUmW7tl6y#e`gglEpeO>xD-iGiW7iAJVqk~>(Vz%^;<1xuTavo(kDm_@*ngT~7Qg5i O8&nO9k^?d{KpX&DwCPj; literal 0 HcmV?d00001 diff --git a/.hgext/hg-prompt/.hg/store/data/tests/test__none.py.i b/.hgext/hg-prompt/.hg/store/data/tests/test__none.py.i new file mode 100644 index 0000000000000000000000000000000000000000..68f7ddbb9d3c0e0e0d524df40be582c31448cc94 GIT binary patch literal 256 zcmZQzWME`~fCCH+j9;Ma(Em`dPTc8tF2{wSB$Y$@$~U*aopf&3KByWnRWWDogo9j% z40zh!*LL06)%kDLnDhJ6 zC3vnEwy@L5?o?xhqKQj%g2254VSsQ#Z z?~sAO-sjrSf^Ir$WUcp@_>0x{YhG)bkdErM)PBa!Pw(gI=qzN_x+U|bVw!pWy&Fy) zzh)OPTdyk;pJGIYc@ma<+Bv8NkZBI>po<7RK}bx znaEIoEwDkROo1c%x=2eBW72WKYD4ye)#c}Q{Vyum7uj6X#rU_Psh0n$zE)P->WLv5 zK0CKWo1OUb;8YCH>eMw_UlxBnyiJ$AZOz85Pda|8TwlD|Xzt;hYaf05Q*DC2q%~}L z*D*t7y|k~k=#952`{gz~bBOqHDeug|N#AA(bg%KrnN=LfcDA@+%@XCv)|x3P3j$d3 z{#nejVV65O@mBxI0DoKaY#4Z}fLO zaCvLc^x8igTivJTUcA0S>ux~#c|BFJKO9E4E}eL|s@YOw6SG82==95rU(3y|`Pb$y zZLNDH`Q-F?o}Zif_pZ8ZxxISwyQVEG7fu#Bw;`XWW|EOlP0&Z~nv5y-pvVBlAQ12X uPk7^`|* z`7PfxEL`(;nZwCx2g+J3Ht_JtE{k@#&=Tz}vM=M*)Sru({QIN1rE9iwd3jzJxA%z^ zzM#KCQQhU+^EH#NeK2YMxkq#YU+$bE4`z8}zUeHyaBoJ?J%Rg9|EB+XlDc}M(7bKB z@2@F`vuSXL&&n-cvt(}glG|b_T>F3L?R{MF-!fuXLU+v1Ii-^iEb2N`{n9Ua(sPH; zg+b*X4H8rvB^;_X4EnB`Zd)05OQBl$YSfmWSx;W_7G9sjJK5&YL*DBB3ysewlx;k{ z^Pl??|K81W3m1N2yUjRT;I&S`s_tLB gqx>cJ=a)Zrs$cdUJ@VrGt-e$BYj(;X*sIMB0C+yl)&Kwi literal 0 HcmV?d00001 diff --git a/.hgext/hg-prompt/.hg/store/data/tests/test__update.py.i b/.hgext/hg-prompt/.hg/store/data/tests/test__update.py.i new file mode 100644 index 0000000000000000000000000000000000000000..cc6347db5b152a4cf64bd4bb445e119f7ce3f4b7 GIT binary patch literal 492 zcmZQzWME_f1I9HB44iKvY=+4HP%!mNsoj#0<%~`er_OL&IRDjgW19n21EwnGTn#=5eRw8cXD=# z<+Hxkn=YIecQ}!|Qhe3N6wl7f4@##jHu*9s+QjPYJ0XtqvyOB4+&CIwRjPc=AnB%2 zt9ARfR2wPB2a!T$VTZyX{Hl|GG*0)Dmy?IbFXVy!*{t_UoyJQ7;&6g>MT+@TD_6 zwzzM0E&B7K$2H9N|KuAM-HnWA4qsckQ?~HO(zdAc+rmp{%Pvi|J}{e^!G8NSNt>`k zy6Z*MY-;>fmsiYo5Or!4ozI>7`1^Opw@0E6zUJ0o>QgA_xWw4*bV2Hr_QDg~Ld89? zYK0pP{`%#y#`?(W#mapA&NdPLUEVtX{X$>MGjz{>H|dK0R<=x*)4x=%3&(QuUn*d- gxpGf6$E(2GYrceekbn5J;}g$xYCL1+7k{Y;0OZ2i?f?J) literal 0 HcmV?d00001 diff --git a/.hgext/hg-prompt/.hg/store/data/tests/util.py.i b/.hgext/hg-prompt/.hg/store/data/tests/util.py.i new file mode 100644 index 0000000000000000000000000000000000000000..11047294e82399d16e465a8187d7e7ad2ef17b15 GIT binary patch literal 1090 zcmZQzWME_f1I8i-24*)1n<4Z+6l~n;6jQ@haJBz$e*2$1^PJwjf~in7V5(wHYtX^I zW(9%0pGA*!PbfV(Z}u1CZ&yr?XlX=?8aeFx`&*WE(k-({;Zlivd%mYFShebXf|_v8 zr;z9c<_9VyGh%!eIR2b)>G6k`2hQnrtXjokxOua{im$w1lU)IHLl?~JX|k!o*qbMDy9cWGn%%Ekj|n5p&_@h0R=-l9!AB)^@Z!UEw^@@psEs!yOU<8OfXS+_%)q%ur3aGmSx1 zNk`S0>*wV+b!#GToL0yVTwFIdJIim|F&m>@k0w36wxMj_H?|v#8T6y?{;13TJ>{?{ zTmCt#wl%^b+&zcU-D^^7LBS4+DN9x@K zGh5A@2aau7dqwq)XPNAzr+bd*UJ2c(w$i**X#LWHjJY1-HXXe(v-^$XOq;o46K!{y zwKr`r_MGKd~$CoKrltTZ1 z?A&92n`K_n$uQFusojc8n@`_O^vYTv^Y(0@`mtwoOG^JGP4Vm7#dz|8$9FcTE|Ddz z6UqcXXb5LDeX`YT@4b{UdHE0hc{947m&~xe9X?GpF}v)=_PD_QIun#FUyoL~ z-^p&2`#j<4SDOjG`W=^!|8fh5}%XfQ_tX+}_Vbbfp)-2Utfcc0FzdByLv4!A#4{s>hArYh!y`bBd! zJMi#$)PEEC`MI%zVPW_SPOeAFS&rq?Yo|0-9FJSH|E;K0`0tAjPHJa-*c7UmT;v%J ztesLOc78`f&I`He8FM`=yo+O454_xKzQ@Jgw$IsgrJ|?zNBvTh*DK48{HjR&+U4!O zEq1-px%y+`s-2G8FY`Uooyq)h|5=lsQ}?;vzP<5dpZeq_4{xlhT$h^Ot;=LwBy%Ek rntyLqNZS@Ki_&Si8_QZh`BfhmY@UCqzARCq=-!EDjU(cE8NpWpGM4h` literal 0 HcmV?d00001 diff --git a/.hgext/hg-prompt/.hg/store/fncache b/.hgext/hg-prompt/.hg/store/fncache new file mode 100644 index 00000000..b34ecc0e --- /dev/null +++ b/.hgext/hg-prompt/.hg/store/fncache @@ -0,0 +1,35 @@ +data/.hgignore.i +data/.hgtags.i +data/README.i +data/docs/.templates/404.html.i +data/docs/.templates/base.html.i +data/docs/.templates/document.html.i +data/docs/.templates/listing.html.i +data/docs/.templates/macros/html.i +data/docs/.templates/markdoc-default/404.html.i +data/docs/.templates/markdoc-default/base.html.i +data/docs/.templates/markdoc-default/document.html.i +data/docs/.templates/markdoc-default/listing.html.i +data/docs/.venv.i +data/docs/markdoc.yaml.i +data/docs/publish.sh.i +data/docs/static/media/css/layout.css.i +data/docs/static/media/css/pygments.css.i +data/docs/static/media/css/reset.css.i +data/docs/static/media/css/typography.css.i +data/docs/wiki/documentation/index.mdown.i +data/docs/wiki/documentation/keywords/index.mdown.i +data/docs/wiki/documentation/samples/index.mdown.i +data/docs/wiki/documentation/usage/index.mdown.i +data/docs/wiki/index.mdown.i +data/docs/wiki/installation/index.mdown.i +data/docs/wiki/quickstart/index.mdown.i +data/prompt.py.i +data/tests/__init__.py.i +data/tests/test_branch.py.i +data/tests/test_node.py.i +data/tests/test_none.py.i +data/tests/test_rev.py.i +data/tests/test_tip.py.i +data/tests/test_update.py.i +data/tests/util.py.i diff --git a/.hgext/hg-prompt/.hg/store/undo b/.hgext/hg-prompt/.hg/store/undo new file mode 100644 index 0000000000000000000000000000000000000000..18e9744a7d7080535b091b9242f5a5129824121d GIT binary patch literal 1280 zcmb7DOHRWu5M|9>u(RL-NOZ}D3q;d+>Wtzao^eZVk6TeygrrHOEMmXUeBCr%55b~~ zR?$=Q+%z5n9gyX6G$5c=Z^?$3@z0fj<=e&Q?(O|!cRQQdu~vdUIS^$1+Ptb>yjy1M zfpLXWO^e4MD>O$e6zmGiLzg4#`$>7oLyh`k@BqchhBBs#4P{Lw8_S%^?v;JSaGbRM zSFT3*HtVUq6*dBE`$v*E{740Yw}!ao$MFj!oZtT ul > li { + list-style-type: none; + margin: 0; +} +div.toc > ul ul { + margin: 0 3em; +} + +code { + background-color: #f6f6f6; + border: 1px solid #999; + padding: 2px; + white-space: nowrap; +} +pre code { + border: none; + padding: 0; + background: none; + white-space: pre-wrap; +} +a code { + background: none; + border: none; + margin: 0; + padding: 0; + text-decoration: inherit; +} +a.code { + background-color: #3f3f3f; +} + +dt { + font-weight: bold; + margin-top: 1em; +} +dd { + line-height: 1.8em; + margin-left: 1.5em; +} +blockquote p { + margin: 0; +} + +img { + background-color: #f6f6f6; + border: 1px solid #999; + padding: 1em; + display: block; + margin: 0 auto; +} + +table { + margin: 1em; +} +table thead { + background-color: #f6f6f6; +} +table thead th { + border: 1px solid #999; + padding: 0.5em 1em; +} +table tbody tr td { + border: 1px solid #999; + padding: 0.5em 1em; +} + +pre, blockquote, table.codehilitetable { + background-color: #f6f6f6; + border: 1px solid #999; + display: block; + line-height: 1.5em; + margin-left: 1.5em; + margin-right: 1.5em; + padding: 0.5em; + padding-left: 1em; +} +pre, table.codehilitetable { + margin-bottom: 1em; +} +table.codehilitetable div.linenodiv { + border-right: 1px solid #ccc; + margin-right: 1em; + padding-right: 1em; +} +table.codehilitetable pre { + background: none; + border: none; + margin: 0; + padding: 0; +} + +table#pages tr, table#subdirs tr, table#files tr { + border-top: 1px solid #999; + border-bottom: 1px solid #999; +} +table tr td.name a { + display: block; + padding: 0.5em 1em; +} +table tr td.name a:hover { + background-color: #f6f6f6; +} +table tr td.size { + padding: 0.5em 1em; + width: 40px; +} diff --git a/.hgext/hg-prompt/docs/static/media/css/pygments.css b/.hgext/hg-prompt/docs/static/media/css/pygments.css new file mode 100644 index 00000000..b0bdc4d9 --- /dev/null +++ b/.hgext/hg-prompt/docs/static/media/css/pygments.css @@ -0,0 +1,61 @@ +.hll { background-color: #ffffcc } +.c { color: #808080 } /* Comment */ +.err { color: #F00000; background-color: #F0A0A0 } /* Error */ +.k { color: #008000; font-weight: bold } /* Keyword */ +.o { color: #303030 } /* Operator */ +.cm { color: #808080 } /* Comment.Multiline */ +.cp { color: #507090 } /* Comment.Preproc */ +.c1 { color: #808080 } /* Comment.Single */ +.cs { color: #cc0000; font-weight: bold } /* Comment.Special */ +.gd { color: #A00000 } /* Generic.Deleted */ +.ge { font-style: italic } /* Generic.Emph */ +.gr { color: #FF0000 } /* Generic.Error */ +.gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.gi { color: #00A000 } /* Generic.Inserted */ +.go { color: #808080 } /* Generic.Output */ +.gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ +.gs { font-weight: bold } /* Generic.Strong */ +.gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.gt { color: #0040D0 } /* Generic.Traceback */ +.kc { color: #008000; font-weight: bold } /* Keyword.Constant */ +.kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ +.kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ +.kp { color: #003080; font-weight: bold } /* Keyword.Pseudo */ +.kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ +.kt { color: #303090; font-weight: bold } /* Keyword.Type */ +.m { color: #6000E0; font-weight: bold } /* Literal.Number */ +.s { background-color: #fff0f0 } /* Literal.String */ +.na { color: #0000C0 } /* Name.Attribute */ +.nb { color: #007020 } /* Name.Builtin */ +.nc { color: #B00060; font-weight: bold } /* Name.Class */ +.no { color: #003060; font-weight: bold } /* Name.Constant */ +.nd { color: #505050; font-weight: bold } /* Name.Decorator */ +.ni { color: #800000; font-weight: bold } /* Name.Entity */ +.ne { color: #F00000; font-weight: bold } /* Name.Exception */ +.nf { color: #0060B0; font-weight: bold } /* Name.Function */ +.nl { color: #907000; font-weight: bold } /* Name.Label */ +.nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ +.nt { color: #007000 } /* Name.Tag */ +.nv { color: #906030 } /* Name.Variable */ +.ow { color: #000000; font-weight: bold } /* Operator.Word */ +.w { color: #bbbbbb } /* Text.Whitespace */ +.mf { color: #6000E0; font-weight: bold } /* Literal.Number.Float */ +.mh { color: #005080; font-weight: bold } /* Literal.Number.Hex */ +.mi { color: #0000D0; font-weight: bold } /* Literal.Number.Integer */ +.mo { color: #4000E0; font-weight: bold } /* Literal.Number.Oct */ +.sb { background-color: #fff0f0 } /* Literal.String.Backtick */ +.sc { color: #0040D0 } /* Literal.String.Char */ +.sd { color: #D04020 } /* Literal.String.Doc */ +.s2 { background-color: #fff0f0 } /* Literal.String.Double */ +.se { color: #606060; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */ +.sh { background-color: #fff0f0 } /* Literal.String.Heredoc */ +.si { background-color: #e0e0e0 } /* Literal.String.Interpol */ +.sx { color: #D02000; background-color: #fff0f0 } /* Literal.String.Other */ +.sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */ +.s1 { background-color: #fff0f0 } /* Literal.String.Single */ +.ss { color: #A06000 } /* Literal.String.Symbol */ +.bp { color: #007020 } /* Name.Builtin.Pseudo */ +.vc { color: #306090 } /* Name.Variable.Class */ +.vg { color: #d07000; font-weight: bold } /* Name.Variable.Global */ +.vi { color: #3030B0 } /* Name.Variable.Instance */ +.il { color: #0000D0; font-weight: bold } /* Literal.Number.Integer.Long */ diff --git a/.hgext/hg-prompt/docs/static/media/css/reset.css b/.hgext/hg-prompt/docs/static/media/css/reset.css new file mode 100644 index 00000000..4b1978c3 --- /dev/null +++ b/.hgext/hg-prompt/docs/static/media/css/reset.css @@ -0,0 +1,7 @@ +/* +Copyright (c) 2009, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 2.7.0 +*/ +html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var,optgroup{font-style:inherit;font-weight:inherit;}del,ins{text-decoration:none;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup{vertical-align:baseline;}sub{vertical-align:baseline;}legend{color:#000;}input,button,textarea,select,optgroup,option{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;}input,button,textarea,select{*font-size:100%;} \ No newline at end of file diff --git a/.hgext/hg-prompt/docs/static/media/css/typography.css b/.hgext/hg-prompt/docs/static/media/css/typography.css new file mode 100644 index 00000000..cc212f4f --- /dev/null +++ b/.hgext/hg-prompt/docs/static/media/css/typography.css @@ -0,0 +1,86 @@ +html { + font-family: "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif; + font-size: 10pt; +} + +h1, h2, h3, h4, h5, h6 { + font-weight: bold; +} + +h1 { + font-size: 2em; +} + +h2 { + font-size: 1.6em; +} + +h3 { + font-size: 1.3em; +} + +h4 { + font-size: 1.1em; + font-weight: bold; +} + +em { + font-style: italic; +} + +strong { + font-weight: bold; +} + +a { + font-weight: bold; + text-decoration: none; +} + +table#files a:hover, table#subdirs a:hover, table#pages a:hover { + color: #a00000; +} + +p#footer a { + text-decoration: none; +} + +p code, ul code, ol code, dl code, blockquote code, tbody code, thead code { + font-size: 8pt; +} + +pre, code, tt, table#subdirs tr td.name, table#files tr td.name, table tr td.size { + font-family: Monaco, "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Menlo, Inconsolata, Consolas, "Courier New", Courier; +} + +table#subdirs code, table#files code { + font-size: 10pt; +} + +table.codehilitetable div.linenodiv { + color: #777; +} + +blockquote { + color: #222; + font-style: italic; +} + +pre { + overflow-x: auto; /* Use horizontal scroller if needed; for Firefox 2, not needed in Firefox 3 */ + white-space: pre-wrap; /* css-3 */ + white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + /* width: 99%; */ + word-wrap: break-word; /* Internet Explorer 5.5+ */ +} + +table thead th { + font-weight: bold; +} + +.list-crumb { + color: #777; + font-variant: italic; +} \ No newline at end of file diff --git a/.hgext/hg-prompt/docs/wiki/documentation/index.mdown b/.hgext/hg-prompt/docs/wiki/documentation/index.mdown new file mode 100644 index 00000000..2f5d2045 --- /dev/null +++ b/.hgext/hg-prompt/docs/wiki/documentation/index.mdown @@ -0,0 +1,14 @@ +Documentation +============= + +##[Usage](/documentation/usage/)## + +How the `hg prompt` command can be used. + +##[Keywords](/documentation/keywords/)## + +Keywords available to use with the command. + +##[Sample Prompts](/documentation/samples/)## + +Some sample prompts to get you started. \ No newline at end of file diff --git a/.hgext/hg-prompt/docs/wiki/documentation/keywords/index.mdown b/.hgext/hg-prompt/docs/wiki/documentation/keywords/index.mdown new file mode 100644 index 00000000..58768c98 --- /dev/null +++ b/.hgext/hg-prompt/docs/wiki/documentation/keywords/index.mdown @@ -0,0 +1,183 @@ +Keywords +======== + +There a number of keywords available. If you have any suggestions for more +please [let me know][issues]. + +[issues]: http://bitbucket.org/sjl/issues + +Some of the keywords support filters. These filters can be combined when it +makes sense. If in doubt, try it! + +[TOC] + +##bookmark## +: Display the current bookmark (requires the [bookmarks][] extension). + +##branch## +: Display the current branch. + + |quiet + : Display the current branch only if it is not the default branch. + +##closed## +: Display `X` if working on a closed branch (i.e. if committing now would + reopen the branch). + +##count## +: Display the number of revisions in the given revset (the revset `all()` + will be used if none is given). + + See `hg help revsets` for more information. + + |REVSET + : The revset to count. + +##incoming## +: Display nothing, but if the default path contains incoming changesets the + extra text will be expanded. + + For example: `{incoming changes{incoming}}` will expand to + `incoming changes` if there are changes, otherwise nothing. + + Checking for incoming changesets is an expensive operation, so `hg-prompt` + will cache the results in `.hg/prompt/cache/` and refresh them every 15 + minutes. + + |count + : Display the number of incoming changesets (if greater than 0). + +##node## +: Display the (full) changeset hash of the current parent. + + |short + : Display the hash as the short, 12-character form. + + |merge + : Display the hash of the changeset you're merging with. + +##outgoing## +: Display nothing, but if the current repository contains outgoing + changesets (to default) the extra text will be expanded. + + For example: `{outgoing changes{outgoing}}` will expand to + `outgoing changes` if there are changes, otherwise nothing. + + Checking for outgoing changesets is an expensive operation, so `hg-prompt` + will cache the results in `.hg/prompt/cache/` and refresh them every 15 + minutes. + + |count + : Display the number of outgoing changesets (if greater than 0). + +##patch## +: Display the topmost currently-applied patch (requires the [mq][] + extension). + + |count + : Display the number of patches in the queue. + + |applied + : Display the number of currently applied patches in the queue. + + |unapplied + : Display the number of currently unapplied patches in the queue. + + |quiet + : Display a number only if there are any patches in the queue. + +##patches## +: Display a list of the current patches in the queue. It will look like + this: + + :::console + $ hg prompt '{patches}' + bottom-patch -> middle-patch -> top-patch + + |reverse + : Display the patches in reverse order (i.e. topmost first). + + |hide_applied + : Do not display applied patches. + + |hide_unapplied + : Do not display unapplied patches. + + |join(SEP) + : Display SEP between each patch, instead of the default ` -> `. + + |pre_applied(STRING) + : Display STRING immediately before each applied patch. Useful for + adding color codes. + + |post_applied(STRING) + : Display STRING immediately after each applied patch. Useful for + resetting color codes. + + |pre_unapplied(STRING) + : Display STRING immediately before each unapplied patch. Useful for + adding color codes. + + |post_unapplied(STRING) + : Display STRING immediately after each unapplied patch. Useful for + resetting color codes. + +##queue## +: Display the name of the current MQ queue. + +##rev## +: Display the repository-local changeset number of the current parent. + + |merge + : Display the repository-local changeset number of the changeset you're + merging with. + +##root## +: Display the full path to the root of the current repository, without a + trailing slash. + + |basename + : Display the directory name of the root of the current repository. For + example, if the repository is in `/home/u/myrepo` then this keyword + would expand to `myrepo`. + +##status## +: Display `!` if the repository has any changed/added/removed files, + otherwise `?` if it has any untracked (but not ignored) files, otherwise + nothing. + + |modified + : Display `!` if the current repository contains files that have been + modified, added, removed, or deleted, otherwise nothing. + + |unknown + : Display `?` if the current repository contains untracked files, + otherwise nothing. + +##tags## +: Display the tags of the current parent, separated by a space. + + |SEP + : Display the tags of the current parent, separated by `SEP`. + +##task## +: Display the current task (requires the [tasks][] extension). + +##tip## +: Display the repository-local changeset number of the current tip. + + |node + : Display the (full) changeset hash of the current tip. + + |short + : Display a short form of the changeset hash of the current tip (must be + used with the **|node** filter) + +##update## +: Display `^` if the current parent is not the tip of the current branch, + otherwise nothing. In effect, this lets you see if running `hg update` + would do something. + +[bookmarks]: http://mercurial.selenic.com/wiki/BookmarksExtension +[tasks]: http://bitbucket.org/alu/hgtasks/wiki/Home +[mq]: http://mercurial.selenic.com/wiki/MqExtension diff --git a/.hgext/hg-prompt/docs/wiki/documentation/samples/index.mdown b/.hgext/hg-prompt/docs/wiki/documentation/samples/index.mdown new file mode 100644 index 00000000..a3011f6a --- /dev/null +++ b/.hgext/hg-prompt/docs/wiki/documentation/samples/index.mdown @@ -0,0 +1,63 @@ +Sample Prompts +============== + +`hg-prompt` supports many keywords, but you probably don't want to use them +all at once. Which keywords you'll find useful depends on the workflow(s) you +commonly use. + +Here are some example prompts to get you started. + +A Basic Prompt +-------------- + +A very simple prompt could tell you: + +* Which named branch you're currently working on. +* If there are any uncommitted changes in the working directory. +* If you're at a revision that's not a branch tip (i.e. if running `hg update` + would do something). + +To get a prompt like this you could add this to your `~/.bashrc` file: + + :::bash + export PS1='\u in \w`hg prompt "{on {branch}}{status}{update}" 2>/dev/null` $' + +The result would look something like this: + + :::text + username in ~/src $ cd project + username in ~/src/project on feature-branch $ touch sample + username in ~/src/project on feature-branch? $ hg add sample + username in ~/src/project on feature-branch! $ hg commit -m 'Add a file.' + username in ~/src/project on feature-branch $ hg update default + username in ~/src/project on default $ hg update 0 + username in ~/src/project on default^ $ + +The `2>/dev/null` part of the prompt command prevents errors from showing when +you're not currently in a Mercurial repository. + +The keywords (`{branch}`, `{status}` and `{update}`) display the relevant +information. + +The extra text in the `{branch}` keyword will only display if a branch exists, +so you won't see the word "on" if you're not in a repository. + +A More Compact Basic Prompt +--------------------------- + +Some people prefer a smaller, less obtrusive prompt. To get that kind of +prompt you can omit some of the less important text: + + :::bash + export PS1='\w`hg prompt "[{branch}{status}{update}]" 2>/dev/null` $' + +That will give you something like this: + + :::text + ~/src $ cd project + ~/src/project[feature-branch] $ touch sample + ~/src/project[feature-branch?] $ hg add sample + ~/src/project[feature-branch!] $ hg commit -m 'Add a file.' + ~/src/project[feature-branch] $ hg update default + ~/src/project[default] $ hg update 0 + ~/src/project[default^] $ diff --git a/.hgext/hg-prompt/docs/wiki/documentation/usage/index.mdown b/.hgext/hg-prompt/docs/wiki/documentation/usage/index.mdown new file mode 100644 index 00000000..bcdb886a --- /dev/null +++ b/.hgext/hg-prompt/docs/wiki/documentation/usage/index.mdown @@ -0,0 +1,53 @@ +Usage +===== + +The `hg prompt` command takes a single string as an argument and outputs it. +Here's a simple (and useless) example: + + :::console + $ hg prompt "test" + test + +Keywords in curly braces can be used to output repository information: + + :::console + $ hg prompt "currently on {branch}" + currently on default + +Keywords also have an extended form: + + :::text + {optional text{branch}more optional text} + +This form will output the text and the expanded keyword **only** if the +keyword successfully expands. This can be useful for displaying extra text +only if it's applicable: + + :::console + $ hg prompt "currently on {branch} and at {bookmark}" + currently on branch default and at + + $ hg prompt "currently on {branch} {and at {bookmark}}" + currently on branch default + + $ hg bookmark my-book + + $ hg prompt "currently on {branch} {and at {bookmark}}" + currently on branch default and at my-book + +You can give the `--angle-brackets` option to use angle brackets for keywords +instead of curly brackets. This can come in handy when combining a simple +prompt string with more complicated shell functionality (like color +variables): + + :::console + $ hg prompt "{currently on {branch}}" + currently on default + + $ hg prompt --angle-brackets ">" + currently on default + +Take a look at the [keywords][] documentation to see all the keywords +`hg-prompt` supports. + +[keywords]: /documentation/keywords/ \ No newline at end of file diff --git a/.hgext/hg-prompt/docs/wiki/index.mdown b/.hgext/hg-prompt/docs/wiki/index.mdown new file mode 100644 index 00000000..ff27616e --- /dev/null +++ b/.hgext/hg-prompt/docs/wiki/index.mdown @@ -0,0 +1,28 @@ +hg-prompt +========= + +`hg-prompt` is a Mercurial extension that adds an 'hg prompt' command to +Mercurial for viewing repository information. It's designed to be used in a +shell prompt. + +[Installation][] +---------------- + +[Quick Start][] +--------------- + +[Full Documentation][] +---------------------- + +[Code][] +-------- + +[Installation]: /installation/ +[Quick Start]: /quickstart/ +[Full Documentation]: /documentation/ +[Code]: http://bitbucket.org/sjl + +Screenshot +---------- + +![My bash prompt while using hg-prompt.](http://stevelosh.com/media/images/projects/hg-prompt/prompt.png "My bash prompt while using hg-prompt.") diff --git a/.hgext/hg-prompt/docs/wiki/installation/index.mdown b/.hgext/hg-prompt/docs/wiki/installation/index.mdown new file mode 100644 index 00000000..f974431f --- /dev/null +++ b/.hgext/hg-prompt/docs/wiki/installation/index.mdown @@ -0,0 +1,28 @@ +Installation +============ + +Installing `hg-prompt` requires [Python][] 2.5+ and (obviously) Mercurial. + +[Python]: http://python.org/ + +First, clone the repository: + + :::console + $ hg clone http://bitbucket.org/sjl/hg-prompt/ + +Edit the `[extensions]` section in your `~/.hgrc` file: + + :::cfg + [extensions] + prompt = (path to)/prompt.py + +Make sure everything is working: + + :::console + $ hg prompt 'test' + test + +Take a look at the [Quick Start][] guide to learn how to put some useful +information into your shell prompt. + +[Quick Start]: /quickstart/ \ No newline at end of file diff --git a/.hgext/hg-prompt/docs/wiki/quickstart/index.mdown b/.hgext/hg-prompt/docs/wiki/quickstart/index.mdown new file mode 100644 index 00000000..e9dee412 --- /dev/null +++ b/.hgext/hg-prompt/docs/wiki/quickstart/index.mdown @@ -0,0 +1,56 @@ +Quick Start +=========== + +This guide will get you up and running so you can put some useful information +into your shell prompt. + +If you haven't already [installed][install] it, do that now. + +[install]: /installation/ + +A Simple (But Useful) Prompt +---------------------------- + +Edit your `~/.bashrc` file to include something like this: + + :::bash + hg_ps1() { + hg prompt "{ on {branch}}{ at {bookmark}}{status}" 2> /dev/null + } + + export PS1='\u at \h in \w$(hg_ps1)\n$ ' + +`source ~/.bashrc` after to test it out. Make sure you're in a Mercurial +repository or you won't see anything. This little prompt will give you +something like this: + + :::console + steve at myhost in ~/src/hg-prompt on default at feature-bookmark? + $ + +An Advanced Prompt +------------------ + +How about something a little more interesting? + + :::bash + hg_ps1() { + hg prompt "{[+{incoming|count}]-->}{root|basename}{/{branch}}{-->[+{outgoing|count}]}{ at {bookmark}}{status}" 2> /dev/null + } + + export PS1='$(hg_ps1)\n\u at \h in \w\n$ ' + +And the result (this example assumes one incoming changeset and two outgoing): + + :::console + [+1]-->hg-prompt/default-->[+2] at feature-bookmark + steve at myhost in ~/src/hg-prompt + $ + +Learn More +---------- + +From here you can take a look at the [full documentation][] to see all the +interesting things `hg-prompt` can do. + +[full documentation]: /documentation/ \ No newline at end of file diff --git a/.hgext/hg-prompt/prompt.py b/.hgext/hg-prompt/prompt.py new file mode 100644 index 00000000..6258b2cb --- /dev/null +++ b/.hgext/hg-prompt/prompt.py @@ -0,0 +1,600 @@ +#!/usr/bin/env python + +from __future__ import with_statement + +'''get repository information for use in a shell prompt + +Take a string, parse any special variables inside, and output the result. + +Useful mostly for putting information about the current repository into +a shell prompt. +''' + +import re +import os +import subprocess +from datetime import datetime, timedelta +from os import path +from mercurial import extensions, commands, cmdutil, help +from mercurial.node import hex, short + +CACHE_PATH = ".hg/prompt/cache" +CACHE_TIMEOUT = timedelta(minutes=15) + +FILTER_ARG = re.compile(r'\|.+\((.*)\)') + +def _cache_remote(repo, kind): + cache = path.join(repo.root, CACHE_PATH, kind) + c_tmp = cache + '.temp' + + # This is kind of a hack and I feel a little bit dirty for doing it. + IGNORE = open('NUL:','w') if subprocess.mswindows else open('/dev/null','w') + + subprocess.call(['hg', kind, '--quiet'], stdout=file(c_tmp, 'w'), stderr=IGNORE) + os.rename(c_tmp, cache) + return + +def _with_groups(groups, out): + out_groups = [groups[0]] + [groups[-1]] + + if any(out_groups) and not all(out_groups): + print 'Error parsing prompt string. Mismatched braces?' + + out = out.replace('%', '%%') + return ("%s" + out + "%s") % (out_groups[0][:-1] if out_groups[0] else '', + out_groups[1][1:] if out_groups[1] else '') + +def _get_filter(name, g): + '''Return the filter with the given name, or None if it was not used.''' + matching_filters = filter(lambda s: s and s.startswith('|%s' % name), g) + if not matching_filters: + return None + + # Later filters will override earlier ones, for now. + f = matching_filters[-1] + + return f + +def _get_filter_arg(f): + if not f: + return None + + args = FILTER_ARG.match(f).groups() + if args: + return args[0] + else: + return None + +def prompt(ui, repo, fs='', **opts): + '''get repository information for use in a shell prompt + + Take a string and output it for use in a shell prompt. You can use + keywords in curly braces:: + + $ hg prompt "currently on {branch}" + currently on default + + You can also use an extended form of any keyword:: + + {optional text here{keyword}more optional text} + + This will expand the inner {keyword} and output it along with the extra + text only if the {keyword} expands successfully. This is useful if you + have a keyword that may not always apply to the current state and you + have some text that you would like to see only if it is appropriate:: + + $ hg prompt "currently at {bookmark}" + currently at + $ hg prompt "{currently at {bookmark}}" + $ hg bookmark my-bookmark + $ hg prompt "{currently at {bookmark}}" + currently at my-bookmark + + See 'hg help prompt-keywords' for a list of available keywords. + ''' + + def _basename(m): + return _with_groups(m.groups(), path.basename(repo.root)) if repo.root else '' + + def _bookmark(m): + try: + book = extensions.find('bookmarks').current(repo) + except AttributeError: + book = getattr(repo, '_bookmarkcurrent', None) + return _with_groups(m.groups(), book) if book else '' + + def _branch(m): + g = m.groups() + + branch = repo.dirstate.branch() + quiet = _get_filter('quiet', g) + + out = branch if (not quiet) or (branch != 'default') else '' + + return _with_groups(g, out) if out else '' + + def _closed(m): + g = m.groups() + + quiet = _get_filter('quiet', g) + + p = repo[None].parents()[0] + pn = p.node() + branch = repo.dirstate.branch() + closed = (p.extra().get('close') + and pn in repo.branchheads(branch, closed=True)) + out = 'X' if (not quiet) and closed else '' + + return _with_groups(g, out) if out else '' + + def _count(m): + g = m.groups() + query = [g[1][1:]] if g[1] else ['all()'] + return _with_groups(g, str(len(cmdutil.revrange(repo, query)))) + + def _node(m): + g = m.groups() + + parents = repo[None].parents() + p = 0 if '|merge' not in g else 1 + p = p if len(parents) > p else None + + format = short if '|short' in g else hex + + node = format(parents[p].node()) if p is not None else None + return _with_groups(g, str(node)) if node else '' + + def _patch(m): + g = m.groups() + + try: + extensions.find('mq') + except KeyError: + return '' + + q = repo.mq + + if _get_filter('quiet', g) and not len(q.series): + return '' + + if _get_filter('applied', g): + out = str(len(q.applied)) + elif _get_filter('unapplied', g): + out = str(len(q.unapplied(repo))) + elif _get_filter('count', g): + out = str(len(q.series)) + else: + out = q.applied[-1].name if q.applied else '' + + return _with_groups(g, out) if out else '' + + def _patches(m): + g = m.groups() + + try: + extensions.find('mq') + except KeyError: + return '' + + join_filter = _get_filter('join', g) + join_filter_arg = _get_filter_arg(join_filter) + sep = join_filter_arg if join_filter else ' -> ' + + patches = repo.mq.series + applied = [p.name for p in repo.mq.applied] + unapplied = filter(lambda p: p not in applied, patches) + + if _get_filter('hide_applied', g): + patches = filter(lambda p: p not in applied, patches) + if _get_filter('hide_unapplied', g): + patches = filter(lambda p: p not in unapplied, patches) + + if _get_filter('reverse', g): + patches = reversed(patches) + + pre_applied_filter = _get_filter('pre_applied', g) + pre_applied_filter_arg = _get_filter_arg(pre_applied_filter) + post_applied_filter = _get_filter('post_applied', g) + post_applied_filter_arg = _get_filter_arg(post_applied_filter) + + pre_unapplied_filter = _get_filter('pre_unapplied', g) + pre_unapplied_filter_arg = _get_filter_arg(pre_unapplied_filter) + post_unapplied_filter = _get_filter('post_unapplied', g) + post_unapplied_filter_arg = _get_filter_arg(post_unapplied_filter) + + for n, patch in enumerate(patches): + if patch in applied: + if pre_applied_filter: + patches[n] = pre_applied_filter_arg + patches[n] + if post_applied_filter: + patches[n] = patches[n] + post_applied_filter_arg + elif patch in unapplied: + if pre_unapplied_filter: + patches[n] = pre_unapplied_filter_arg + patches[n] + if post_unapplied_filter: + patches[n] = patches[n] + post_unapplied_filter_arg + + return _with_groups(g, sep.join(patches)) if patches else '' + + def _queue(m): + g = m.groups() + + try: + extensions.find('mq') + except KeyError: + return '' + + q = repo.mq + + out = os.path.basename(q.path) + if out == 'patches' and not os.path.isdir(q.path): + out = '' + elif out.startswith('patches-'): + out = out[8:] + + return _with_groups(g, out) if out else '' + + def _remote(kind): + def _r(m): + g = m.groups() + + cache_dir = path.join(repo.root, CACHE_PATH) + cache = path.join(cache_dir, kind) + if not path.isdir(cache_dir): + os.makedirs(cache_dir) + + cache_exists = path.isfile(cache) + + cache_time = (datetime.fromtimestamp(os.stat(cache).st_mtime) + if cache_exists else None) + if not cache_exists or cache_time < datetime.now() - CACHE_TIMEOUT: + if not cache_exists: + open(cache, 'w').close() + subprocess.Popen(['hg', 'prompt', '--cache-%s' % kind]) + + if cache_exists: + with open(cache) as c: + count = len(c.readlines()) + if g[1]: + return _with_groups(g, str(count)) if count else '' + else: + return _with_groups(g, '') if count else '' + else: + return '' + return _r + + def _rev(m): + g = m.groups() + + parents = repo[None].parents() + parent = 0 if '|merge' not in g else 1 + parent = parent if len(parents) > parent else None + + rev = parents[parent].rev() if parent is not None else -1 + return _with_groups(g, str(rev)) if rev >= 0 else '' + + def _root(m): + return _with_groups(m.groups(), repo.root) if repo.root else '' + + def _status(m): + g = m.groups() + + st = repo.status(unknown=True)[:5] + modified = any(st[:4]) + unknown = len(st[-1]) > 0 + + flag = '' + if '|modified' not in g and '|unknown' not in g: + flag = '!' if modified else '?' if unknown else '' + else: + if '|modified' in g: + flag += '!' if modified else '' + if '|unknown' in g: + flag += '?' if unknown else '' + + return _with_groups(g, flag) if flag else '' + + def _tags(m): + g = m.groups() + + sep = g[1][1:] if g[1] else ' ' + tags = repo[None].tags() + + return _with_groups(g, sep.join(tags)) if tags else '' + + def _task(m): + try: + task = extensions.find('tasks').current(repo) + return _with_groups(m.groups(), task) if task else '' + except KeyError: + return '' + + def _tip(m): + g = m.groups() + + format = short if '|short' in g else hex + + tip = repo[len(repo) - 1] + rev = tip.rev() + tip = format(tip.node()) if '|node' in g else tip.rev() + + return _with_groups(g, str(tip)) if rev >= 0 else '' + + def _update(m): + if not repo.branchtags(): + # We are in an empty repository. + return '' + + current_rev = repo[None].parents()[0] + to = repo[repo.branchtags()[current_rev.branch()]] + return _with_groups(m.groups(), '^') if current_rev != to else '' + + + if opts.get("angle_brackets"): + tag_start = r'\<([^><]*?\<)?' + tag_end = r'(\>[^><]*?)?>' + brackets = '<>' + else: + tag_start = r'\{([^{}]*?\{)?' + tag_end = r'(\}[^{}]*?)?\}' + brackets = '{}' + + patterns = { + 'bookmark': _bookmark, + 'branch(\|quiet)?': _branch, + 'closed(\|quiet)?': _closed, + 'count(\|[^%s]*?)?' % brackets[-1]: _count, + 'node(?:' + '(\|short)' + '|(\|merge)' + ')*': _node, + 'patch(?:' + '(\|applied)' + '|(\|unapplied)' + '|(\|count)' + '|(\|quiet)' + ')*': _patch, + 'patches(?:' + + '(\|join\([^%s]*?\))' % brackets[-1] + + '|(\|reverse)' + + '|(\|hide_applied)' + + '|(\|hide_unapplied)' + + '|(\|pre_applied\([^%s]*?\))' % brackets[-1] + + '|(\|post_applied\([^%s]*?\))' % brackets[-1] + + '|(\|pre_unapplied\([^%s]*?\))' % brackets[-1] + + '|(\|post_unapplied\([^%s]*?\))' % brackets[-1] + + ')*': _patches, + 'queue': _queue, + 'rev(\|merge)?': _rev, + 'root': _root, + 'root\|basename': _basename, + 'status(?:' + '(\|modified)' + '|(\|unknown)' + ')*': _status, + 'tags(\|[^%s]*?)?' % brackets[-1]: _tags, + 'task': _task, + 'tip(?:' + '(\|node)' + '|(\|short)' + ')*': _tip, + 'update': _update, + + 'incoming(\|count)?': _remote('incoming'), + 'outgoing(\|count)?': _remote('outgoing'), + } + + if opts.get("cache_incoming"): + _cache_remote(repo, 'incoming') + + if opts.get("cache_outgoing"): + _cache_remote(repo, 'outgoing') + + for tag, repl in patterns.items(): + fs = re.sub(tag_start + tag + tag_end, repl, fs) + ui.status(fs) + +def _pull_with_cache(orig, ui, repo, *args, **opts): + """Wrap the pull command to delete the incoming cache as well.""" + res = orig(ui, repo, *args, **opts) + cache = path.join(repo.root, CACHE_PATH, 'incoming') + if path.isfile(cache): + os.remove(cache) + return res + +def _push_with_cache(orig, ui, repo, *args, **opts): + """Wrap the push command to delete the outgoing cache as well.""" + res = orig(ui, repo, *args, **opts) + cache = path.join(repo.root, CACHE_PATH, 'outgoing') + if path.isfile(cache): + os.remove(cache) + return res + +def uisetup(ui): + extensions.wrapcommand(commands.table, 'pull', _pull_with_cache) + extensions.wrapcommand(commands.table, 'push', _push_with_cache) + +cmdtable = { + "prompt": + (prompt, [ + ('', 'angle-brackets', None, 'use angle brackets (<>) for keywords'), + ('', 'cache-incoming', None, 'used internally by hg-prompt'), + ('', 'cache-outgoing', None, 'used internally by hg-prompt'), + ], + 'hg prompt STRING') +} +help.helptable += ( + (['prompt-keywords', 'prompt-keywords'], ('Keywords supported by hg-prompt'), + (r'''hg-prompt currently supports a number of keywords. + +Some keywords support filters. Filters can be chained when it makes +sense to do so. When in doubt, try it! + +bookmark + Display the current bookmark (requires the bookmarks extension). + +branch + Display the current branch. + + |quiet + Display the current branch only if it is not the default branch. + +closed + Display `X` if working on a closed branch (i.e. committing now would reopen + the branch). + +count + Display the number of revisions in the given revset (the revset `all()` + will be used if none is given). + + See `hg help revsets` for more information. + + |REVSET + The revset to count. + +incoming + Display nothing, but if the default path contains incoming changesets the + extra text will be expanded. + + For example: `{incoming changes{incoming}}` will expand to + `incoming changes` if there are changes, otherwise nothing. + + Checking for incoming changesets is an expensive operation, so `hg-prompt` + will cache the results in `.hg/prompt/cache/` and refresh them every 15 + minutes. + + |count + Display the number of incoming changesets (if greater than 0). + +node + Display the (full) changeset hash of the current parent. + + |short + Display the hash as the short, 12-character form. + + |merge + Display the hash of the changeset you're merging with. + +outgoing + Display nothing, but if the current repository contains outgoing + changesets (to default) the extra text will be expanded. + + For example: `{outgoing changes{outgoing}}` will expand to + `outgoing changes` if there are changes, otherwise nothing. + + Checking for outgoing changesets is an expensive operation, so `hg-prompt` + will cache the results in `.hg/prompt/cache/` and refresh them every 15 + minutes. + + |count + Display the number of outgoing changesets (if greater than 0). + +patch + Display the topmost currently-applied patch (requires the mq + extension). + + |count + Display the number of patches in the queue. + + |applied + Display the number of currently applied patches in the queue. + + |unapplied + Display the number of currently unapplied patches in the queue. + + |quiet + Display a number only if there are any patches in the queue. + +patches + Display a list of the current patches in the queue. It will look like + this: + + :::console + $ hg prompt '{patches}' + bottom-patch -> middle-patch -> top-patch + + |reverse + Display the patches in reverse order (i.e. topmost first). + + |hide_applied + Do not display applied patches. + + |hide_unapplied + Do not display unapplied patches. + + |join(SEP) + Display SEP between each patch, instead of the default ` -> `. + + |pre_applied(STRING) + Display STRING immediately before each applied patch. Useful for + adding color codes. + + |post_applied(STRING) + Display STRING immediately after each applied patch. Useful for + resetting color codes. + + |pre_unapplied(STRING) + Display STRING immediately before each unapplied patch. Useful for + adding color codes. + + |post_unapplied(STRING) + Display STRING immediately after each unapplied patch. Useful for + resetting color codes. + +queue + Display the name of the current MQ queue. + +rev + Display the repository-local changeset number of the current parent. + + |merge + Display the repository-local changeset number of the changeset you're + merging with. + +root + Display the full path to the root of the current repository, without a + trailing slash. + + |basename + Display the directory name of the root of the current repository. For + example, if the repository is in `/home/u/myrepo` then this keyword + would expand to `myrepo`. + +status + Display `!` if the repository has any changed/added/removed files, + otherwise `?` if it has any untracked (but not ignored) files, otherwise + nothing. + + |modified + Display `!` if the current repository contains files that have been + modified, added, removed, or deleted, otherwise nothing. + + |unknown + Display `?` if the current repository contains untracked files, + otherwise nothing. + +tags + Display the tags of the current parent, separated by a space. + + |SEP + Display the tags of the current parent, separated by `SEP`. + +task + Display the current task (requires the tasks extension). + +tip + Display the repository-local changeset number of the current tip. + + |node + Display the (full) changeset hash of the current tip. + + |short + Display a short form of the changeset hash of the current tip (must be + used with the **|node** filter) + +update + Display `^` if the current parent is not the tip of the current branch, + otherwise nothing. In effect, this lets you see if running `hg update` + would do something. +''')), +) diff --git a/.hgext/hg-prompt/prompt.pyc b/.hgext/hg-prompt/prompt.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9d168f8e20ad677e9f1d1c6fa12f4fad3fcf8a0c GIT binary patch literal 20354 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 (ytVsN|e7nQ-(kP+DVTM3NkY@C@NAe(9Zw6 zo>&kl%$9PQ^Yyo{B@pYX-$UkCc~sih>J=Qif@V=SF1GeS>l54fGvWdx1sj_WGuhI` zm9CYJiqIgK2xBNannxnMI}4|is{L<;MOH>HlAmeeE~9ZLR&uh5Z$dZC#_zjovJbb= z%K?<%4b|P+j&kM`G}1w>4%lZ@|Jg5j0sxx4udXBnAs*P>Reo5qHV^zr$v>|3rIJiq)DeTBfqGq#3;|KA@@a5d|&2*XpCWXouP7kgzo-` z@vtoO#Ok<=fhv=(6ngonf*$!S+o-vYu|%( zm)&n)IS_!v`Ofgb?lX8hL_y81T+Gz~$yM5)xHM&p=~~H6WyKX4`-@8T7UL7bD6$D- zmBSpkam>g~B!%CS)+2)~HM1AU1-D7*({5 z!)P15{P!V4KNwYt@QPn>vtr0~=+SVUrfk5aK~tQ0nP60!JGYiI(Vx4UuG;~rG~LM#(m36Ig) zV)CgZZ3HcZVRJjN$(eF9iRkg)8Tyl^6Qx9zzyqt8>kVO>) z#Q`XhK!gmWiNSH;3_rfXp+ZT(v}9mKO!Q32Y$#9uAIg6;I3&MTnwfpo17$+9;!vPf zIsKs?J*aHTz_-pUbr^9xJjKnzvBtBra{%wT#t*9;-Jt+21!&{o4(LK5-PD4H2GzX~ zc>~fU;GrGi%oP!DY0t}xyHmPo1p1~HQlVct5b(|8{=kkl#D*d*e238ZuMW9UTaF2Z zBs2;+@*6d#J;`X;5PJswD`eldHf(e63^%#(5XfnDSg)ZkjYI=z$Bg>JTJFhV8y zB_VDx;f|xrRl*_>D;<}Hy`-}1(}}WlOF@=jdLO6Ky2S&!Bt79pSG@=_t9T07V0tF7 zhT;RwwH4d~2|4H@1Q-zporj_^*I|(g1BSLAg3AMjHPR znrZbtk~#^F_MT}q&gWf(S~V?g^#e8J6}L-RdMv^Ev1k}q#MyxoOK67#xvC>um+eO( zOJcJ|bT(hOP{V&@(JR?Sv*&Ap>GsSUMmRu6smLfA#7XDKHXaFDQ^&}jbVT|az`qq0 z*Y}RYt~Jc!6-;tJGnlVxyFS9szUfI8nJj#FKe-W`!gC~{Nm!Qc#&g5GKvI%a>(F8U z35{50mEY;Kj#Fxn4bdd&jNlI(Mlj&Ax52REAN#1K&`{d-kyIM1(Vw1Tc8hDY~m zR-a>cpCpMpDq}}YpA~zdH6#Haa$6~z6C)9~covT0NPh$$t2-W_y;Z*|zFyvpE=m^| zTa9Pk>#~DX7hWY7KV39U?viqN5q_%Cn7c>2@&%p?au|#!HqCts<>4FbHn6!kq?n4$H z>=|*TmpLa|M_cRl7W=gHrVsY{7iQ=%nyV1Zz-Uo4j7EF|*CNJZZqs)+d0ap7kLOS9 zEtZ``%X)s*>p{xQU1{!%79*KTxIvn`DXOsHh6I=>Z{~{vv1U7pMAdcbrL@;F){YY# z;c3b0*pyhJW^X$f=>wkZZ!%I=d%zG^3^b%>#nL9W5Gi+|GCnagHp=pDwR%q5>f~*q=OI(dsfH1Z}MS@5SGwilYJ~6Txr7|0O)2 zB+gRX1j5pR%<%9INZUAlb&15EP`E3 z21pLLg<~{ii)w3IuaHtY-c0`cRTUqiB--uFVGJZ~i)2-?-c_W&WAebuPdsUli|-cS zvA;C!Q4|k{j{W=X?SHcW7RR(^Z-aMzSr(t*>&smu?<5y3ue+k=$-b#x&6mCZ8++Fr z*vpRd$Mh(h!`(xb7NwdD)88Ko$z+pvPpROnN{?*ESuc6U(mG>VAv;m*`VN2Z_l?Mk z`hj%~>kgcCTvU=ZIY7amfBofu*k5_gMOw07`(0V=+24yjuO*LJQN!A{5h(&XaKVe3 z?T$?F9KP3ko-7tY5EM0lO!r;!iL?D7tsgj(yyWnpsS&B<9ZO}A0qR5A8Da&OT_XT) z3D5$Ql5XK~D1y5?b`yTcmQhUqvky!6*WKL*`F)st9|h53 zk@1`ngX^@UU4-<1v-@Yv`T~#wT`kb}l+pIMkbM1fTB7uj2D$$7HCinge6FspKtb59 zFG^56#S#=x+P3A9y)3 zqC2p>|JT2OnYd7`qyK))(iU}zBtR>Z@#Z2@n7$>}>;0&SKuTivL4P}OR2#!j-U5$t z!w!1_u>%g`DF3|YZO7gpTmF*}jhL)6OXz8lBQu8?pd`QnnAOPSfp;(#Ms^UM?GG>< z!sBR874XV{Pl(N^jUkFHZ?$~11lL-QcB%hkB&`1`lz9Q{D;>1cEsQCp{X}N3Na9O& z>(HDQ!17;_X5y72bejB%-72k=`?OX<%Ui8trLfyY)fYU?xWM5B4VzU@2NYCZ2-$&Y zMgwlL7XY!Lv8{bh3)p+n^YNx|K1?q~f~fG9BOATJy6I@%YR1|fEP9+yZ$q3M&1VyB zC`DdpYR+g12b1$G5=q<3gJ=Gn0L^2{8K5G}kad&15$> z4+Z$@AA-sLQE&kGpyYXiK`1x{7TiD={?gRogI>&ct@nw9LKqTEZf>{q3!G9I+}zv* zV7f?7FkY*$1Cl|75M4Y_HlB|@22Jca1u^qR>_9R+d+eHLAv&ZkQIj?FSg+lFgVva} zV+6;7ml+Fi063*kEe3#ExX9G?nguLa`Bv{6aJ!#705IidnO3_jW#x*M2m^!?un!*` zS&UHN@XgYXp>EHTg0TT&^k+Nz z^C!(1aPi2{c{&keM~lO=+Pj-#vX5^d`*4ZB zb`f4f34;n0Gx(-54OOjVh?QNRPQAjC*WsXnQG6y#lYJF#Alu6_Fry_BIzYi& zp&j6SVenErziasl<46dxTS>4=+Ypz=BjAxMP3@z9zc2?Uf2k}H?Y`;jPFax*Q5p0i zP=AcrU^bh>Km<-8(>2M-GT27CzNjvle>2P{LI4d`y_Jo&uwWc(tMs!@bpZaKp9w}W zDUQlgx<>tNMYE6DjssEf3lYRD&AUAF&Nco2ac?4t?g z#1LM?BDHuqqQ*{xea|Nm`5upteWmLxhWNHrf9~$CB}6x0a0@4*)AYn+c@TPEyc-yg zdWpWu5Qh)lz~&D~T1l3Upq7sGjc-$V3GAOhe47(is+!oT(YLr_BctYZ5Tl?AF>9Gb^3gGaGIO# zeAHUFZ%`YZZ%B5K+*D2mZ+HL-O$C~^E%FwW-YLE0b%v^_pL7lVR(f`xUq#&wu%a`} z!-*P!XPWC^rgR$zr6||GB7cxY*33QkLAxk7wTZo+b>t-}GM&yu9YMtd_JP8A|HiQy z%Ii$C%aiUq(tK`~mB!NR9uG5*=M&JWwPQ!<+4@`&hpl?`)DEAqoxwOvz@93F6{kuW zPN;)k?P;ZrHsH?nPd#s~dZSs|rDH;&Y^RpFCNvX1YjRY4vz>J0Y(5a;;#2m1LPI8b z#hA1le4;$??4(mXLzWu@6a@q94&00^@MH=b313F*R7-8ezS!>A$}#X0re+ptUY?po zy|9&0jZ?E!lWJw%;n(p*hpsP|;k_93CD=8fKY~5ap*G{+gnPR63DB=P!=NJz3eP%0 zfGE(R-C11p6sr>01r5ezOjK9R4?*xVIt3yuiKBTN0E?3At-lLM}TXTR}O=ZeGFv-Yjtb3H1&QaZV;@7-NRqQmjp^$?9wf9SB}k+l3!{E{@I?=)6zCrq;Wpa~Fi=?Tq~F2t`}LoKa}7C0?ToxkALLr_)p9e5;)!B}1PxWCVu{rx>EeHI2stl?>ZQCm~hkik47LMKv^-xz_}>{nZLY(};B zsrD(JyQ~=S$MiJIgpQ3tpMWFS#q=p*SJXY9=&RkP^lVd5o8OT!%&UV_5b_Hl98W^X z&Oy+sdX|LrG61J3_~-*bP8M%;BtPyN(P0a@hbX~5_C+`CQX6HbhkkFf*J+sR23)I} zx}g&u=!6$ApS<|o; zDNyflf^XuJ=Dx)8PoGnOkBDZDLpu!+lQu=&$-x^X*Yfqb7C$-|Y-4~^m^54!R;S}S zC7tx==+PhTmp20h)jB{XsE6~y121mSblaRi;R#LyU#`zc=xm^x%%9KoxPBBBaqbTi zq2oUh>mV|NG|Mdrw}iY5+x&9I`6p2;Rg~WH~1+*qN$Y6dHD{_0>NhP~!Ix zlpW-<#=dS_roigp2fW^LA4JO_IiI(7*+23>c_Js6N5gbGTk~a;qZ`ws3sWCh3ZYtQYsu+qmL5N=QLH(b=cL%%-JkPv;uE5?2hc} z@IWO@FVzLYrvfJKAWnb-E1>*>=_qAIG+j5OY5!>f<$knqo-{!*DMS*u11fQey9w1RyRvDD5;OT5x{WD52)#kIAiT9Wtm-Z5-_m$l+j zrVk*?N?o{i%v^6^;ywojm(#O|d6XL_(!P}~hw7TMApr5N>Hlc6`j2snWlS+<`uxv1 z`ct4ct3OZk>5>pyD_$~lwPV`1#%l_=U!0BK6Z0T^D7rP~y?9lT{0#kaPsor0bHh9_ zUz|v*dOdV|Sn-<}kl`&^fCnlec-`TJgWIjS_pKP>3os6kVzcqJ^*u=O+K`UNoNK(l zJCK?{HvbsjMng~4_Hw2jpYeIv03_oj0CE7(1v;oioOnyfOcvtn++a%JtW5eASqnMA zzN0gTM}CyyVMyJ_8I(#Ge(dyX5~|4t1WV`OTlXy0h2%*BK&ninSqhvZE$uZ7fHC3V zOSI;K{SA(22qW`LP&&5Wjxd;Y-gNt%sTi`(Sc_HnH5)V3*vakIQ2-V5)h+p%N4n7& zK@hoJ_(^+o_vqua6@X#3A!}@-L$2mcCM|WbK{L50{H*mEUEH72MI#X>f5)ksuoLx! z?&7%Cg`ccZw@TM&YaK7kDIp#U)cEz%IX;^hUdi+m#y|V=htaqz@0GrB3_5YA&j=lg zh?)xv{>fB0Gk)h5%5kJyR6X7=B#@cX!5-!S0}4_#J{}D><~ehn%ww^ccc?iCQ{TE`zdCr3e42 zlf8$5Rq7QkTC{$^ zJ4b`@B~-r1p-as{?ZD_4TDCmwx?D!^=#-u!-;d?W(gb(q8iMS#U(}O1PF`eM?bekD!}6mmx-;Fs->8 zu>oX~z@gt(7YS?c1s(Tuc^h_&)izvow&4j+&qv4knoB|&l*THoN0WHq@n}ZYevd{^ zu@alLj=he=`;b^N1SsF|^Ulz}&L!`~Jgj*9pT(Gut1JJk=W!68li>?LgW5X2QTJj< zNZv4FKL3B$?9lOyi@vP!bg?71h<~p`pS{CqJ}1@8-6IrY7js&@r3*2k6P$;RCCwu* zexCF9_!*ZC_`w$mjV_%_$1Le1(?se$8P7LFDUC%d>;=rBs%rMXfwt_DD%dg4@~n=tqho1l2vgKB8_L2nDX zTY%cAO2s4A06$cPl(wgX9Zf31e=ya%z9>a_U>fkkg%k!kB2%{SM+8s=MK9I*800~H zkr}*{h*wFmAD|kfHsG@Ww`@7&1W#%CNEyMx1$VH^H*bG^|K{y4+ayWY=I1wm{|UcY zcvj9X`^~el01DiL3BGz0h)O@2rUlf=x`454!U()X#{mo^x3x720GBnYt!DMI<^NDn^7n$~>+q9+qUo(RZ8j|$5a;x{AgA>BK>^ltBJG1Ro+vcRreB8-G8pU#n6B8B)x6Q-@zs5Ec2u>Hu391H6Rm{olJImK( zAkgx@mQ}ylP^RI7vOPQh2dTCSjhsfesHCo6zpgb&2~R$&w)=icn#IH`%oeu~_ayD& z-j@9+d6CCA+d~BtxGRoabi4C!YIFOcPnAk5X0lAO(A)GzJnQ3+14id%eGKk>Im+T; z=&8%IYvOB1f#~GzmlI|_EL`tYd}*0_-P&^v#^*v~m3^9p{$*d?y4m%3PNlWq@(fZ5dhDgYS;h( literal 0 HcmV?d00001 diff --git a/.hgext/hgshelve/.hg/store/data/test-shelve.i b/.hgext/hgshelve/.hg/store/data/test-shelve.i new file mode 100644 index 0000000000000000000000000000000000000000..5e39bfc265180a7d09227dc0cdc8f7226c338d66 GIT binary patch literal 540 zcmV+%0^|Jv0RRC20000000GO|NsC0|NsB~O!SSzLIA35okwX2 zKoFJv#Jht400000000000001ZoTXC1Zk#X>z56Ss=~kTB?ULM@M5?Mbd#M^#xkWvA z?E$QSjcgO`{(Z-IF_3Q3Ly*Ac&6_vRFnZ zvV!5EGuFcxWGHF_7mvOAa{;%vuzC?t+N0&dt7p9Nw#T!iM?84cP8sdatJIaNu_1{U zQC3%=wDQ22kn~}tv7iWoEfjDGS6@IH2J{R%D;3g9)!=sR51vV*k%?|XhFvklNSRCd zT1c3-rLwt%Yzv<=$Xm!tWnH9Yvl>fsF_Ik$qved9r1!m+4MLvpxuc~3uex;vM^j5= zCVx4~(;aeqJju`K%(gRcsat&P7wq5FvHy6VIlUU4w#Fien(GQ(#^QZ{0%4K+ghMbo zOn}l=5VH7;G=zCh8#12fylDb1Raw%XHj=VkQj-Q8HaJXS)EVr=-SzeNUq9H9X?l;R zH6TNB@>8RDqOvWganrGo8#Fxky?diJ?>eN5_6G2voDa#NZaEnU_9H2tW6V^#Bg-d} z1d`>8q=w`I(CY*#?LtnHNFh$@)G}2b=NU8GVO|NsC0|Ns9UWv3$49Gx#P8qoEf z*nJRH8!p8F00000000000001ZoUK-CccMBJ{hnVDm)NPb_Ciq5rA2Ffw7$l19DLk$ zod!r0ML@(y)%LevwJ&Px+}@dfVI?Q94`=7>op4a?W3xvl#GOEDO-&7OZ$km7It07q zX=M|3;G|ECnQr!gLuSNrHzP=OgK%f=!rhCZy_l=pXUYcHAVAY8g<%I`k)u4Jd<<(5 z4^B87hWM|Sc_{Fzn;WBb{4*H49FNK~z_tkq2g}x+V4^D9@;AkJpH41CSV6PvNrGPn^G}UJUw@e4FhiUYFeAO%wF(4VqT#3vTvo| zC+ZM7WQ28dE8gu7O+dvX(uzk!8EHa%2$y0-daTaqQ)N$qjXS< zq5FYs8~H_=PbPx#!pbiQtVl+TkiA4kOPdDbVA*WC*EL=HxxRO91GT{T-fc3zZ}SAn z=Z2-EFuN>;XdxvWD@T@~%~*c+L3DV}F_2`tI#Tx!p8V=a8;<@QNZtR?F? zH)pI@M3(2w&7GPYPm8fmF~eO}wUb<}e359!#Ck5C>nv=m(F4ocja9S@j3eKUS2-!0 z>r}G^M!IYGu54Mk$VcSlitP@JtQPGKTJ?lqw2QO5fK;LWpGYX>83rs_?prS?oD4@d zorEvbWz&QE5;cSOsL*OwY?@c|`Es|OO%c~8D{`DUNtKSoJCvEBW4lqmvLrCZjvu?# zSta04u!Ev|luEVC@hx6PYs*PL#0t8W3Ac|W4HwdF@>R-}`!_~&)Bta_@Ybw9cG?~^ z;!jfBuMOsp3pi{tQ}fY#@y2R4mm!_rg6EiOjckLsyX(M%=k5#$ns`LEe(RC@F5m9S cy&AuR^-k!Jb-zmScv@@?@d*O_3pXkgfW;aTYXATM literal 0 HcmV?d00001 diff --git a/.hgext/hgshelve/.hg/store/fncache b/.hgext/hgshelve/.hg/store/fncache new file mode 100644 index 00000000..bb0ab817 --- /dev/null +++ b/.hgext/hgshelve/.hg/store/fncache @@ -0,0 +1,6 @@ +data/hgshelve.py.i +data/shelve.py.i +data/test-shelve.i +data/test-shelve-color.i +data/test-shelve-color.out.i +data/test-shelve.out.i diff --git a/.hgext/hgshelve/.hg/store/undo b/.hgext/hgshelve/.hg/store/undo new file mode 100644 index 0000000000000000000000000000000000000000..5181243976f51bb5375b50db1e57f720a8dcd6ca GIT binary patch literal 175 zcmXpoNX|&iOHa+oPuI(2FyJyU$W6@4OiL{;0drFlOA_@n(u*@vbIMZn3MvtTScFP| ix^$u9AhW=lkpy*<^K +# Copyright 2007 TK Soh +# +# This software may be used and distributed according to the terms of +# the GNU General Public License, incorporated herein by reference. + +'''interactive change selection to set aside that may be restored later''' + +from mercurial.i18n import _ +from mercurial import cmdutil, commands, cmdutil, hg, mdiff, patch, revlog +from mercurial import util, fancyopts, extensions +import copy, cStringIO, errno, operator, os, re, shutil, tempfile + +lines_re = re.compile(r'@@ -(\d+),(\d+) \+(\d+),(\d+) @@\s*(.*)') + +def internalpatch(patchobj, ui, strip, cwd, reverse=False, files={}): + """use builtin patch to apply to the working directory. + returns whether patch was applied with fuzz factor. + + Adapted from patch.internalpatch() to support reverse patching. + """ + + eolmode = ui.config('patch', 'eol', 'strict') + + if eolmode.lower() not in patch.eolmodes: + raise util.Abort(_('Unsupported line endings type: %s') % eolmode) + + try: + fp = file(patchobj, 'rb') + except TypeError: + fp = patchobj + if cwd: + curdir = os.getcwd() + os.chdir(cwd) + try: + ret = patch.applydiff(ui, fp, files, strip=strip, eolmode=eolmode) + finally: + if cwd: + os.chdir(curdir) + if ret < 0: + raise PatchError + return ret > 0 + +def scanpatch(fp): + lr = patch.linereader(fp) + + def scanwhile(first, p): + lines = [first] + while True: + line = lr.readline() + if not line: + break + if p(line): + lines.append(line) + else: + lr.push(line) + break + return lines + + while True: + line = lr.readline() + if not line: + break + if line.startswith('diff --git a/'): + def notheader(line): + s = line.split(None, 1) + return not s or s[0] not in ('---', 'diff') + header = scanwhile(line, notheader) + fromfile = lr.readline() + if fromfile.startswith('---'): + tofile = lr.readline() + header += [fromfile, tofile] + else: + lr.push(fromfile) + yield 'file', header + elif line[0] == ' ': + yield 'context', scanwhile(line, lambda l: l[0] in ' \\') + elif line[0] in '-+': + yield 'hunk', scanwhile(line, lambda l: l[0] in '-+\\') + else: + m = lines_re.match(line) + if m: + yield 'range', m.groups() + else: + raise patch.PatchError('unknown patch content: %r' % line) + +class header(object): + diff_re = re.compile('diff --git a/(.*) b/(.*)$') + allhunks_re = re.compile('(?:index|new file|deleted file) ') + pretty_re = re.compile('(?:new file|deleted file) ') + special_re = re.compile('(?:index|new|deleted|copy|rename) ') + + def __init__(self, header): + self.header = header + self.hunks = [] + + def binary(self): + for h in self.header: + if h.startswith('index '): + return True + + def pretty(self, fp): + for h in self.header: + if h.startswith('index '): + fp.write(_('this modifies a binary file (all or nothing)\n')) + break + if self.pretty_re.match(h): + fp.write(h) + if self.binary(): + fp.write(_('this is a binary file\n')) + break + if h.startswith('---'): + fp.write(_('%d hunks, %d lines changed\n') % + (len(self.hunks), + sum([h.added + h.removed for h in self.hunks]))) + break + fp.write(h) + + def write(self, fp): + fp.write(''.join(self.header)) + + def allhunks(self): + for h in self.header: + if self.allhunks_re.match(h): + return True + + def files(self): + fromfile, tofile = self.diff_re.match(self.header[0]).groups() + if fromfile == tofile: + return [fromfile] + return [fromfile, tofile] + + def filename(self): + return self.files()[-1] + + def __repr__(self): + return '
' % (' '.join(map(repr, self.files()))) + + def special(self): + for h in self.header: + if self.special_re.match(h): + return True + +def countchanges(hunk): + add = len([h for h in hunk if h[0] == '+']) + rem = len([h for h in hunk if h[0] == '-']) + return add, rem + +class hunk(object): + maxcontext = 3 + + def __init__(self, header, fromline, toline, proc, before, hunk, after): + def trimcontext(number, lines): + delta = len(lines) - self.maxcontext + if False and delta > 0: + return number + delta, lines[:self.maxcontext] + return number, lines + + self.header = header + self.fromline, self.before = trimcontext(fromline, before) + self.toline, self.after = trimcontext(toline, after) + self.proc = proc + self.hunk = hunk + self.added, self.removed = countchanges(self.hunk) + + def __cmp__(self, rhs): + # since the hunk().toline needs to be adjusted when hunks are + # removed/added, we can't take it into account when we cmp + attrs = ['header', 'fromline', 'proc', 'hunk', 'added', 'removed'] + for attr in attrs: + selfattr = getattr(self, attr, None) + rhsattr = getattr(rhs, attr, None) + + if selfattr is None or rhsattr is None: + raise util.Abort(_('non-existant attribute %s') % attr) + + rv = cmp(selfattr, rhsattr) + if rv != 0: + return rv + return rv + + + def write(self, fp): + delta = len(self.before) + len(self.after) + if self.after and self.after[-1] == '\\ No newline at end of file\n': + delta -= 1 + fromlen = delta + self.removed + tolen = delta + self.added + fp.write('@@ -%d,%d +%d,%d @@%s\n' % + (self.fromline, fromlen, self.toline, tolen, + self.proc and (' ' + self.proc))) + fp.write(''.join(self.before + self.hunk + self.after)) + + pretty = write + + def filename(self): + return self.header.filename() + + def __repr__(self): + return '' % (self.filename(), self.fromline) + +def parsepatch(fp): + class parser(object): + def __init__(self): + self.fromline = 0 + self.toline = 0 + self.proc = '' + self.header = None + self.context = [] + self.before = [] + self.hunk = [] + self.stream = [] + + def addrange(self, (fromstart, fromend, tostart, toend, proc)): + self.fromline = int(fromstart) + self.toline = int(tostart) + self.proc = proc + + def addcontext(self, context): + if self.hunk: + h = hunk(self.header, self.fromline, self.toline, self.proc, + self.before, self.hunk, context) + self.header.hunks.append(h) + self.stream.append(h) + self.fromline += len(self.before) + h.removed + self.toline += len(self.before) + h.added + self.before = [] + self.hunk = [] + self.proc = '' + self.context = context + + def addhunk(self, hunk): + if self.context: + self.before = self.context + self.context = [] + self.hunk = hunk + + def newfile(self, hdr): + self.addcontext([]) + h = header(hdr) + self.stream.append(h) + self.header = h + + def finished(self): + self.addcontext([]) + return self.stream + + transitions = { + 'file': {'context': addcontext, + 'file': newfile, + 'hunk': addhunk, + 'range': addrange}, + 'context': {'file': newfile, + 'hunk': addhunk, + 'range': addrange}, + 'hunk': {'context': addcontext, + 'file': newfile, + 'range': addrange}, + 'range': {'context': addcontext, + 'hunk': addhunk}, + } + + p = parser() + + state = 'context' + for newstate, data in scanpatch(fp): + try: + p.transitions[state][newstate](p, data) + except KeyError: + raise patch.PatchError('unhandled transition: %s -> %s' % + (state, newstate)) + state = newstate + return p.finished() + +def filterpatch(ui, chunks, shouldprompt=True): + chunks = list(chunks) + chunks.reverse() + seen = {} + def consumefile(): + consumed = [] + while chunks: + if isinstance(chunks[-1], header): + break + else: + consumed.append(chunks.pop()) + return consumed + + resp_all = [None] + + """ If we're not to prompt (i.e. they specified the --all flag) + we pre-emptively set the 'all' flag """ + if shouldprompt == False: + resp_all = ['y'] + + resp_file = [None] + applied = {} + def prompt(query): + if resp_all[0] is not None: + return resp_all[0] + if resp_file[0] is not None: + return resp_file[0] + while True: + resps = _('[Ynsfdaq?]') + choices = (_('&Yes, shelve this change'), + _('&No, skip this change'), + _('&Skip remaining changes to this file'), + _('Shelve remaining changes to this &file'), + _('&Done, skip remaining changes and files'), + _('Shelve &all changes to all remaining files'), + _('&Quit, shelving no changes'), + _('&?')) + r = ui.promptchoice("%s %s " % (query, resps), choices) + if r == 7: + c = shelve.__doc__.find('y - shelve this change') + for l in shelve.__doc__[c:].splitlines(): + if l: ui.write(_(l.strip()) + '\n') + continue + elif r == 0: # yes + ret = 'y' + elif r == 1: # no + ret = 'n' + elif r == 2: # Skip + ret = resp_file[0] = 'n' + elif r == 3: # file (shelve remaining) + ret = resp_file[0] = 'y' + elif r == 4: # done, skip remaining + ret = resp_all[0] = 'n' + elif r == 5: # all + ret = resp_all[0] = 'y' + elif r == 6: # quit + raise util.Abort(_('user quit')) + return ret + while chunks: + chunk = chunks.pop() + if isinstance(chunk, header): + resp_file = [None] + fixoffset = 0 + hdr = ''.join(chunk.header) + if hdr in seen: + consumefile() + continue + seen[hdr] = True + if resp_all[0] is None: + chunk.pretty(ui) + if shouldprompt == True: + r = prompt(_('shelve changes to %s?') % + _(' and ').join(map(repr, chunk.files()))) + else: + r = 'y' + + if r == 'y': + applied[chunk.filename()] = [chunk] + if chunk.allhunks(): + applied[chunk.filename()] += consumefile() + else: + consumefile() + else: + if resp_file[0] is None and resp_all[0] is None: + chunk.pretty(ui) + r = prompt(_('shelve this change to %r?') % + chunk.filename()) + if r == 'y': + if fixoffset: + chunk = copy.copy(chunk) + chunk.toline += fixoffset + applied[chunk.filename()].append(chunk) + else: + fixoffset += chunk.removed - chunk.added + return reduce(operator.add, [h for h in applied.itervalues() + if h[0].special() or len(h) > 1], []) + +def refilterpatch(allchunk, selected): + ''' return unshelved chunks of files to be shelved ''' + l = [] + fil = [] + for c in allchunk: + if isinstance(c, header): + if len(l) > 1 and l[0] in selected: + fil += l + l = [c] + elif c not in selected: + l.append(c) + if len(l) > 1 and l[0] in selected: + fil += l + return fil + +def makebackup(ui, repo, dir, files): + try: + os.mkdir(dir) + except OSError, err: + if err.errno != errno.EEXIST: + raise + + backups = {} + for f in files: + fd, tmpname = tempfile.mkstemp(prefix=f.replace('/', '_')+'.', + dir=dir) + os.close(fd) + ui.debug('backup %r as %r\n' % (f, tmpname)) + util.copyfile(repo.wjoin(f), tmpname) + backups[f] = tmpname + + return backups + +def getshelfpath(repo, name): + if name: + shelfpath = "shelves/" + name + else: + # Check if a shelf from an older version exists + if os.path.isfile(repo.join('shelve')): + shelfpath = 'shelve' + else: + shelfpath = "shelves/default" + + return shelfpath + +def shelve(ui, repo, *pats, **opts): + '''interactively select changes to set aside + + If a list of files is omitted, all changes reported by "hg status" + will be candidates for shelving. + + You will be prompted for whether to shelve changes to each + modified file, and for files with multiple changes, for each + change to use. + + The shelve command works with the Color extension to display + diffs in color. + + On each prompt, the following responses are possible:: + + y - shelve this change + n - skip this change + + s - skip remaining changes to this file + f - shelve remaining changes to this file + + d - done, skip remaining changes and files + a - shelve all changes to all remaining files + q - quit, shelving no changes + + ? - display help''' + + if not ui.interactive: + raise util.Abort(_('shelve can only be run interactively')) + + # List all the active shelves by name and return ' + if opts['list']: + listshelves(ui,repo) + return + + forced = opts['force'] or opts['append'] + + # Shelf name and path + shelfname = opts.get('name') + shelfpath = getshelfpath(repo, shelfname) + + if os.path.exists(repo.join(shelfpath)) and not forced: + raise util.Abort(_('shelve data already exists')) + + def shelvefunc(ui, repo, message, match, opts): + changes = repo.status(match=match)[:5] + modified, added, removed = changes[:3] + files = modified + added + removed + diffopts = mdiff.diffopts(git=True, nodates=True) + patch_diff = ''.join(patch.diff(repo, repo.dirstate.parents()[0], + match=match, changes=changes, opts=diffopts)) + + fp = cStringIO.StringIO(patch_diff) + ac = parsepatch(fp) + fp.close() + + chunks = filterpatch(ui, ac, not opts['all']) + rc = refilterpatch(ac, chunks) + + contenders = {} + for h in chunks: + try: contenders.update(dict.fromkeys(h.files())) + except AttributeError: pass + + newfiles = [f for f in files if f in contenders] + + if not newfiles: + ui.status(_('no changes to shelve\n')) + return 0 + + modified = dict.fromkeys(changes[0]) + + backupdir = repo.join('shelve-backups') + + try: + bkfiles = [f for f in newfiles if f in modified] + backups = makebackup(ui, repo, backupdir, bkfiles) + + # patch to shelve + sp = cStringIO.StringIO() + for c in chunks: + if c.filename() in backups: + c.write(sp) + doshelve = sp.tell() + sp.seek(0) + + # patch to apply to shelved files + fp = cStringIO.StringIO() + for c in rc: + if c.filename() in backups: + c.write(fp) + dopatch = fp.tell() + fp.seek(0) + + try: + # 3a. apply filtered patch to clean repo (clean) + if backups: + hg.revert(repo, repo.dirstate.parents()[0], backups.has_key) + + # 3b. apply filtered patch to clean repo (apply) + if dopatch: + ui.debug('applying patch\n') + ui.debug(fp.getvalue()) + patch.internalpatch(fp, ui, 1, repo.root) + del fp + + # 3c. apply filtered patch to clean repo (shelve) + if doshelve: + ui.debug("saving patch to shelve\n") + if opts['append']: + f = repo.opener(shelfpath, "a") + else: + f = repo.opener(shelfpath, "w") + f.write(sp.getvalue()) + del f + del sp + except: + try: + for realname, tmpname in backups.iteritems(): + ui.debug('restoring %r to %r\n' % (tmpname, realname)) + util.copyfile(tmpname, repo.wjoin(realname)) + ui.debug('removing shelve file\n') + os.unlink(repo.join(shelfpath)) + except OSError: + pass + + return 0 + finally: + try: + for realname, tmpname in backups.iteritems(): + ui.debug('removing backup for %r : %r\n' % (realname, tmpname)) + os.unlink(tmpname) + os.rmdir(backupdir) + except OSError: + pass + fancyopts.fancyopts([], commands.commitopts, opts) + + # wrap ui.write so diff output can be labeled/colorized + def wrapwrite(orig, *args, **kw): + label = kw.pop('label', '') + for chunk, l in patch.difflabel(lambda: args): + orig(chunk, label=label + l) + oldwrite = ui.write + extensions.wrapfunction(ui, 'write', wrapwrite) + try: + return cmdutil.commit(ui, repo, shelvefunc, pats, opts) + finally: + ui.write = oldwrite + +def listshelves(ui, repo): + # Check for shelve file at old location first + if os.path.isfile(repo.join('shelve')): + ui.status('default\n') + + # Now go through all the files in the shelves folder and list them out + dirname = repo.join('shelves') + if os.path.isdir(dirname): + for filename in os.listdir(repo.join('shelves')): + ui.status(filename + '\n') + +def unshelve(ui, repo, **opts): + '''restore shelved changes''' + + # Shelf name and path + shelfname = opts.get('name') + shelfpath = getshelfpath(repo, shelfname) + + # List all the active shelves by name and return ' + if opts['list']: + listshelves(ui,repo) + return + + try: + patch_diff = repo.opener(shelfpath).read() + fp = cStringIO.StringIO(patch_diff) + if opts['inspect']: + ui.status(fp.getvalue()) + else: + files = [] + ac = parsepatch(fp) + for chunk in ac: + if isinstance(chunk, header): + files += chunk.files() + backupdir = repo.join('shelve-backups') + backups = makebackup(ui, repo, backupdir, set(files)) + + ui.debug('applying shelved patch\n') + patchdone = 0 + try: + try: + fp.seek(0) + internalpatch(fp, ui, 1, repo.root) + patchdone = 1 + except: + if opts['force']: + patchdone = 1 + else: + ui.status('restoring backup files\n') + for realname, tmpname in backups.iteritems(): + ui.debug('restoring %r to %r\n' % + (tmpname, realname)) + util.copyfile(tmpname, repo.wjoin(realname)) + finally: + try: + ui.debug('removing backup files\n') + shutil.rmtree(backupdir, True) + except OSError: + pass + + if patchdone: + ui.debug("removing shelved patches\n") + os.unlink(repo.join(shelfpath)) + ui.status("unshelve completed\n") + except IOError: + ui.warn('nothing to unshelve\n') + +cmdtable = { + "shelve": + (shelve, + [('A', 'addremove', None, + _('mark new/missing files as added/removed before shelving')), + ('f', 'force', None, + _('overwrite existing shelve data')), + ('a', 'append', None, + _('append to existing shelve data')), + ('', 'all', None, + _('shelve all changes')), + ('n', 'name', '', + _('shelve changes to specified shelf name')), + ('l', 'list', None, _('list active shelves')), + ] + commands.walkopts, + _('hg shelve [OPTION]... [FILE]...')), + "unshelve": + (unshelve, + [('i', 'inspect', None, _('inspect shelved changes only')), + ('f', 'force', None, + _('proceed even if patches do not unshelve cleanly')), + ('n', 'name', '', + _('unshelve changes from specified shelf name')), + ('l', 'list', None, _('list active shelves')), + ], + _('hg unshelve [OPTION]...')), +} diff --git a/.hgext/hgshelve/hgshelve.pyc b/.hgext/hgshelve/hgshelve.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c09fc67b8553fb4234526f35043dc509ce4e09a8 GIT binary patch literal 22530 zcmcJXdvILWec#XB#cP*%kN^n~A|+l@Bn65uTa_hQrS&i=JG5d*xsU@2A`35fFMvxf z_Ad4=NI)Ufi77{NI%y|QciM5A+LM_!(?8OgOf&8@jVEcGx=ow9ZD!IxGJQWLoj%fO z-A+4c`uYCO-3KW;NkNs;JvjF~f9H38?{n^c`@fEr>%aLYK3jG9zZw3%#FO1AI9GFS zi8OGvg1Z^GdciFfT%h-&yIFMg0k<^Z>Vs}+u#+EhOGBr-}1Wmn(hmiD;%s9PHKb%XBam|GgNxyX;ZrSVRF!Yxg7@_XIV-cEj>TiVyjPr9Ya zPJYTQO?C47-O_#+PrBrQs|~rkfm@n(@r+wzQN!+CmUGb6M%=qBbJo>LE`G$Vu(+~H z?mGA8(jiydW7UUUZM0K8)~$Zj)yA#*F&7_kwF&nwGlZ_T*9woi+CIx1bG1p!Jnm{! zmO1Wf`z>?A)eczZq+2VvnDS{?n{l;47Z+UZpg>+3a5bQNq*HjPQwU4|;9EY{DFh4v z@P$V^g#f_RM{LaFokFHQ*=hMiUbs5s;z5_pxfxAAXQf3~JLR5Dvi}R%;I`X zLD~r0DKG7?k|nh`Y_CgzJ-(Gs@YWC#ZxhGFmHHG?* z^IYV~evjl%;F1nQ!h?5_6eJRR50FQ>_KrHLIg%*?z_dpPRT98Y#M7H;Q9U|-TqhZl*EEJoJ-48k99!J ziwB?xp(FcMlFcj*uWzzxNh7ok5gAmP&H8qD!QRvBH(pR#do2!cr>&bwV>PTLEodff zZJ#TL{ANfw}DI?6yW;1QInd(;D0%WTK6hBZT!fK0r;EO{qF_;R*gFV4;FdFO&iouD(a4;E+1?8YBaUpC9e~<+I4!YoVF%S_-jlpP2 zA2@fw_4*Hr>(s|MJ`G*p*zn?js^P`ef_s*Jjd5RZy~M@H0@|z;-1i3?M{RyMcozP> z0icJdhk02LEL{>L%>IG4Wp`u9w?#JiwxjpAW&09jf~^YygRDpoF!-2q3Gx6ubwCgb zkqYB#ol7r4wpepWg9#8lUlmD6`s(i#Pxg5dkiHrSpIfhM8`AIbD>Wf01Qz?S43s9s zB$R}5k6F;MfobA#>l*~Gt7MTj3#Lfs=QOX0{x@2iu@QDFuGGY?MxyWmTx$)Qo7tLg zE)rQuT3OrlP}3+}Ju+*joYzuXPrWrq>UK-g;@YfQY203egG`%FYq+2k6rG58I2eR{ z_Z7y1p&%3ei)X{LXIB&S>3Jh+K_M1f;K>9Gm_@dLe+XIR2lfIt+Juz&3$4yVL@1zz zIjOIC=-=AYS)-gid)8K|dFC{9r!*5LyQN;HHS0;+TFS&Ym{ht!*}L{y)NM8+E!5*yw4-duUjr zk1@*k@feJ@#Vwg~*(_y1*+_49bUE4zlc|lCYnjUM+Df`a>>(CIgFVh`bezPDtgKyW zwKFN~=%mVo7~`sCl!I7qy=%6uw$jaJ7HQf!HH(fYIip1M6^T)deLZQ|P*U@z2u0QH z)Uw+Bb&nQhqthf0%c-Up&uO5Kkhox?FfrES)xANfI04`8<=GF{PN0Sk=_yRW%LfY4 zC+JgENBt8Oe3B>oNs<^3Cy=F$rh!C}_Bd|&D~!ymc?_yGxr`H+*P3j^n?t9(%OE4N z7?nXR4_T&ct`sGEIcx9&9J+o5oOr-u1&<`*xg!t4>>=(|-PyKjt6_dC_JxqYV6! zmAv60D8#e|^I0-mCv!1<>Dr-OLL-PJurVaCF0eZmf{ilPxR#>s^O*?SkQ|yrV}M5= zr_dP9i(gG(;&<)gm!$cwCyh#LyGkw-Bf6mMh9K^)N*Bl5qJE#u*8l7->Oba|Qg2ZQ zP5q#{u?IZ?v((&*VqNA5d4nT;rqk5F%gae{PcRZ@IyD-^$XVZA`BjxH~B>PcxDNzq`OT* zSpPO<+UfRMl7$%j$x0IAw}c*}#v|cerCtxyRwyNh=Wwc=iJq+oo$hH{?x?)%5KT_h zLL=ofAvqJGxz}AQ&y7;wqYWeb+pVM>dw)SXwTZxOZzFc2Kd!c)A~7Sq9yg*-c3!g0 zb?aNH)#8r9zn`p|NdPScmu~pnilZKZGCOW$7 zeCUHC0nQKtD_wWu`8F_TK_;Ct* z0wU6uJ@k4^?sJUQqI)%6J~iER7yxfFI<^CE^L_ zam24zdm*Z^_2$+lfZjDSob5o~4RhH@W^5WeJv3zA4np5bTfQd<1x!w9f=yPI!4{GM z`N(0wLtmh7v?B;Q^BLKb=>*P#stP^OF0BFU{*8i6^ zEwi=F*7EWXGfDrNw7epZt?5JI9_h2J8CR1^y-QAyQ}&@VkBBy(=tqa*M~&19278qN&9Aw;zOS11jX221-&MbaVCVpZfQeW@kb_I-g2@_1EB z*$lc%*N){zgv11-Dv7YiBm$CPasz*s=N%J^sPRr;A}9`ReotQlu6bW-)%P>>{fv9Z z422y+Dro&dg)|n7vVCaI%&60rp7l(684%5Bj-DYGeO8HSKhYq1GS`AnT{Es|#kuQ2 z<*vOBDf4Q&*&se=p4g9REaA-s7x>Qrsp?h#gws#*WG|D%=1!pNI1U1V?~*aYOBupX z7O0X(!O4)tpH+?v;XQ{Dnf{svkpKW9&Jxc6j|#FsN%CHQu*||v@0%5VhdkoMg4S0H z3VmUbE2Ypv%fyffOXO8Wt72O$NVaUjFEt*LwMIsUU(jhhVvTWYx<;|7eu1QCN}!3z zp#}5>{WL(}4x&^P$a@^(F=X5raOpHJG%L6nn)-I3D8NcN(Ya64X#7Y7V63=a*)k7! zt8F&Yrz-U3-Rlk>aeFH`S?lGpR;|2)IzvSTXPA4~_{ z8yBhXP9>*bY8M5(_*-i zGajlL;N^eseh9JicHo&ECVMrUPeWoOVoG*dCrM$tVoqY2mF8H|vE+%`8C<^8{?AJ< zoyf{&kwpqE&dF9YA?10}*ij7ZSy__N6I+jWWy2Zo&I!+bUfn9MwpEI&VNn{XAT{E~ zLsNj+Azx?wOeE@p!@*-5+Q_XdK>&w)rnDAr+df7{NaTNT_<-P!*)lzO^Y9?P!HnPJ z>9;loPLanz(j5$>jfV=5lrgP=;Ve#>&qhfv$PFV#`qGKo3*Lm(z_tk=CbTl*zQvP6 z>*Y1KLR|Eg5`-L<=@87)#8Xx@=ZB8*WvB z*!~TWnxXacWMT{_7U0ap`U7n(Bnpd^x#g{_VYfD*|6`QN5Z5=T80HV6XM{iKr;>X{ zC2K|Z;5s^~?%wWsKZaQ2wn|>-$JBs?hq3MC=Tt?|dPJ{sA2P`bPt=4k^Nj5c$j5wR zjmivk0bM?-xO)vCOXcW2)_16NY$>&Ev}Yhsi6K znB*VuWP3?;(ANK7*Q$^-G?ctV2El%HQ1l3ic*;Y!L${C$Bq@}5P2?|e7^=|mDmNRW z6N(;SDAT;0Vc&;@KGm$vIQLOIq?hQmQ-AShT&|V)0A8&Q)-r2kBfK7z^43h zWbD-Ex0uIF%c7e!FRp8Ak5FUC`86^u6Sd zH*Y_2!{JbHfavJn;0XVTrpJ15(Jq54Mv`yXthbTu9s11~m;=`yW{l%I)GJnwY$aU| z^&0J>DrC7n{OUy7tWHYvcgS{vB7}MK#R!P*Vl<~;48Y5>l9n(Vt7{2D9G*#K`)RXH zPCQhVClI%C(hTI)lKm}-4kc{(5aFJ$xejoEqO2c_|Tn%uKKy$}mE zX*lnZZ_o?y4^c#V$C0BfuHe+ZBRGX9#~%3opW?-{$Ft<_H#RP*_6L<1Yjuki0!t&h5{Y<7a_M+Awa<2hZhcJsn{9yuQObBP=f~37fOYpV9bqjCF(G? zb_r3zl_+tOWZejl^4ZtnEu{GS#zbEtEMkWzY+F=!i9tU{U|I8yTbD&ILl7; z6l23%#*`ysPpKqH-h@k<3^3^4D=2LAUeT?f8H)~*K$C9$`+$kkf6g^4=0k~6IxKV% zD8dN9l}<;4-bh$c+-<~!lG@-pk_CvkxX2|$>_FXZlB;LK1RI+M1zRO2uH-Jfk4(c* z1T1`eyH3OiCHH>O1W4`{(p+nKj$zRA9G=@0%9zW~ywGu*Ta@%26S#ng{EE2IO2*aeg8EM=r?^6Y4VqT=EH%#-FKqmD5Nup2^estOp88gS zxBEv}mS2gTeQI8VAcwdI=Oy3(FO1mU>yo`%p%!I`9!T~nfQM$?=aod?Qf8CMysc2K zF*L`NrTg8%XW1~7FSZZ3_Owf8q;3XwxPQhja)H`m*MH3IfKik&+mp$B$BGMnGHJWL2PR6x~ z3G_ARshpi!iKI!@4(R5{?K+SmZ$BSc8fBKT^FY~<-5%Q?3>FSbDLS`ZRXWTg3*6B1 zzbMIZAZ{qRly&9>3*tm!r?18rECgG>q#@H^2y{mQ@)mvA0aDF)NQGtxE8|by$#@1L zWAvmde+W;eq!CoYt!2c^h%7_M8T@k}1+=5lb@VPZZU#7v%>5Mc=Q8_fP8}kEtBC?+ zz-?XBF)pSe{Bs0OWfL!5J15x#t))keRS4QJp=giEZIijasPIg%@$c+e+<4YCz6~`n z7Z=5ti|fvOI)Jch{0(2cw_Ci=iofQIC#`sr*83pvAxTh1xX^glS5I}TC+?|^ef9os zb>7=(^g`oPzWPA7I`5rVKjEvVts1)y!sOn!a5^Kb@PB@#+(M9xZ0f?C6odE7GTD@G zz1hfCYL$%_ubIj?`DUD*3H=pZE@*QZAwPdOK--h^DRnoK<~=pXRkNT{4n8Va4_xQY zJNaAQ3?ec$9lcnIQw_bZ)ZDc#1 zI{AH@NjqPrz-^?RUKU6>`J$b)Ub27zq4VE@Z*&GsIB5hMC8|-oc*Lp)yM7qmgF(iT3Y2SPy?@U zFUZ7ErYo6tA;gDy%#{)7kz#G$m=O>gn{jK~EE2xKXl6E`pC&WNTb5SsUSV`pU9||4 zW$LgDO3g*J7hyEgwUmbvXF`i#?`d#nu?WY_xspBphF!m_Ucx6mj7>Tj?8oFAb|*0M zbkW;Cy7b-u%mz5AU_oKhOhla1b|00T$X?8Znou-lvG=@9AN`AxPqbdN9iG#Q4f}P% z^U&`4tEX6*t3It;mHH+Z@^uhvzNuZ~vn`5#RP97t*;=|;uX&8y zlv&LEpC41T2u5EB@P$S6msB9Un8xyPiDWBXS>cnO=v~UAuPFJfl2=HK2K)tqpH`XX zi~gb#;cJ%`zWEK18A~(U_JAlvN8AqIsm$HziBf5R2y&rB{=jihE!@TAO;jKUpbQ=D zBR?9PDGYHlQx}Pj7WNd5QL6izYBfRWp~7qsde>R27I$6b$-Y6diWz}*OG;Go2c(@Y zUCTNLNE{=1TjE6|u-U{2Ua1evmLo`L#IejeyLfCSs`;kRGL)H}MAcAW1-F6KgYHs0 zZr$e>-f3z|HBc?j;w~nTi6kbrd#lJpeOeQ4HawBnkbJru**SIKBbHQOXmx6h;*Ev; z*7hj-GDBJ<#KNUUlL!Y-EFw_<85o50G%scuv5(PT;Kfr4nO#$bq+2WQql;Uji$^ph z{*I)AE-N0-PZthYuBsiC^wncK`;WF2$20Z;Cn?FL`ySSa**rFwI-iFD&TJ<_rl84{Jo{p&aNDUXJHZNWTVD~($% z?k-Alzw*kJ%L{MV_P68prc{EpUcZ^?-SS-GsaKF&CQa%o0z|o5e0_7(f7>K_k>Io5 zs=KY*cs|0=m9~tMMn6xbiA`GrVAuqH4PJw-uzM)RJYKrq)J2+yr#K1N^~%lI&-6u+ zn}oN+vEB!%O$DP6p2+S9!bJBJXM^!VRgj4F^ccy#LWWJ07!Y*?96RDKpJjiI2r(P9 z|5%?!jcmLbpb!eJN;o&hT)x%+Rcf>CXhbnXk;PK+&pp1AnjEO;o zZ(E8yC*cIRW#PgA{wA@Rw;-rv;Tq0nQ!H>+KnHLu_5fqt?4T0wvZ-r@WCz_WY)ww* zLOzOMA7j!5{-M{GKm%?p0ck=D%vhGg#9Z2sqb3hV(|dq1@1_ULd;Vx^B#(2T#4yXz z9;jd92270G8sGq-Mdf0%x^a^O6Xtru8H5lRl16Vo>e~C9oNQZ>WCHuo0Py)DYm>uG zbaUKY(L(JUIQtG%*Y{a2-(7l9+_7;b;k%#ZmhF?t%PV1p>%>{Rrv|Xv({;Y`iEC%V zezRI!*wX#}>)YY6wbf9utj+A04Rbre;6`~=v7{10Tiko*;)&NK*xBd&WN)UMe7@;h zdMkv{)UNZjr{ME`LZ6iuSE_3^Nq(i;oBzNjM}W>EWj+|yXQAuReA27~hrc^@#u{`7 z@TI~6c6bic8+?n}nbUt~Y@ep)1L{lFi)o!%x*rUydo980u524rx`&Fh&yLnbug0idq5`2IA_vgCR_e*Srnr7(Q3zhSe5VMETyeXdxi zBN0qr*Ykb)5NTGeu$7O*S7n{0{~_)34mCQ|{z$%A-l5W)p`Vh#pk8~E+7{-0Hs~V{ z>49EaXQ3|&62A!{1k=opBQ-kPSZRc51LD``=9>++1{>0Us9xWWzDmP+(?ZY=A)FJu zN8eI!84>vq3eEzeK5E)#=V6bmD&?f`uB?6wr)(ioB_qrw7iYrR1sD3b156oSMP_ps z$uzzAcbI!2Tpl5C>4h1R30;OzBE>2oe27fK(f~Sa2+1TyH)(X2Ifm^MHs&Fag0Mn} z5X8G%C?b3at0A-X3Bw*qDxzu#9v?*8LFyoT2&f@#`J7hLgp^2b+0Bk3Xm-Y3n=d&j zBR+__nXtI+Ubl5gC6}&Ua69{OfZZLUgA-0MLSlj@m>7}C_&-?O_!pQ?L^?2?&{h1S zAh<%Zi0m8KL5P(YirekP2l<~!3Nc#+_NbX6uy=+YXM%So-Ohe@XTNLe%Mp|O?fr@g z<jC$6yI`|UYpA|ihq|*;qglVotX~b@nRYufjxc2| zXvq*mA>w>6M=I;wnRQ!Fd3-$Sb_h^D;*x2h^v*#WR5m+BGwu#yOc1j1yA1ui#1Lom zVCT*uRT1R$;V}Eo-hZ<{Y9mho=pQn&Eic%3l^E!&g+*Y7~rJwNl=65SBsAkB2)W+o(EPPBq7cR0Djn5;neARHRpZ z_8ZLYlP-C}mS@*f)r`p(H;MxTe9zuT;l+XA3UFN!RW8=>CnC4?LO)a=`2bXq7Fd0( z2bG`8ekCN>I5e=R$xpdE2mG91=-xTa>A1pN3v&uf&D+O3KEhPw-3((s6E?%Rk(wH| z@CPEw>>7FWcBj}(J^L*T^+Oh0fTR};Gef}?aoOU_UM!x?jcv0u?dJrf%*;E_udK~5 zT2{H$E$$n~1g-fa6-#et5~65AA{lCr7lK;A3o%eo4XF*23uMz;c5kj*lY1|+0O+gF zQp_QU`UzlyIWP^|#FI;OYVwFdM6v zUo%Ii^Ai1tdjCx&e^trPk=VqWO`+ZJTjN(FtdlNv+>Ey~@4bxE^ySX2PV=kGKa0Mp zao$k!X$@we$Hd%}Ax?8MvMrY5Wk18;c7k3 zvdU`yUD-cW)o-XuuypLT-nC*M_WDgVkeP3!v#h(-1-fRgTb-jAopMiZxv?v$k=<8 zMHdF+u2gu6-?iXtxWZInqEHN;3Jw(csQ|prDGqkIEOGB!p-Af|iVBZT1&;I~F{m1LDF6h^fOc^Y87pmoGQxEk)X@tX@^t>OtH{*bWcAARxNb75N}2r=?#@wtNAH$!AL^7K}{N{tY5*5ZbB2@#?PWx?Aq}OWnKh!|9 zb@O)g9d-LzB~O!hIE{YPXqS-L+ z_#bQ1K>GP64m{M#$D_YN&Tt32WszitO=$Lb&6XYJ) zmsqv1$=Ae&#~H*ODhIR0J+Q-I;Q(LsPZW*^vxSMbri*;Z1ltt3q+S&cM2C7V@??LC zq!+=#xWGO)lK}>>P%gFwbPum!MVPte+hFlytP;?mo)RA!qzg9?wmxR1-mYahYf5YT zUK#GO5#gW7%Sby)BRa4uyWR{|Pyh z`AOCZ0E%QJ|F!JCJ(OUe*f#17@_t*$?0QFjkG{`|yrm^w;c&2zotT2ihkSfqfuTvB zS9!A6Y1kDtjLWCoC)k@CZ{oBj=`u4`2n@pE!JP z|E$|SYoPJ#dlr-m+BjE$&lce@GWL{u>*s=KzSy`WOIm9yVW8`*+sZfo8ilq>e>fj( z&C97wu#H{U&>oZ1s8+xLFy=k#z+S|NABAV6GG@ddGJirS-&iNYj=8MZ)%MX&ckk4+ zG394%osZb|ESlwesL$H=mM`8%`ZNgiQ+rpXeOSi3$DQ9ufswBPmzEbX$6_PIn10NL zWDm49oX5=jdD1Gg+f_&1BDf zwT`(=l|MC(ew|$3gtCP@rmX^7yv)l;s-zGbP8A{3|8@Mv0KyvrJ7xWNY?oeo`u}b*_oW-kg__>LuB~C1;}U@@xLY zLIUe{rPZ*XrRqs8Q##Qgg3zqG=yx=N8Mg-If6%L`@c*pbFO!&BGV@RYu;{<3+)P6< z4`&rhOm|Ry5s8*9X~+Q-P_B%MSa=iMW}Lwy^fupKY{dzVE%g&oX31eemdSC~kuuqE zCG58ovgi0haGb9)WC>0)&bYrE^s+5S*S_Uv#o4pWxL#@9)CWoD*AwEAP@$R4IvS!~ zTs!ZZ68*JL3Vq;^X3?+E*AuaD$7n56(LQXZaXkHnim65aNR3aB*cpodDK62P85{RE zeoc+Pt;Q1h`7nKP#ONo~K>TPoO!5YO0Z;qdnjhida9;*RXo~7-b^5A0$zZb3cm6Au zet;|!At=6W4siI^Yp=g?`L+3L=gyrA-}=<$?|nr%)3D~pCea>Q5QpiLi-NpkS7KN& zGCNNLqQTV|X!zkl!jdaq77zul@g-Q=?lN3ht;ZDtn0CRXLmD0V>he?cZ~Cd3UD_6ARL zH|6s8$&8l3)E>GEi$G*Ox?jh240w5Rl35r!> $HGRCPATH +echo "interactive=true" >> $HGRCPATH +echo "[extensions]" >> $HGRCPATH +echo "hgshelve=" >> $HGRCPATH + +hg init a +cd a + +for i in 1 2 3 4; do + echo $i >> file1.txt +done +cp file1.txt file2.txt +hg add file1.txt file2.txt +hg commit -d '1 0' -m 'first file' file1.txt +hg commit -d '2 0' -m 'second file' file2.txt +hg bundle --base -2 tip.bundle +hg add tip.bundle +hg commit -d '3 0' -m 'binary file' tip.bundle + +rm file1.txt +for i in a 1 2 3 4 b; do + echo $i >> file1.txt +done +cp file1.txt file2.txt +hg bundle --base -2 tip.bundle +hg commit -d '4 0' -m 'more changes' + +echo % create changes for shelving +hg revert --rev 2 --all +hg diff --nodates + +echo % do selective shelve +hg shelve<> $HGRCPATH +echo "color=" >> $HGRCPATH + +hg init repo +cd repo +cat > a < a <> $HGRCPATH +echo "interactive=true" >> $HGRCPATH +echo "[extensions]" >> $HGRCPATH +echo "hgshelve=" >> $HGRCPATH +echo "[diff]" >> $HGRCPATH +echo "git=True" >> $HGRCPATH + +echo % shelve +chmod 0755 a +hg shelve --color=always a <x$T4*^jL0KkKStX{nX#fBX|NrgVUcpx-fA>nDw?IGjzt|Zn3=N$Aw|KPWX!r1qxN +z^$Fr58kz=%Mg+nGH3ox5h7d3&k5fjP82~jVplFx@3<;)9G{#6607em$6DC2lXdu%9 +zWWtIPid_|~ry%P%q~tW$!Qw;eFEkK<6vCK+fG?6(b&ooFr>96-LNf@JgmnR>9F0i> +ze{=>YwaT|6O3VY*<7PDEZNDG$>}T!HpVbAF4V<{0^jlDd5^jXR;#7pJv}%>Mf#_26KF$$ +z01Qg)6*km`Z;!B^0@j~Kfn)~2GXWMpfFcFFL^RD?et!VbV9$*?K&7}2Bv2(pTRHo> +qar#atNvM%#;0jJt&??Xnqyaz5Pzsh+06idB-Y(>daG@YeO>ELh`lWmT + +diff --git a/file2.txt b/file2.txt +--- a/file2.txt ++++ b/file2.txt +@@ -1,5 +1,4 @@ +-a + 1 + 2 + 3 + 4 +diff --git a/file1.txt b/file1.txt +--- a/file1.txt ++++ b/file1.txt +@@ -1,4 +1,3 @@ +-a + 1 + 2 + 3 +diff --git a/file2.txt b/file2.txt +--- a/file2.txt ++++ b/file2.txt +@@ -3,4 +3,3 @@ + 2 + 3 + 4 +-b +% unshelve and verify +unshelve completed +% check shelf names +M tip.bundle +file2 +file1 +file2 +file1 +unshelve completed +unshelve completed +M file1.txt +M file2.txt +M tip.bundle +nothing to unshelve diff --git a/.hgrc b/.hgrc index c004d46d..087ae29c 100644 --- a/.hgrc +++ b/.hgrc @@ -8,8 +8,8 @@ editor = vim # Shelve: http://mercurial.selenic.com/wiki/ShelveExtension # Bookmarks: http://mercurial.selenic.com/wiki/BookmarksExtension [extensions] -prompt = ~/Projects/python/hg-prompt/prompt.py -hgshelve = ~/Projects/python/hgshelve/hgshelve.py +prompt = ~/.hgext/hg-prompt/prompt.py +hgshelve = ~/.hgext/hgshelve/hgshelve.py bookmarks = hgext.extdiff =