test-keyword.t
1108 lines
| 23.6 KiB
| text/troff
|
Tads3Lexer
/ tests / test-keyword.t
Mads Kiilerich
|
r15446 | $ "$TESTDIR/hghave" symlink unix-permissions serve || exit 80 | ||
Mads Kiilerich
|
r15441 | |||
Matt Mackall
|
r11905 | $ cat <<EOF >> $HGRCPATH | ||
> [extensions] | ||||
> keyword = | ||||
> mq = | ||||
> notify = | ||||
> record = | ||||
> transplant = | ||||
> [ui] | ||||
> interactive = true | ||||
> EOF | ||||
Run kwdemo before [keyword] files are set up | ||||
as it would succeed without uisetup otherwise | ||||
$ hg --quiet kwdemo | ||||
[extensions] | ||||
keyword = | ||||
[keyword] | ||||
demo.txt = | ||||
Christian Ebert
|
r13298 | [keywordset] | ||
svn = False | ||||
Matt Mackall
|
r11905 | [keywordmaps] | ||
Author = {author|user} | ||||
Date = {date|utcdate} | ||||
Header = {root}/{file},v {node|short} {date|utcdate} {author|user} | ||||
Id = {file|basename},v {node|short} {date|utcdate} {author|user} | ||||
RCSFile = {file|basename},v | ||||
RCSfile = {file|basename},v | ||||
Revision = {node|short} | ||||
Source = {root}/{file},v | ||||
Brodie Rao
|
r12372 | $Author: test $ | ||
Brodie Rao
|
r12376 | $Date: ????/??/?? ??:??:?? $ (glob) | ||
$Header: */demo.txt,v ???????????? ????/??/?? ??:??:?? test $ (glob) | ||||
$Id: demo.txt,v ???????????? ????/??/?? ??:??:?? test $ (glob) | ||||
Brodie Rao
|
r12372 | $RCSFile: demo.txt,v $ | ||
$RCSfile: demo.txt,v $ | ||||
Brodie Rao
|
r12376 | $Revision: ???????????? $ (glob) | ||
$Source: */demo.txt,v $ (glob) | ||||
Matt Mackall
|
r11905 | |||
$ hg --quiet kwdemo "Branch = {branches}" | ||||
[extensions] | ||||
keyword = | ||||
[keyword] | ||||
demo.txt = | ||||
Christian Ebert
|
r13298 | [keywordset] | ||
svn = False | ||||
Matt Mackall
|
r11905 | [keywordmaps] | ||
Branch = {branches} | ||||
$Branch: demobranch $ | ||||
$ cat <<EOF >> $HGRCPATH | ||||
> [keyword] | ||||
> ** = | ||||
> b = ignore | ||||
Christian Ebert
|
r12626 | > i = ignore | ||
Matt Mackall
|
r11905 | > [hooks] | ||
Christian Ebert
|
r12629 | > EOF | ||
$ cp $HGRCPATH $HGRCPATH.nohooks | ||||
> cat <<EOF >> $HGRCPATH | ||||
Matt Mackall
|
r11905 | > commit= | ||
> commit.test=cp a hooktest | ||||
> EOF | ||||
$ hg init Test-bndl | ||||
$ cd Test-bndl | ||||
kwshrink should exit silently in empty/invalid repo | ||||
$ hg kwshrink | ||||
Symlinks cannot be created on Windows. | ||||
A bundle to test this was made with: | ||||
hg init t | ||||
cd t | ||||
echo a > a | ||||
ln -s a sym | ||||
hg add sym | ||||
hg ci -m addsym -u mercurial | ||||
hg bundle --base null ../test-keyword.hg | ||||
Nicolas Dumazet
|
r14116 | $ hg pull -u "$TESTDIR"/bundles/test-keyword.hg | ||
Brodie Rao
|
r12376 | pulling from *test-keyword.hg (glob) | ||
Matt Mackall
|
r11905 | requesting all changes | ||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ echo 'expand $Id$' > a | ||||
$ echo 'do not process $Id:' >> a | ||||
$ echo 'xxx $' >> a | ||||
$ echo 'ignore $Id$' > b | ||||
Output files as they were created | ||||
$ cat a b | ||||
expand $Id$ | ||||
do not process $Id: | ||||
xxx $ | ||||
ignore $Id$ | ||||
no kwfiles | ||||
$ hg kwfiles | ||||
untracked candidates | ||||
$ hg -v kwfiles --unknown | ||||
k a | ||||
Add files and check status | ||||
$ hg addremove | ||||
adding a | ||||
adding b | ||||
$ hg status | ||||
A a | ||||
A b | ||||
Default keyword expansion including commit hook | ||||
Interrupted commit should not change state or run commit hook | ||||
$ hg --debug commit | ||||
abort: empty commit message | ||||
Matt Mackall
|
r12316 | [255] | ||
Matt Mackall
|
r11905 | $ hg status | ||
A a | ||||
A b | ||||
Commit with several checks | ||||
$ hg --debug commit -mabsym -u 'User Name <user@example.com>' | ||||
a | ||||
b | ||||
overwriting a expanding keywords | ||||
running hook commit.test: cp a hooktest | ||||
committed changeset 1:ef63ca68695bc9495032c6fda1350c71e6d256e9 | ||||
$ hg status | ||||
? hooktest | ||||
$ hg debugrebuildstate | ||||
$ hg --quiet identify | ||||
ef63ca68695b | ||||
cat files in working directory with keywords expanded | ||||
$ cat a b | ||||
expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ | ||||
do not process $Id: | ||||
xxx $ | ||||
ignore $Id$ | ||||
hg cat files and symlink, no expansion | ||||
$ hg cat sym a b && echo | ||||
expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ | ||||
do not process $Id: | ||||
xxx $ | ||||
ignore $Id$ | ||||
Mads Kiilerich
|
r12640 | a | ||
Matt Mackall
|
r11905 | |||
$ diff a hooktest | ||||
Christian Ebert
|
r12629 | $ cp $HGRCPATH.nohooks $HGRCPATH | ||
Matt Mackall
|
r11905 | $ rm hooktest | ||
Christian Ebert
|
r15871 | hg status of kw-ignored binary file starting with '\1\n' | ||
$ printf '\1\nfoo' > i | ||||
$ hg -q commit -Am metasep i | ||||
$ hg status | ||||
$ printf '\1\nbar' > i | ||||
$ hg status | ||||
M i | ||||
$ hg -q commit -m "modify metasep" i | ||||
$ hg status --rev 2:3 | ||||
M i | ||||
$ touch empty | ||||
$ hg -q commit -A -m "another file" | ||||
$ hg status -A --rev 3:4 i | ||||
C i | ||||
$ hg -q strip -n 2 | ||||
Test hook execution | ||||
Matt Mackall
|
r11905 | bundle | ||
$ hg bundle --base null ../kw.hg | ||||
2 changesets found | ||||
$ cd .. | ||||
$ hg init Test | ||||
$ cd Test | ||||
Notify on pull to check whether keywords stay as is in email | ||||
ie. if patch.diff wrapper acts as it should | ||||
$ cat <<EOF >> $HGRCPATH | ||||
> [hooks] | ||||
> incoming.notify = python:hgext.notify.hook | ||||
> [notify] | ||||
> sources = pull | ||||
> diffstat = False | ||||
Mads Kiilerich
|
r12648 | > maxsubject = 15 | ||
Matt Mackall
|
r11905 | > [reposubs] | ||
> * = Test | ||||
> EOF | ||||
Pull from bundle and trigger notify | ||||
$ hg pull -u ../kw.hg | ||||
pulling from ../kw.hg | ||||
requesting all changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 3 changes to 3 files | ||||
Content-Type: text/plain; charset="us-ascii" | ||||
MIME-Version: 1.0 | ||||
Content-Transfer-Encoding: 7bit | ||||
Brodie Rao
|
r12376 | Date: * (glob) | ||
Mads Kiilerich
|
r12648 | Subject: changeset in... | ||
Matt Mackall
|
r11905 | From: mercurial | ||
X-Hg-Notification: changeset a2392c293916 | ||||
Brodie Rao
|
r12376 | Message-Id: <hg.a2392c293916*> (glob) | ||
Matt Mackall
|
r11905 | To: Test | ||
Mads Kiilerich
|
r15447 | changeset a2392c293916 in $TESTTMP/Test (glob) | ||
Martin Geisler
|
r13572 | details: $TESTTMP/Test?cmd=changeset;node=a2392c293916 | ||
Matt Mackall
|
r11905 | description: | ||
addsym | ||||
diffs (6 lines): | ||||
diff -r 000000000000 -r a2392c293916 sym | ||||
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/sym Sat Feb 09 20:25:47 2008 +0100 | ||||
@@ -0,0 +1,1 @@ | ||||
+a | ||||
\ No newline at end of file | ||||
Content-Type: text/plain; charset="us-ascii" | ||||
MIME-Version: 1.0 | ||||
Content-Transfer-Encoding: 7bit | ||||
Brodie Rao
|
r12376 | Date:* (glob) | ||
Mads Kiilerich
|
r12648 | Subject: changeset in... | ||
Matt Mackall
|
r11905 | From: User Name <user@example.com> | ||
X-Hg-Notification: changeset ef63ca68695b | ||||
Brodie Rao
|
r12376 | Message-Id: <hg.ef63ca68695b*> (glob) | ||
Matt Mackall
|
r11905 | To: Test | ||
Mads Kiilerich
|
r15447 | changeset ef63ca68695b in $TESTTMP/Test (glob) | ||
Mads Kiilerich
|
r12640 | details: $TESTTMP/Test?cmd=changeset;node=ef63ca68695b | ||
Matt Mackall
|
r11905 | description: | ||
absym | ||||
diffs (12 lines): | ||||
diff -r a2392c293916 -r ef63ca68695b a | ||||
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/a Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -0,0 +1,3 @@ | ||||
+expand $Id$ | ||||
+do not process $Id: | ||||
+xxx $ | ||||
diff -r a2392c293916 -r ef63ca68695b b | ||||
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/b Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -0,0 +1,1 @@ | ||||
+ignore $Id$ | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Christian Ebert
|
r12629 | $ cp $HGRCPATH.nohooks $HGRCPATH | ||
Matt Mackall
|
r11905 | |||
Touch files and check with status | ||||
$ touch a b | ||||
$ hg status | ||||
Update and expand | ||||
$ rm sym a b | ||||
$ hg update -C | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cat a b | ||||
expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ | ||||
do not process $Id: | ||||
xxx $ | ||||
ignore $Id$ | ||||
Christian Ebert
|
r15070 | Check whether expansion is filewise and file mode is preserved | ||
Matt Mackall
|
r11905 | |||
$ echo '$Id$' > c | ||||
$ echo 'tests for different changenodes' >> c | ||||
Christian Ebert
|
r15070 | $ chmod 600 c | ||
$ ls -l c | cut -b 1-10 | ||||
-rw------- | ||||
Matt Mackall
|
r11905 | |||
commit file c | ||||
$ hg commit -A -mcndiff -d '1 0' -u 'User Name <user@example.com>' | ||||
adding c | ||||
Christian Ebert
|
r15070 | $ ls -l c | cut -b 1-10 | ||
-rw------- | ||||
Matt Mackall
|
r11905 | |||
force expansion | ||||
$ hg -v kwexpand | ||||
overwriting a expanding keywords | ||||
overwriting c expanding keywords | ||||
compare changenodes in a and c | ||||
$ cat a c | ||||
expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ | ||||
do not process $Id: | ||||
xxx $ | ||||
$Id: c,v 40a904bbbe4c 1970/01/01 00:00:01 user $ | ||||
tests for different changenodes | ||||
Christian Ebert
|
r12684 | record | ||
$ echo '$Id$' > r | ||||
$ hg add r | ||||
Matt Mackall
|
r11905 | record chunk | ||
Christian Ebert
|
r15556 | >>> lines = open('a').readlines() | ||
>>> lines.insert(1, 'foo\n') | ||||
>>> lines.append('bar\n') | ||||
>>> open('a', 'w').writelines(lines) | ||||
Christian Ebert
|
r12684 | $ hg record -d '1 10' -m rectest a<<EOF | ||
Matt Mackall
|
r11905 | > y | ||
> y | ||||
> n | ||||
> EOF | ||||
diff --git a/a b/a | ||||
2 hunks, 2 lines changed | ||||
examine changes to 'a'? [Ynsfdaq?] | ||||
@@ -1,3 +1,4 @@ | ||||
expand $Id$ | ||||
+foo | ||||
do not process $Id: | ||||
xxx $ | ||||
record change 1/2 to 'a'? [Ynsfdaq?] | ||||
@@ -2,2 +3,3 @@ | ||||
do not process $Id: | ||||
xxx $ | ||||
+bar | ||||
record change 2/2 to 'a'? [Ynsfdaq?] | ||||
$ hg identify | ||||
d17e03c92c97+ tip | ||||
$ hg status | ||||
M a | ||||
Christian Ebert
|
r12684 | A r | ||
Matt Mackall
|
r11905 | |||
Cat modified file a | ||||
$ cat a | ||||
expand $Id: a,v d17e03c92c97 1970/01/01 00:00:01 test $ | ||||
foo | ||||
do not process $Id: | ||||
xxx $ | ||||
bar | ||||
Diff remaining chunk | ||||
Christian Ebert
|
r12684 | $ hg diff a | ||
Matt Mackall
|
r11905 | diff -r d17e03c92c97 a | ||
--- a/a Wed Dec 31 23:59:51 1969 -0000 | ||||
Brodie Rao
|
r12376 | +++ b/a * (glob) | ||
Matt Mackall
|
r11905 | @@ -2,3 +2,4 @@ | ||
foo | ||||
do not process $Id: | ||||
xxx $ | ||||
+bar | ||||
$ hg rollback | ||||
Gilles Moris
|
r13446 | repository tip rolled back to revision 2 (undo commit) | ||
working directory now based on revision 2 | ||||
Matt Mackall
|
r11905 | |||
Record all chunks in file a | ||||
$ echo foo > msg | ||||
- do not use "hg record -m" here! | ||||
Christian Ebert
|
r12684 | $ hg record -l msg -d '1 11' a<<EOF | ||
Matt Mackall
|
r11905 | > y | ||
> y | ||||
> y | ||||
> EOF | ||||
diff --git a/a b/a | ||||
2 hunks, 2 lines changed | ||||
examine changes to 'a'? [Ynsfdaq?] | ||||
@@ -1,3 +1,4 @@ | ||||
expand $Id$ | ||||
+foo | ||||
do not process $Id: | ||||
xxx $ | ||||
record change 1/2 to 'a'? [Ynsfdaq?] | ||||
@@ -2,2 +3,3 @@ | ||||
do not process $Id: | ||||
xxx $ | ||||
+bar | ||||
record change 2/2 to 'a'? [Ynsfdaq?] | ||||
File a should be clean | ||||
$ hg status -A a | ||||
C a | ||||
Christian Ebert
|
r12498 | rollback and revert expansion | ||
$ cat a | ||||
expand $Id: a,v 59f969a3b52c 1970/01/01 00:00:01 test $ | ||||
foo | ||||
do not process $Id: | ||||
xxx $ | ||||
bar | ||||
$ hg --verbose rollback | ||||
Gilles Moris
|
r13446 | repository tip rolled back to revision 2 (undo commit) | ||
working directory now based on revision 2 | ||||
Christian Ebert
|
r12498 | overwriting a expanding keywords | ||
$ hg status a | ||||
M a | ||||
$ cat a | ||||
expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ | ||||
foo | ||||
do not process $Id: | ||||
xxx $ | ||||
bar | ||||
$ echo '$Id$' > y | ||||
$ echo '$Id$' > z | ||||
$ hg add y | ||||
$ hg commit -Am "rollback only" z | ||||
$ cat z | ||||
$Id: z,v 45a5d3adce53 1970/01/01 00:00:00 test $ | ||||
$ hg --verbose rollback | ||||
Gilles Moris
|
r13446 | repository tip rolled back to revision 2 (undo commit) | ||
working directory now based on revision 2 | ||||
Christian Ebert
|
r12498 | overwriting z shrinking keywords | ||
Only z should be overwritten | ||||
$ hg status a y z | ||||
M a | ||||
A y | ||||
A z | ||||
$ cat z | ||||
$Id$ | ||||
$ hg forget y z | ||||
$ rm y z | ||||
Christian Ebert
|
r12684 | record added file alone | ||
Matt Mackall
|
r11905 | |||
Christian Ebert
|
r12630 | $ hg -v record -l msg -d '1 12' r<<EOF | ||
> y | ||||
> EOF | ||||
diff --git a/r b/r | ||||
new file mode 100644 | ||||
examine changes to 'r'? [Ynsfdaq?] | ||||
r | ||||
committed changeset 3:899491280810 | ||||
overwriting r expanding keywords | ||||
Christian Ebert
|
r15075 | - status call required for dirstate.normallookup() check | ||
$ hg status r | ||||
Christian Ebert
|
r12630 | $ hg --verbose rollback | ||
Gilles Moris
|
r13446 | repository tip rolled back to revision 2 (undo commit) | ||
working directory now based on revision 2 | ||||
Christian Ebert
|
r12630 | overwriting r shrinking keywords | ||
$ hg forget r | ||||
$ rm msg r | ||||
Christian Ebert
|
r12684 | $ hg update -C | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Christian Ebert
|
r12630 | |||
Christian Ebert
|
r12844 | record added keyword ignored file | ||
$ echo '$Id$' > i | ||||
$ hg add i | ||||
$ hg --verbose record -d '1 13' -m recignored<<EOF | ||||
> y | ||||
> EOF | ||||
diff --git a/i b/i | ||||
new file mode 100644 | ||||
examine changes to 'i'? [Ynsfdaq?] | ||||
i | ||||
committed changeset 3:5f40fe93bbdc | ||||
$ cat i | ||||
$Id$ | ||||
$ hg -q rollback | ||||
$ hg forget i | ||||
$ rm i | ||||
Matt Mackall
|
r11905 | Test patch queue repo | ||
$ hg init --mq | ||||
$ hg qimport -r tip -n mqtest.diff | ||||
$ hg commit --mq -m mqtest | ||||
Keywords should not be expanded in patch | ||||
$ cat .hg/patches/mqtest.diff | ||||
# HG changeset patch | ||||
# User User Name <user@example.com> | ||||
# Date 1 0 | ||||
# Node ID 40a904bbbe4cd4ab0a1f28411e35db26341a40ad | ||||
# Parent ef63ca68695bc9495032c6fda1350c71e6d256e9 | ||||
cndiff | ||||
diff -r ef63ca68695b -r 40a904bbbe4c c | ||||
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/c Thu Jan 01 00:00:01 1970 +0000 | ||||
@@ -0,0 +1,2 @@ | ||||
+$Id$ | ||||
+tests for different changenodes | ||||
$ hg qpop | ||||
popping mqtest.diff | ||||
patch queue now empty | ||||
qgoto, implying qpush, should expand | ||||
$ hg qgoto mqtest.diff | ||||
applying mqtest.diff | ||||
now at: mqtest.diff | ||||
$ cat c | ||||
$Id: c,v 40a904bbbe4c 1970/01/01 00:00:01 user $ | ||||
tests for different changenodes | ||||
$ hg cat c | ||||
$Id: c,v 40a904bbbe4c 1970/01/01 00:00:01 user $ | ||||
tests for different changenodes | ||||
Keywords should not be expanded in filelog | ||||
$ hg --config 'extensions.keyword=!' cat c | ||||
$Id$ | ||||
tests for different changenodes | ||||
qpop and move on | ||||
$ hg qpop | ||||
popping mqtest.diff | ||||
patch queue now empty | ||||
Copy and show added kwfiles | ||||
$ hg cp a c | ||||
$ hg kwfiles | ||||
a | ||||
c | ||||
Commit and show expansion in original and copy | ||||
$ hg --debug commit -ma2c -d '1 0' -u 'User Name <user@example.com>' | ||||
Sune Foldager
|
r15902 | invalidating branch cache (tip differs) | ||
Matt Mackall
|
r11905 | c | ||
c: copy a:0045e12f6c5791aac80ca6cbfd97709a88307292 | ||||
overwriting c expanding keywords | ||||
committed changeset 2:25736cf2f5cbe41f6be4e6784ef6ecf9f3bbcc7d | ||||
$ cat a c | ||||
expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ | ||||
do not process $Id: | ||||
xxx $ | ||||
expand $Id: c,v 25736cf2f5cb 1970/01/01 00:00:01 user $ | ||||
do not process $Id: | ||||
xxx $ | ||||
Touch copied c and check its status | ||||
$ touch c | ||||
$ hg status | ||||
Christian Ebert
|
r12626 | Copy kwfile to keyword ignored file unexpanding keywords | ||
$ hg --verbose copy a i | ||||
copying a to i | ||||
overwriting i shrinking keywords | ||||
$ head -n 1 i | ||||
expand $Id$ | ||||
$ hg forget i | ||||
$ rm i | ||||
Copy ignored file to ignored file: no overwriting | ||||
$ hg --verbose copy b i | ||||
copying b to i | ||||
$ hg forget i | ||||
$ rm i | ||||
Christian Ebert
|
r13069 | cp symlink file; hg cp -A symlink file (part1) | ||
- copied symlink points to kwfile: overwrite | ||||
Christian Ebert
|
r12626 | |||
$ cp sym i | ||||
$ ls -l i | ||||
Mads Kiilerich
|
r12647 | -rw-r--r--* (glob) | ||
Christian Ebert
|
r12626 | $ head -1 i | ||
expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ | ||||
$ hg copy --after --verbose sym i | ||||
copying sym to i | ||||
overwriting i shrinking keywords | ||||
$ head -1 i | ||||
expand $Id$ | ||||
$ hg forget i | ||||
$ rm i | ||||
Matt Mackall
|
r11905 | Test different options of hg kwfiles | ||
$ hg kwfiles | ||||
a | ||||
c | ||||
$ hg -v kwfiles --ignore | ||||
I b | ||||
I sym | ||||
$ hg kwfiles --all | ||||
K a | ||||
K c | ||||
I b | ||||
I sym | ||||
Diff specific revision | ||||
Nicolas Dumazet
|
r12102 | $ hg diff --rev 1 | ||
Matt Mackall
|
r11905 | diff -r ef63ca68695b c | ||
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 | ||||
Brodie Rao
|
r12376 | +++ b/c * (glob) | ||
Matt Mackall
|
r11905 | @@ -0,0 +1,3 @@ | ||
+expand $Id$ | ||||
+do not process $Id: | ||||
+xxx $ | ||||
Status after rollback: | ||||
$ hg rollback | ||||
Gilles Moris
|
r13446 | repository tip rolled back to revision 1 (undo commit) | ||
working directory now based on revision 1 | ||||
Matt Mackall
|
r11905 | $ hg status | ||
A c | ||||
$ hg update --clean | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Christian Ebert
|
r13069 | cp symlink file; hg cp -A symlink file (part2) | ||
- copied symlink points to kw ignored file: do not overwrite | ||||
$ cat a > i | ||||
$ ln -s i symignored | ||||
$ hg commit -Am 'fake expansion in ignored and symlink' i symignored | ||||
$ cp symignored x | ||||
$ hg copy --after --verbose symignored x | ||||
copying symignored to x | ||||
$ head -n 1 x | ||||
expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ | ||||
$ hg forget x | ||||
$ rm x | ||||
$ hg rollback | ||||
Gilles Moris
|
r13446 | repository tip rolled back to revision 1 (undo commit) | ||
working directory now based on revision 1 | ||||
Christian Ebert
|
r13069 | $ hg update --clean | ||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ rm i symignored | ||||
Matt Mackall
|
r11905 | Custom keywordmaps as argument to kwdemo | ||
$ hg --quiet kwdemo "Xinfo = {author}: {desc}" | ||||
[extensions] | ||||
keyword = | ||||
[keyword] | ||||
** = | ||||
b = ignore | ||||
demo.txt = | ||||
Christian Ebert
|
r12626 | i = ignore | ||
Christian Ebert
|
r13298 | [keywordset] | ||
svn = False | ||||
Matt Mackall
|
r11905 | [keywordmaps] | ||
Xinfo = {author}: {desc} | ||||
$Xinfo: test: hg keyword configuration and expansion example $ | ||||
Configure custom keywordmaps | ||||
$ cat <<EOF >>$HGRCPATH | ||||
> [keywordmaps] | ||||
> Id = {file} {node|short} {date|rfc822date} {author|user} | ||||
> Xinfo = {author}: {desc} | ||||
> EOF | ||||
Cat and hg cat files before custom expansion | ||||
$ cat a b | ||||
expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ | ||||
do not process $Id: | ||||
xxx $ | ||||
ignore $Id$ | ||||
$ hg cat sym a b && echo | ||||
expand $Id: a ef63ca68695b Thu, 01 Jan 1970 00:00:00 +0000 user $ | ||||
do not process $Id: | ||||
xxx $ | ||||
ignore $Id$ | ||||
Mads Kiilerich
|
r12640 | a | ||
Matt Mackall
|
r11905 | |||
Write custom keyword and prepare multiline commit message | ||||
$ echo '$Xinfo$' >> a | ||||
$ cat <<EOF >> log | ||||
> firstline | ||||
> secondline | ||||
> EOF | ||||
Interrupted commit should not change state | ||||
$ hg commit | ||||
abort: empty commit message | ||||
Matt Mackall
|
r12316 | [255] | ||
Matt Mackall
|
r11905 | $ hg status | ||
M a | ||||
? c | ||||
? log | ||||
Commit with multiline message and custom expansion | ||||
$ hg --debug commit -l log -d '2 0' -u 'User Name <user@example.com>' | ||||
a | ||||
overwriting a expanding keywords | ||||
committed changeset 2:bb948857c743469b22bbf51f7ec8112279ca5d83 | ||||
$ rm log | ||||
Stat, verify and show custom expansion (firstline) | ||||
$ hg status | ||||
? c | ||||
$ hg verify | ||||
checking changesets | ||||
checking manifests | ||||
crosschecking files in changesets and manifests | ||||
checking files | ||||
3 files, 3 changesets, 4 total revisions | ||||
$ cat a b | ||||
expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ | ||||
do not process $Id: | ||||
xxx $ | ||||
$Xinfo: User Name <user@example.com>: firstline $ | ||||
ignore $Id$ | ||||
$ hg cat sym a b && echo | ||||
expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ | ||||
do not process $Id: | ||||
xxx $ | ||||
$Xinfo: User Name <user@example.com>: firstline $ | ||||
ignore $Id$ | ||||
Mads Kiilerich
|
r12640 | a | ||
Matt Mackall
|
r11905 | |||
annotate | ||||
$ hg annotate a | ||||
1: expand $Id$ | ||||
1: do not process $Id: | ||||
1: xxx $ | ||||
2: $Xinfo$ | ||||
remove with status checks | ||||
$ hg debugrebuildstate | ||||
$ hg remove a | ||||
$ hg --debug commit -m rma | ||||
committed changeset 3:d14c712653769de926994cf7fbb06c8fbd68f012 | ||||
$ hg status | ||||
? c | ||||
Rollback, revert, and check expansion | ||||
$ hg rollback | ||||
Gilles Moris
|
r13446 | repository tip rolled back to revision 2 (undo commit) | ||
working directory now based on revision 2 | ||||
Matt Mackall
|
r11905 | $ hg status | ||
R a | ||||
? c | ||||
$ hg revert --no-backup --rev tip a | ||||
$ cat a | ||||
expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ | ||||
do not process $Id: | ||||
xxx $ | ||||
$Xinfo: User Name <user@example.com>: firstline $ | ||||
Clone to test global and local configurations | ||||
$ cd .. | ||||
Expansion in destinaton with global configuration | ||||
$ hg --quiet clone Test globalconf | ||||
$ cat globalconf/a | ||||
expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ | ||||
do not process $Id: | ||||
xxx $ | ||||
$Xinfo: User Name <user@example.com>: firstline $ | ||||
No expansion in destination with local configuration in origin only | ||||
$ hg --quiet --config 'keyword.**=ignore' clone Test localconf | ||||
$ cat localconf/a | ||||
expand $Id$ | ||||
do not process $Id: | ||||
xxx $ | ||||
$Xinfo$ | ||||
Clone to test incoming | ||||
$ hg clone -r1 Test Test-a | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 3 changes to 3 files | ||||
updating to branch default | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd Test-a | ||||
$ cat <<EOF >> .hg/hgrc | ||||
> [paths] | ||||
> default = ../Test | ||||
> EOF | ||||
$ hg incoming | ||||
Mads Kiilerich
|
r15447 | comparing with $TESTTMP/Test (glob) | ||
Matt Mackall
|
r11905 | searching for changes | ||
changeset: 2:bb948857c743 | ||||
tag: tip | ||||
user: User Name <user@example.com> | ||||
date: Thu Jan 01 00:00:02 1970 +0000 | ||||
summary: firstline | ||||
Imported patch should not be rejected | ||||
Christian Ebert
|
r15556 | >>> import re | ||
>>> text = re.sub(r'(Id.*)', r'\1 rejecttest', open('a').read()) | ||||
>>> open('a', 'wb').write(text) | ||||
Matt Mackall
|
r11905 | $ hg --debug commit -m'rejects?' -d '3 0' -u 'User Name <user@example.com>' | ||
a | ||||
overwriting a expanding keywords | ||||
committed changeset 2:85e279d709ffc28c9fdd1b868570985fc3d87082 | ||||
$ hg export -o ../rejecttest.diff tip | ||||
$ cd ../Test | ||||
$ hg import ../rejecttest.diff | ||||
applying ../rejecttest.diff | ||||
$ cat a b | ||||
expand $Id: a 4e0994474d25 Thu, 01 Jan 1970 00:00:03 +0000 user $ rejecttest | ||||
do not process $Id: rejecttest | ||||
xxx $ | ||||
$Xinfo: User Name <user@example.com>: rejects? $ | ||||
ignore $Id$ | ||||
$ hg rollback | ||||
Greg Ward
|
r15198 | repository tip rolled back to revision 2 (undo import) | ||
Gilles Moris
|
r13446 | working directory now based on revision 2 | ||
Matt Mackall
|
r11905 | $ hg update --clean | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
kwexpand/kwshrink on selected files | ||||
$ mkdir x | ||||
$ hg copy a x/a | ||||
Christian Ebert
|
r12844 | $ hg --verbose kwshrink a | ||
overwriting a shrinking keywords | ||||
Christian Ebert
|
r15075 | - sleep required for dirstate.normal() check | ||
$ sleep 1 | ||||
Christian Ebert
|
r12844 | $ hg status a | ||
Matt Mackall
|
r11905 | $ hg --verbose kwexpand a | ||
overwriting a expanding keywords | ||||
Christian Ebert
|
r12844 | $ hg status a | ||
Matt Mackall
|
r11905 | |||
kwexpand x/a should abort | ||||
$ hg --verbose kwexpand x/a | ||||
abort: outstanding uncommitted changes | ||||
Matt Mackall
|
r12316 | [255] | ||
Matt Mackall
|
r11905 | $ cd x | ||
$ hg --debug commit -m xa -d '3 0' -u 'User Name <user@example.com>' | ||||
x/a | ||||
x/a: copy a:779c764182ce5d43e2b1eb66ce06d7b47bfe342e | ||||
overwriting x/a expanding keywords | ||||
committed changeset 3:b4560182a3f9a358179fd2d835c15e9da379c1e4 | ||||
$ cat a | ||||
expand $Id: x/a b4560182a3f9 Thu, 01 Jan 1970 00:00:03 +0000 user $ | ||||
do not process $Id: | ||||
xxx $ | ||||
$Xinfo: User Name <user@example.com>: xa $ | ||||
kwshrink a inside directory x | ||||
$ hg --verbose kwshrink a | ||||
overwriting x/a shrinking keywords | ||||
$ cat a | ||||
expand $Id$ | ||||
do not process $Id: | ||||
xxx $ | ||||
$Xinfo$ | ||||
$ cd .. | ||||
kwexpand nonexistent | ||||
$ hg kwexpand nonexistent | ||||
Brodie Rao
|
r12376 | nonexistent:* (glob) | ||
Matt Mackall
|
r11905 | |||
hg serve | ||||
- expand with hgweb file | ||||
- no expansion with hgweb annotate/changeset/filediff | ||||
- check errors | ||||
$ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log | ||||
$ cat hg.pid >> $DAEMON_PIDS | ||||
$ $TESTDIR/get-with-headers.py localhost:$HGPORT '/file/tip/a/?style=raw' | ||||
200 Script output follows | ||||
expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ | ||||
do not process $Id: | ||||
xxx $ | ||||
$Xinfo: User Name <user@example.com>: firstline $ | ||||
$ $TESTDIR/get-with-headers.py localhost:$HGPORT '/annotate/tip/a/?style=raw' | ||||
200 Script output follows | ||||
user@1: expand $Id$ | ||||
user@1: do not process $Id: | ||||
user@1: xxx $ | ||||
user@2: $Xinfo$ | ||||
$ $TESTDIR/get-with-headers.py localhost:$HGPORT '/rev/tip/?style=raw' | ||||
200 Script output follows | ||||
# HG changeset patch | ||||
# User User Name <user@example.com> | ||||
# Date 3 0 | ||||
# Node ID b4560182a3f9a358179fd2d835c15e9da379c1e4 | ||||
# Parent bb948857c743469b22bbf51f7ec8112279ca5d83 | ||||
xa | ||||
diff -r bb948857c743 -r b4560182a3f9 x/a | ||||
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/x/a Thu Jan 01 00:00:03 1970 +0000 | ||||
@@ -0,0 +1,4 @@ | ||||
+expand $Id$ | ||||
+do not process $Id: | ||||
+xxx $ | ||||
+$Xinfo$ | ||||
$ $TESTDIR/get-with-headers.py localhost:$HGPORT '/diff/bb948857c743/a?style=raw' | ||||
200 Script output follows | ||||
diff -r ef63ca68695b -r bb948857c743 a | ||||
--- a/a Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/a Thu Jan 01 00:00:02 1970 +0000 | ||||
@@ -1,3 +1,4 @@ | ||||
expand $Id$ | ||||
do not process $Id: | ||||
xxx $ | ||||
+$Xinfo$ | ||||
$ cat errors.log | ||||
Prepare merge and resolve tests | ||||
$ echo '$Id$' > m | ||||
$ hg add m | ||||
$ hg commit -m 4kw | ||||
$ echo foo >> m | ||||
$ hg commit -m 5foo | ||||
simplemerge | ||||
$ hg update 4 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ echo foo >> m | ||||
$ hg commit -m 6foo | ||||
created new head | ||||
$ hg merge | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg commit -m simplemerge | ||||
$ cat m | ||||
$Id: m 27d48ee14f67 Thu, 01 Jan 1970 00:00:00 +0000 test $ | ||||
foo | ||||
conflict: keyword should stay outside conflict zone | ||||
$ hg update 4 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ echo bar >> m | ||||
$ hg commit -m 8bar | ||||
created new head | ||||
$ hg merge | ||||
merging m | ||||
warning: conflicts during merge. | ||||
Matt Mackall
|
r15501 | merging m incomplete! (edit conflicts, then use 'hg resolve --mark') | ||
Matt Mackall
|
r11905 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved | ||
Brodie Rao
|
r12314 | use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon | ||
Matt Mackall
|
r12316 | [1] | ||
Matt Mackall
|
r11905 | $ cat m | ||
$Id$ | ||||
<<<<<<< local | ||||
bar | ||||
======= | ||||
foo | ||||
>>>>>>> other | ||||
resolve to local | ||||
$ HGMERGE=internal:local hg resolve -a | ||||
$ hg commit -m localresolve | ||||
$ cat m | ||||
Peter Arrenbrecht
|
r14162 | $Id: m 800511b3a22d Thu, 01 Jan 1970 00:00:00 +0000 test $ | ||
Matt Mackall
|
r11905 | bar | ||
Test restricted mode with transplant -b | ||||
$ hg update 6 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg branch foo | ||||
marked working directory as branch foo | ||||
Matt Mackall
|
r15615 | (branches are permanent and global, did you want a bookmark?) | ||
Matt Mackall
|
r11905 | $ mv a a.bak | ||
$ echo foobranch > a | ||||
$ cat a.bak >> a | ||||
$ rm a.bak | ||||
$ hg commit -m 9foobranch | ||||
$ hg update default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg -y transplant -b foo tip | ||||
applying 4aa30d025d50 | ||||
Peter Arrenbrecht
|
r14162 | 4aa30d025d50 transplanted to e00abbf63521 | ||
Matt Mackall
|
r11905 | |||
Expansion in changeset but not in file | ||||
$ hg tip -p | ||||
Peter Arrenbrecht
|
r14162 | changeset: 11:e00abbf63521 | ||
Matt Mackall
|
r11905 | tag: tip | ||
Peter Arrenbrecht
|
r14162 | parent: 9:800511b3a22d | ||
Matt Mackall
|
r11905 | user: test | ||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 9foobranch | ||||
Peter Arrenbrecht
|
r14162 | diff -r 800511b3a22d -r e00abbf63521 a | ||
Matt Mackall
|
r11905 | --- a/a Thu Jan 01 00:00:00 1970 +0000 | ||
+++ b/a Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -1,3 +1,4 @@ | ||||
+foobranch | ||||
expand $Id$ | ||||
do not process $Id: | ||||
xxx $ | ||||
$ head -n 2 a | ||||
foobranch | ||||
Peter Arrenbrecht
|
r14162 | expand $Id: a e00abbf63521 Thu, 01 Jan 1970 00:00:00 +0000 test $ | ||
Matt Mackall
|
r11905 | |||
Christian Ebert
|
r12495 | Turn off expansion | ||
Matt Mackall
|
r11905 | |||
$ hg -q rollback | ||||
$ hg -q update -C | ||||
kwshrink with unknown file u | ||||
$ cp a u | ||||
$ hg --verbose kwshrink | ||||
overwriting a shrinking keywords | ||||
overwriting m shrinking keywords | ||||
overwriting x/a shrinking keywords | ||||
Keywords shrunk in working directory, but not yet disabled | ||||
- cat shows unexpanded keywords | ||||
- hg cat shows expanded keywords | ||||
$ cat a b | ||||
expand $Id$ | ||||
do not process $Id: | ||||
xxx $ | ||||
$Xinfo$ | ||||
ignore $Id$ | ||||
$ hg cat sym a b && echo | ||||
expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ | ||||
do not process $Id: | ||||
xxx $ | ||||
$Xinfo: User Name <user@example.com>: firstline $ | ||||
ignore $Id$ | ||||
Mads Kiilerich
|
r12640 | a | ||
Matt Mackall
|
r11905 | |||
Now disable keyword expansion | ||||
$ rm "$HGRCPATH" | ||||
$ cat a b | ||||
expand $Id$ | ||||
do not process $Id: | ||||
xxx $ | ||||
$Xinfo$ | ||||
ignore $Id$ | ||||
$ hg cat sym a b && echo | ||||
expand $Id$ | ||||
do not process $Id: | ||||
xxx $ | ||||
$Xinfo$ | ||||
ignore $Id$ | ||||
Mads Kiilerich
|
r12640 | a | ||