##// END OF EJS Templates
largefiles: access to specific fields only if largefiles enabled (issue4547)...
largefiles: access to specific fields only if largefiles enabled (issue4547) Even if largefiles extension is enabled in a repository, "repo" object, which isn't "largefiles.reposetup()"-ed, is passed to overridden functions in the cases below unexpectedly, because extensions are enabled for each repositories strictly. (1) clone without -U: (2) pull with -U: (3) pull with --rebase: combination of "enabled@src", "disabled@dst" and "not-required@src" cause this situation. largefiles requirement @src @dst @src result -------- -------- --------------- -------------------- enabled disabled not-required aborted unexpectedly required requirement error (intentional) -------- -------- --------------- -------------------- enabled enabled * success -------- -------- --------------- -------------------- disabled enabled * success (only for "pull") -------- -------- --------------- -------------------- disabled disabled not-required success required requirement error (intentional) -------- -------- --------------- -------------------- (4) update/revert with a subrepo disabling largefiles In these cases, overridden functions cause accessing to largefiles specific fields of not "largefiles.reposetup()"-ed "repo" object, and execution is aborted. - (1), (2), (4) cause accessing to "_lfstatuswriters" in "getstatuswriter()" invoked via "updatelfiles()" - (3) causes accessing to "_lfcommithooks" in "overriderebase()" For safe accessing to these fields, this patch examines whether passed "repo" object is "largefiles.reposetup()"-ed or not before accessing to them. This patch chooses examining existence of newly introduced "_largefilesenabled" instead of "_lfcommithooks" and "_lfstatuswriters" directly, because the former is better name for the generic "largefiles is enabled in this repo" mark than the latter. In the future, all other overridden functions should avoid largefiles specific processing for efficiency, and "_largefilesenabled" is better also for such purpose. BTW, "lfstatus" can't be used for such purpose, because some code paths set it forcibly regardless of existence of it in specified "repo" object.

File last commit:

r23749:a387b039 default
r24158:d414c28d stable
Show More
test-commit.t
604 lines | 13.8 KiB | text/troff | Tads3Lexer
Nicolas Dumazet
tests: unify test-commit
r11802 commit date test
$ hg init test
$ cd test
$ echo foo > foo
$ hg add foo
FUJIWARA Katsunori
ui: invoke editor for committing with HGEDITFORM environment variable...
r22205 $ cat > $TESTTMP/checkeditform.sh <<EOF
> env | grep HGEDITFORM
> true
> EOF
$ HGEDITOR="sh $TESTTMP/checkeditform.sh" hg commit -m ""
FUJIWARA Katsunori
commit: change "editform" to distinguish merge commits from others...
r22248 HGEDITFORM=commit.normal.normal
Nicolas Dumazet
tests: unify test-commit
r11802 abort: empty commit message
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-commit
r11802 $ hg commit -d '0 0' -m commit-1
$ echo foo >> foo
$ hg commit -d '1 4444444' -m commit-3
abort: impossible time zone offset: 4444444
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-commit
r11802 $ hg commit -d '1 15.1' -m commit-4
Nicolas Dumazet
util: get rid of extra trailing whitespace in parsedate abort message
r12105 abort: invalid date: '1\t15.1'
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-commit
r11802 $ hg commit -d 'foo bar' -m commit-5
Nicolas Dumazet
util: get rid of extra trailing whitespace in parsedate abort message
r12105 abort: invalid date: 'foo bar'
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-commit
r11802 $ hg commit -d ' 1 4444' -m commit-6
$ hg commit -d '111111111111 0' -m commit-7
abort: date exceeds 32 bits: 111111111111
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Adrian Buehlmann
parsedate: abort on negative dates (issue2513)...
r13062 $ hg commit -d '-7654321 3600' -m commit-7
abort: negative date value: -7654321
[255]
Nicolas Dumazet
tests: unify test-commit
r11802
commit added file that has been deleted
$ echo bar > bar
$ hg add bar
$ rm bar
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m commit-8
Martin Geisler
commit: note when files are missing...
r13899 nothing changed (1 missing files, see 'hg status')
Matt Mackall
tests: add exit codes to unified tests
r12316 [1]
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m commit-8-2 bar
Nicolas Dumazet
tests: unify test-commit
r11802 abort: bar: file not found!
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-commit
r11802
$ hg -q revert -a --no-backup
$ mkdir dir
$ echo boo > dir/file
$ hg add
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 adding dir/file (glob)
Nicolas Dumazet
tests: unify test-commit
r11802 $ hg -v commit -m commit-9 dir
Mads Kiilerich
localrepo: show headline notes in commitctx before showing filenames...
r23749 committing files:
Nicolas Dumazet
tests: unify test-commit
r11802 dir/file
Mads Kiilerich
localrepo: show headline notes in commitctx before showing filenames...
r23749 committing manifest
committing changelog
Nicolas Dumazet
tests: unify test-commit
r11802 committed changeset 2:d2a76177cb42
$ echo > dir.file
$ hg add
adding dir.file
$ hg commit -m commit-10 dir dir.file
abort: dir: no match under directory!
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-commit
r11802
$ echo >> dir/file
$ mkdir bleh
$ mkdir dir2
$ cd bleh
$ hg commit -m commit-11 .
abort: bleh: no match under directory!
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-commit
r11802 $ hg commit -m commit-12 ../dir ../dir2
abort: dir2: no match under directory!
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-commit
r11802 $ hg -v commit -m commit-13 ../dir
Mads Kiilerich
localrepo: show headline notes in commitctx before showing filenames...
r23749 committing files:
Nicolas Dumazet
tests: unify test-commit
r11802 dir/file
Mads Kiilerich
localrepo: show headline notes in commitctx before showing filenames...
r23749 committing manifest
committing changelog
Nicolas Dumazet
tests: unify test-commit
r11802 committed changeset 3:1cd62a2d8db5
$ cd ..
$ hg commit -m commit-14 does-not-exist
Mads Kiilerich
tests: hide 'No such file or directory' messages...
r15521 abort: does-not-exist: * (glob)
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Mads Kiilerich
tests: introduce c-style conditional sections in .t tests...
r16842
#if symlink
Nicolas Dumazet
tests: unify test-commit
r11802 $ ln -s foo baz
$ hg commit -m commit-15 baz
abort: baz: file not tracked!
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Mads Kiilerich
tests: introduce c-style conditional sections in .t tests...
r16842 #endif
Nicolas Dumazet
tests: unify test-commit
r11802 $ touch quux
$ hg commit -m commit-16 quux
abort: quux: file not tracked!
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-commit
r11802 $ echo >> dir/file
$ hg -v commit -m commit-17 dir/file
Mads Kiilerich
localrepo: show headline notes in commitctx before showing filenames...
r23749 committing files:
Nicolas Dumazet
tests: unify test-commit
r11802 dir/file
Mads Kiilerich
localrepo: show headline notes in commitctx before showing filenames...
r23749 committing manifest
committing changelog
Nicolas Dumazet
tests: unify test-commit
r11802 committed changeset 4:49176991390e
An empty date was interpreted as epoch origin
$ echo foo >> foo
$ hg commit -d '' -m commit-no-date
$ hg tip --template '{date|isodate}\n' | grep '1970'
Matt Mackall
tests: add exit codes to unified tests
r12316 [1]
Adrian Buehlmann
introduce new RequirementError (issue2649)...
r13447
Make sure we do not obscure unknown requires file entries (issue2649)
$ echo foo >> foo
$ echo fake >> .hg/requires
$ hg commit -m bla
Mads Kiilerich
repo: rephrase the "missing requirement" error message...
r20820 abort: repository requires features unknown to this Mercurial: fake!
(see http://mercurial.selenic.com/wiki/MissingRequirement for more information)
Adrian Buehlmann
introduce new RequirementError (issue2649)...
r13447 [255]
Nicolas Dumazet
tests: unify test-commit
r11802 $ cd ..
partial subdir commit test
$ hg init test2
$ cd test2
$ mkdir foo
$ echo foo > foo/foo
$ mkdir bar
$ echo bar > bar/bar
$ hg add
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 adding bar/bar (glob)
adding foo/foo (glob)
"Bradley M. Kuhn"
commit: --edit/-e to force edit of otherwise-supplied commit message...
r21021 $ HGEDITOR=cat hg ci -e -m commit-subdir-1 foo
commit-subdir-1
HG: Enter commit message. Lines beginning with 'HG:' are removed.
HG: Leave message empty to abort commit.
HG: --
HG: user: test
HG: branch 'default'
HG: added foo/foo
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg ci -m commit-subdir-2 bar
Nicolas Dumazet
tests: unify test-commit
r11802
subdir log 1
$ hg log -v foo
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 0:f97e73a25882
Nicolas Dumazet
tests: unify test-commit
r11802 user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-commit
r11802 files: foo/foo
description:
commit-subdir-1
subdir log 2
$ hg log -v bar
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 1:aa809156d50d
Nicolas Dumazet
tests: unify test-commit
r11802 tag: tip
user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-commit
r11802 files: bar/bar
description:
commit-subdir-2
full log
$ hg log -v
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 1:aa809156d50d
Nicolas Dumazet
tests: unify test-commit
r11802 tag: tip
user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-commit
r11802 files: bar/bar
description:
commit-subdir-2
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 0:f97e73a25882
Nicolas Dumazet
tests: unify test-commit
r11802 user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-commit
r11802 files: foo/foo
description:
commit-subdir-1
$ cd ..
dot and subdir commit test
$ hg init test3
"Bradley M. Kuhn"
commit: --edit/-e to force edit of otherwise-supplied commit message...
r21021 $ echo commit-foo-subdir > commit-log-test
Nicolas Dumazet
tests: unify test-commit
r11802 $ cd test3
$ mkdir foo
$ echo foo content > foo/plain-file
$ hg add foo/plain-file
"Bradley M. Kuhn"
commit: --edit/-e to force edit of otherwise-supplied commit message...
r21021 $ HGEDITOR=cat hg ci --edit -l ../commit-log-test foo
commit-foo-subdir
HG: Enter commit message. Lines beginning with 'HG:' are removed.
HG: Leave message empty to abort commit.
HG: --
HG: user: test
HG: branch 'default'
HG: added foo/plain-file
Nicolas Dumazet
tests: unify test-commit
r11802 $ echo modified foo content > foo/plain-file
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg ci -m commit-foo-dot .
Nicolas Dumazet
tests: unify test-commit
r11802
full log
$ hg log -v
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 1:95b38e3a5b2e
Nicolas Dumazet
tests: unify test-commit
r11802 tag: tip
user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-commit
r11802 files: foo/plain-file
description:
commit-foo-dot
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 0:65d4e9386227
Nicolas Dumazet
tests: unify test-commit
r11802 user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-commit
r11802 files: foo/plain-file
description:
commit-foo-subdir
subdir log
$ cd foo
$ hg log .
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 1:95b38e3a5b2e
Nicolas Dumazet
tests: unify test-commit
r11802 tag: tip
user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-commit
r11802 summary: commit-foo-dot
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 0:65d4e9386227
Nicolas Dumazet
tests: unify test-commit
r11802 user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-commit
r11802 summary: commit-foo-subdir
$ cd ..
$ cd ..
Martin Geisler
tests: added a short description to issue numbers...
r12399 Issue1049: Hg permits partial commit of merge without warning
Nicolas Dumazet
tests: unify test-commit
r11802 $ hg init issue1049
$ cd issue1049
$ echo a > a
$ hg ci -Ama
adding a
$ echo a >> a
$ hg ci -mb
$ hg up 0
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo b >> a
$ hg ci -mc
created new head
$ HGMERGE=true hg merge
merging a
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
should fail because we are specifying a file name
$ hg ci -mmerge a
abort: cannot partially commit a merge (do not specify files or patterns)
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-commit
r11802
should fail because we are specifying a pattern
$ hg ci -mmerge -I a
abort: cannot partially commit a merge (do not specify files or patterns)
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-commit
r11802
should succeed
FUJIWARA Katsunori
commit: change "editform" to distinguish merge commits from others...
r22248 $ HGEDITOR="sh $TESTTMP/checkeditform.sh" hg ci -mmerge --edit
HGEDITFORM=commit.normal.merge
Nicolas Dumazet
tests: unify test-commit
r11802 $ cd ..
test commit message content
$ hg init commitmsg
$ cd commitmsg
$ echo changed > changed
$ echo removed > removed
Antonio Zanardo
commit: show active bookmark in commit editor helper text...
r18538 $ hg book currentbookmark
Nicolas Dumazet
tests: unify test-commit
r11802 $ hg ci -qAm init
$ hg rm removed
$ echo changed >> changed
$ echo added > added
$ hg add added
$ HGEDITOR=cat hg ci -A
HG: Enter commit message. Lines beginning with 'HG:' are removed.
HG: Leave message empty to abort commit.
HG: --
HG: user: test
HG: branch 'default'
Antonio Zanardo
commit: show active bookmark in commit editor helper text...
r18538 HG: bookmark 'currentbookmark'
Nicolas Dumazet
tests: unify test-commit
r11802 HG: added added
HG: changed changed
HG: removed removed
abort: empty commit message
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
FUJIWARA Katsunori
localrepo: save manually edited commit message as soon as possible...
r20765
test saving last-message.txt
$ hg init sub
$ echo a > sub/a
$ hg -R sub add sub/a
$ cat > sub/.hg/hgrc <<EOF
> [hooks]
> precommit.test-saving-last-message = false
> EOF
$ echo 'sub = sub' > .hgsub
$ hg add .hgsub
Sean Farley
tests: use TESTTMP instead of TESTDIR...
r20859 $ cat > $TESTTMP/editor.sh <<EOF
FUJIWARA Katsunori
localrepo: save manually edited commit message as soon as possible...
r20765 > echo "==== before editing:"
> cat \$1
> echo "===="
> echo "test saving last-message.txt" >> \$1
> EOF
$ rm -f .hg/last-message.txt
Sean Farley
tests: use TESTTMP instead of TESTDIR...
r20859 $ HGEDITOR="sh $TESTTMP/editor.sh" hg commit -S -q
FUJIWARA Katsunori
localrepo: save manually edited commit message as soon as possible...
r20765 ==== before editing:
HG: Enter commit message. Lines beginning with 'HG:' are removed.
HG: Leave message empty to abort commit.
HG: --
HG: user: test
HG: branch 'default'
HG: bookmark 'currentbookmark'
HG: subrepo sub
HG: added .hgsub
HG: added added
HG: changed .hgsubstate
HG: changed changed
HG: removed removed
====
abort: precommit.test-saving-last-message hook exited with status 1 (in subrepo sub)
[255]
$ cat .hg/last-message.txt
test saving last-message.txt
FUJIWARA Katsunori
cmdutil: make commit message shown in text editor customizable by template...
r21924 test that '[committemplate] changeset' definition and commit log
specific template keywords work well
$ cat >> .hg/hgrc <<EOF
> [committemplate]
FUJIWARA Katsunori
cmdutil: look commit template definition up by specified 'editform'...
r22012 > changeset.commit.normal = HG: this is "commit.normal" template
> HG: {extramsg}
> {if(currentbookmark,
> "HG: bookmark '{currentbookmark}' is activated\n",
> "HG: no bookmark is activated\n")}{subrepos %
> "HG: subrepo '{subrepo}' is changed\n"}
>
> changeset.commit = HG: this is "commit" template
> HG: {extramsg}
> {if(currentbookmark,
> "HG: bookmark '{currentbookmark}' is activated\n",
> "HG: no bookmark is activated\n")}{subrepos %
> "HG: subrepo '{subrepo}' is changed\n"}
>
FUJIWARA Katsunori
cmdutil: make commit message shown in text editor customizable by template...
r21924 > changeset = HG: this is customized commit template
> HG: {extramsg}
> {if(currentbookmark,
> "HG: bookmark '{currentbookmark}' is activated\n",
> "HG: no bookmark is activated\n")}{subrepos %
> "HG: subrepo '{subrepo}' is changed\n"}
> EOF
$ hg init sub2
$ echo a > sub2/a
$ hg -R sub2 add sub2/a
$ echo 'sub2 = sub2' >> .hgsub
$ HGEDITOR=cat hg commit -S -q
FUJIWARA Katsunori
cmdutil: look commit template definition up by specified 'editform'...
r22012 HG: this is "commit.normal" template
FUJIWARA Katsunori
cmdutil: make commit message shown in text editor customizable by template...
r21924 HG: Leave message empty to abort commit.
HG: bookmark 'currentbookmark' is activated
HG: subrepo 'sub' is changed
HG: subrepo 'sub2' is changed
abort: empty commit message
[255]
FUJIWARA Katsunori
cmdutil: look commit template definition up by specified 'editform'...
r22012 $ cat >> .hg/hgrc <<EOF
> [committemplate]
> changeset.commit.normal =
> # now, "changeset.commit" should be chosen for "hg commit"
> EOF
FUJIWARA Katsunori
cmdutil: make commit message shown in text editor customizable by template...
r21924 $ hg bookmark --inactive currentbookmark
$ hg forget .hgsub
$ HGEDITOR=cat hg commit -q
FUJIWARA Katsunori
cmdutil: look commit template definition up by specified 'editform'...
r22012 HG: this is "commit" template
HG: Leave message empty to abort commit.
HG: no bookmark is activated
abort: empty commit message
[255]
$ cat >> .hg/hgrc <<EOF
> [committemplate]
> changeset.commit =
> # now, "changeset" should be chosen for "hg commit"
> EOF
$ HGEDITOR=cat hg commit -q
FUJIWARA Katsunori
cmdutil: make commit message shown in text editor customizable by template...
r21924 HG: this is customized commit template
HG: Leave message empty to abort commit.
HG: no bookmark is activated
abort: empty commit message
[255]
$ cat >> .hg/hgrc <<EOF
FUJIWARA Katsunori
context: avoid breaking already fixed self._status at ctx.status()...
r23711 > [committemplate]
> changeset = {desc}
> HG: files={files}
> HG:
FUJIWARA Katsunori
context: override _dirstatestatus in workingcommitctx for correct matching...
r23712 > {splitlines(diff()) % 'HG: {line}\n'
FUJIWARA Katsunori
context: avoid breaking already fixed self._status at ctx.status()...
r23711 > }HG:
> HG: files={files}\n
> EOF
$ hg status -amr
M changed
A added
R removed
$ HGEDITOR=cat hg commit -q -e -m "foo bar" changed
foo bar
HG: files=changed
HG:
FUJIWARA Katsunori
context: override _dirstatestatus in workingcommitctx for correct matching...
r23712 HG: --- a/changed Thu Jan 01 00:00:00 1970 +0000
HG: +++ b/changed Thu Jan 01 00:00:00 1970 +0000
HG: @@ -1,1 +1,2 @@
HG: changed
HG: +changed
FUJIWARA Katsunori
context: avoid breaking already fixed self._status at ctx.status()...
r23711 HG:
HG: files=changed
$ hg status -amr
A added
R removed
$ hg parents --template "M {file_mods}\nA {file_adds}\nR {file_dels}\n"
M changed
A
R
$ hg rollback -q
$ cat >> .hg/hgrc <<EOF
FUJIWARA Katsunori
context: override _dirstatestatus in workingcommitctx for correct matching...
r23712 > [committemplate]
> changeset = {desc}
> HG: files={files}
> HG:
> {splitlines(diff("changed")) % 'HG: {line}\n'
> }HG:
> HG: files={files}
> HG:
> {splitlines(diff("added")) % 'HG: {line}\n'
> }HG:
> HG: files={files}
> HG:
> {splitlines(diff("removed")) % 'HG: {line}\n'
> }HG:
> HG: files={files}\n
> EOF
$ HGEDITOR=cat hg commit -q -e -m "foo bar" added removed
foo bar
HG: files=added removed
HG:
HG:
HG: files=added removed
HG:
HG: --- /dev/null Thu Jan 01 00:00:00 1970 +0000
HG: +++ b/added Thu Jan 01 00:00:00 1970 +0000
HG: @@ -0,0 +1,1 @@
HG: +added
HG:
HG: files=added removed
HG:
HG: --- a/removed Thu Jan 01 00:00:00 1970 +0000
HG: +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
HG: @@ -1,1 +0,0 @@
HG: -removed
HG:
HG: files=added removed
$ hg status -amr
M changed
$ hg parents --template "M {file_mods}\nA {file_adds}\nR {file_dels}\n"
M
A added
R removed
$ hg rollback -q
$ cat >> .hg/hgrc <<EOF
FUJIWARA Katsunori
cmdutil: make commit message shown in text editor customizable by template...
r21924 > # disable customizing for subsequent tests
> [committemplate]
> changeset =
> EOF
Adrian Buehlmann
tests: roll test-commit-copy.t into test-commit.t
r16849 $ cd ..
commit copy
$ hg init dir2
$ cd dir2
$ echo bleh > bar
$ hg add bar
$ hg ci -m 'add bar'
$ hg cp bar foo
$ echo >> bar
$ hg ci -m 'cp bar foo; change bar'
$ hg debugrename foo
foo renamed from bar:26d3ca0dfd18e44d796b564e38dd173c9668d3a9
$ hg debugindex bar
Bryan O'Sullivan
tests: reduce spurious failures when run with generaldelta...
r17132 rev offset length ..... linkrev nodeid p1 p2 (re)
0 0 6 ..... 0 26d3ca0dfd18 000000000000 000000000000 (re)
1 6 7 ..... 1 d267bddd54f7 26d3ca0dfd18 000000000000 (re)
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
Augie Fackler
pathauditor: check for codepoints ignored on OS X
r23598 verify pathauditor blocks evil filepaths
$ cat > evil-commit.py <<EOF
> from mercurial import ui, hg, context, node
> notrc = u".h\u200cg".encode('utf-8') + '/hgrc'
> u = ui.ui()
> r = hg.repository(u, '.')
> def filectxfn(repo, memctx, path):
> return context.memfilectx(repo, path, '[hooks]\nupdate = echo owned')
> c = context.memctx(r, [r['tip'].node(), node.nullid],
> 'evil', [notrc], filectxfn, 0)
> r.commitctx(c)
> EOF
$ $PYTHON evil-commit.py
Matt Harbison
tests: add missing globs for Windows...
r23627 #if windows
$ hg co --clean tip
abort: path contains illegal component: .h\xe2\x80\x8cg\\hgrc (esc)
[255]
#else
Augie Fackler
pathauditor: check for codepoints ignored on OS X
r23598 $ hg co --clean tip
abort: path contains illegal component: .h\xe2\x80\x8cg/hgrc (esc)
[255]
Matt Harbison
tests: add missing globs for Windows...
r23627 #endif
Augie Fackler
pathauditor: check for codepoints ignored on OS X
r23598
Matt Mackall
pathauditor: check for Windows shortname aliases
r23599 $ hg rollback -f
repository tip rolled back to revision 1 (undo commit)
$ cat > evil-commit.py <<EOF
> from mercurial import ui, hg, context, node
> notrc = "HG~1/hgrc"
> u = ui.ui()
> r = hg.repository(u, '.')
> def filectxfn(repo, memctx, path):
> return context.memfilectx(repo, path, '[hooks]\nupdate = echo owned')
> c = context.memctx(r, [r['tip'].node(), node.nullid],
> 'evil', [notrc], filectxfn, 0)
> r.commitctx(c)
> EOF
$ $PYTHON evil-commit.py
$ hg co --clean tip
Matt Harbison
tests: add missing globs for Windows...
r23627 abort: path contains illegal component: HG~1/hgrc (glob)
Matt Mackall
pathauditor: check for Windows shortname aliases
r23599 [255]
$ hg rollback -f
repository tip rolled back to revision 1 (undo commit)
$ cat > evil-commit.py <<EOF
> from mercurial import ui, hg, context, node
> notrc = "HG8B6C~2/hgrc"
> u = ui.ui()
> r = hg.repository(u, '.')
> def filectxfn(repo, memctx, path):
> return context.memfilectx(repo, path, '[hooks]\nupdate = echo owned')
> c = context.memctx(r, [r['tip'].node(), node.nullid],
> 'evil', [notrc], filectxfn, 0)
> r.commitctx(c)
> EOF
$ $PYTHON evil-commit.py
$ hg co --clean tip
Matt Harbison
tests: add missing globs for Windows...
r23627 abort: path contains illegal component: HG8B6C~2/hgrc (glob)
Matt Mackall
pathauditor: check for Windows shortname aliases
r23599 [255]