% hg kwdemo [extensions] hgext.keyword = [keyword] * = b = ignore demo.txt = [keywordmaps] RCSFile = {file|basename},v Author = {author|user} Header = {root}/{file},v {node|short} {date|utcdate} {author|user} Source = {root}/{file},v Date = {date|utcdate} Id = {file|basename},v {node|short} {date|utcdate} {author|user} Revision = {node|short} $RCSFile: demo.txt,v $ $Author: test $ $Header: /TMP/demo.txt,v xxxxxxxxxxxx 2000/00/00 00:00:00 test $ $Source: /TMP/demo.txt,v $ $Date: 2000/00/00 00:00:00 $ $Id: demo.txt,v xxxxxxxxxxxx 2000/00/00 00:00:00 test $ $Revision: xxxxxxxxxxxx $ [extensions] hgext.keyword = [keyword] * = b = ignore demo.txt = [keywordmaps] Branch = {branches} $Branch: demobranch $ % kwshrink should exit silently in empty/invalid repo pulling from test-keyword.hg 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 % cat expand $Id$ do not process $Id: xxx $ ignore $Id$ % addremove adding a adding b % status A a A b % default keyword expansion including commit hook % interrupted commit should not change state or run commit hook abort: empty commit message % status A a A b % commit a b overwriting a expanding keywords running hook commit.test: cp a hooktest committed changeset 1:ef63ca68695bc9495032c6fda1350c71e6d256e9 % status ? hooktest % identify ef63ca68695b % cat expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ do not process $Id: xxx $ ignore $Id$ % hg cat expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ do not process $Id: xxx $ ignore $Id$ a % diff a hooktest % removing commit hook from config % bundle 2 changesets found % notify on pull to check whether keywords stay as is in email % ie. if patch.diff wrapper acts as it should % pull from bundle pulling from ../kw.hg requesting all changes adding changesets adding manifests adding file changes added 2 changesets with 3 changes to 3 files 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 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 % remove notify config % touch % status % update 3 files updated, 0 files merged, 0 files removed, 0 files unresolved % cat expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ do not process $Id: xxx $ ignore $Id$ % check whether expansion is filewise % commit c adding c % force expansion overwriting a expanding keywords overwriting c expanding keywords % compare changenodes in 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 % qinit -c % qimport % qcommit % keywords should not be expanded in patch # HG changeset patch # User User Name # 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 % qpop popping mqtest.diff patch queue now empty % qgoto - should imply qpush applying mqtest.diff now at: mqtest.diff % cat $Id: c,v 40a904bbbe4c 1970/01/01 00:00:01 user $ tests for different changenodes % qpop and move on popping mqtest.diff patch queue now empty % copy % kwfiles added a c % commit c c: copy a:0045e12f6c5791aac80ca6cbfd97709a88307292 overwriting c expanding keywords committed changeset 2:e22d299ac0c2bd8897b3df5114374b9e4d4ca62f % cat a c expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ do not process $Id: xxx $ expand $Id: c,v e22d299ac0c2 1970/01/01 00:00:01 user $ do not process $Id: xxx $ % touch copied c % status % kwfiles a c % diff --rev diff -r ef63ca68695b c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -0,0 +1,3 @@ +expand $Id$ +do not process $Id: +xxx $ % rollback rolling back last transaction % status A c % update -C 0 files updated, 0 files merged, 0 files removed, 0 files unresolved % custom keyword expansion % try with kwdemo [extensions] hgext.keyword = [keyword] * = b = ignore demo.txt = [keywordmaps] Xinfo = {author}: {desc} $Xinfo: test: hg keyword config and expansion example $ % cat expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ do not process $Id: xxx $ ignore $Id$ % hg cat expand $Id: a ef63ca68695b Thu, 01 Jan 1970 00:00:00 +0000 user $ do not process $Id: xxx $ ignore $Id$ a % interrupted commit should not change state abort: empty commit message % status M a ? c ? log % commit a overwriting a expanding keywords committed changeset 2:bb948857c743469b22bbf51f7ec8112279ca5d83 % status ? c % verify checking changesets checking manifests crosschecking files in changesets and manifests checking files 3 files, 3 changesets, 4 total revisions % cat expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ do not process $Id: xxx $ $Xinfo: User Name : firstline $ ignore $Id$ % hg cat expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ do not process $Id: xxx $ $Xinfo: User Name : firstline $ ignore $Id$ a % annotate 1: expand $Id$ 1: do not process $Id: 1: xxx $ 2: $Xinfo$ % remove committed changeset 3:d14c712653769de926994cf7fbb06c8fbd68f012 % status ? c % rollback rolling back last transaction % status R a ? c % revert a % cat a expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ do not process $Id: xxx $ $Xinfo: User Name : firstline $ % clone to test incoming requesting all changes adding changesets adding manifests adding file changes added 2 changesets with 3 changes to 3 files updating working directory 3 files updated, 0 files merged, 0 files removed, 0 files unresolved % incoming comparing with test-keyword/Test searching for changes changeset: 2:bb948857c743 tag: tip user: User Name date: Thu Jan 01 00:00:02 1970 +0000 summary: firstline % commit rejecttest a overwriting a expanding keywords committed changeset 2:85e279d709ffc28c9fdd1b868570985fc3d87082 % export % import applying ../rejecttest.diff % cat expand $Id: a 4e0994474d25 Thu, 01 Jan 1970 00:00:03 +0000 user $ rejecttest do not process $Id: rejecttest xxx $ $Xinfo: User Name : rejects? $ ignore $Id$ % rollback rolling back last transaction % clean update 1 files updated, 0 files merged, 0 files removed, 0 files unresolved % kwexpand/kwshrink on selected files % copy a x/a % kwexpand a overwriting a expanding keywords % kwexpand x/a should abort abort: outstanding uncommitted changes x/a x/a: copy a:779c764182ce5d43e2b1eb66ce06d7b47bfe342e overwriting x/a expanding keywords committed changeset 3:cfa68229c1167443337266ebac453c73b1d5d16e % cat a expand $Id: x/a cfa68229c116 Thu, 01 Jan 1970 00:00:03 +0000 user $ do not process $Id: xxx $ $Xinfo: User Name : xa $ % kwshrink a inside directory x overwriting x/a shrinking keywords % cat a expand $Id$ do not process $Id: xxx $ $Xinfo$ % kwexpand nonexistent nonexistent: % hg serve % expansion % hgweb file 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 : firstline $ % no expansion % hgweb annotate 200 Script output follows user@1: expand $Id$ user@1: do not process $Id: user@1: xxx $ user@2: $Xinfo$ % hgweb changeset 200 Script output follows # HG changeset patch # User User Name # Date 3 0 # Node ID cfa68229c1167443337266ebac453c73b1d5d16e # Parent bb948857c743469b22bbf51f7ec8112279ca5d83 xa --- /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$ % hgweb filediff 200 Script output follows --- 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$ % errors encountered % merge/resolve % simplemerge 1 files updated, 0 files merged, 0 files removed, 0 files unresolved created new head 0 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) $Id: m 8731e1dadc99 Thu, 01 Jan 1970 00:00:00 +0000 test $ foo % conflict 1 files updated, 0 files merged, 0 files removed, 0 files unresolved created new head merging m warning: conflicts during merge. merging m failed! 0 files updated, 0 files merged, 0 files removed, 1 files unresolved use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to abandon % keyword stays outside conflict zone $Id$ <<<<<<< local bar ======= foo >>>>>>> other % resolve to local $Id: m 43dfd2854b5b Thu, 01 Jan 1970 00:00:00 +0000 test $ bar % switch off expansion % kwshrink with unknown file u overwriting a shrinking keywords overwriting m shrinking keywords overwriting x/a shrinking keywords % cat expand $Id$ do not process $Id: xxx $ $Xinfo$ ignore $Id$ % hg cat expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ do not process $Id: xxx $ $Xinfo: User Name : firstline $ ignore $Id$ a % cat expand $Id$ do not process $Id: xxx $ $Xinfo$ ignore $Id$ % hg cat expand $Id$ do not process $Id: xxx $ $Xinfo$ ignore $Id$ a