tests/test-keyword.out
author Christian Ebert <blacktrash@gmx.net>
Wed, 06 Feb 2008 00:24:49 +0100
changeset 376 f44fb15a0f30
parent 369 7f3a1076863d
child 378 0683aaf458d8
permissions -rw-r--r--
Test unbundle null revision containing empty symlink Spotted by pmezard.

% help
keyword extension - keyword expansion in local repositories

This extension expands RCS/CVS-like or self-customized $Keywords$
in tracked text files selected by your configuration.

Keywords are only expanded in local repositories and not stored in
the change history. The mechanism can be regarded as a convenience
for the current user or for archive distribution.

Configuration is done in the [keyword] and [keywordmaps] sections
of hgrc files.

Example:

    [keyword]
    # expand keywords in every python file except those matching "x*"
    **.py =
    x*    = ignore

Note: the more specific you are in your filename patterns
      the less you lose speed in huge repos.

For [keywordmaps] template mapping and expansion demonstration and
control run "hg kwdemo".

An additional date template filter {date|utcdate} is provided.

The default template mappings (view with "hg kwdemo -d") can be replaced
with customized keywords and templates.
Again, run "hg kwdemo" to control the results of your config changes.

Before changing/disabling active keywords, run "hg kwshrink" to avoid
the risk of inadvertedly storing expanded keywords in the change history.

To force expansion after enabling it, or a configuration change, run
"hg kwexpand".

Also, when committing with the record extension or using mq's qrecord, be aware
that keywords cannot be updated. Again, run "hg kwexpand" on the files in
question to update keyword expansions after all changes have been checked in.

Expansions spanning more than one line and incremental expansions,
like CVS' $Log$, are not supported. A keyword template map
"Log = {desc}" expands to the first line of the changeset description.

list of commands:

 kwcat      output the current or given revision of files expanding keywords
 kwdemo     print [keywordmaps] configuration and an expansion example
 kwexpand   expand keywords in working directory
 kwfiles    print files currently configured for keyword expansion
 kwshrink   revert expanded keywords in working directory

use "hg -v help keyword" to show aliases and global options
% 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
% symlink nonexisting file
% commit hook must fail with missing file
cp: a: No such file or directory
adding sym
sym
running hook commit.test: cp a hooktest
warning: commit.test hook exited with status 1
% bundle null revision containing empty symlink
1 changesets found
% pull from bundle
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 $
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
a
b
transaction abort!
rollback completed
abort: empty commit message
% status
A a
A b
% commit
a
b
overwriting a expanding keywords
running hook commit.test: cp a hooktest
% status
? hooktest
% identify
cecf1e2cc3d3
% cat
expand $Id: a,v cecf1e2cc3d3 1970/01/01 00:00:01 user $
do not process $Id:
xxx $
expand $Id: a,v cecf1e2cc3d3 1970/01/01 00:00:01 user $
do not process $Id:
xxx $
ignore $Id$
% hg kwcat
expand $Id: a,v cecf1e2cc3d3 1970/01/01 00:00:01 user $
do not process $Id:
xxx $
ignore $Id$
a
% diff a hooktest
% removing commit hook from config
% touch
% status
% update
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
% cat
expand $Id: a,v cecf1e2cc3d3 1970/01/01 00:00:01 user $
do not process $Id:
xxx $
expand $Id: a,v cecf1e2cc3d3 1970/01/01 00:00:01 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 cecf1e2cc3d3 1970/01/01 00:00:01 user $
do not process $Id:
xxx $
$Id: c,v c033759cd8fd 1970/01/01 00:00:02 user $
tests for different changenodes
% qinit -c
% qimport
% qcommit
% keywords should not be expanded in patch
# HG changeset patch
# User User Name <user@example.com>
# Date 2 0
# Node ID c033759cd8fd162b7863dc4e5d1eea433603880f
# Parent  cecf1e2cc3d3447fcc20dd4eac5c4faa8a615df3
cndiff

diff -r cecf1e2cc3d3 -r c033759cd8fd c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/c	Thu Jan 01 00:00:02 1970 +0000
@@ -0,0 +1,2 @@
+$Id$
+tests for different changenodes
% qpop
Patch queue now empty
% qgoto - should imply qpush
applying mqtest.diff
Now at: mqtest.diff
% cat
$Id: c,v c033759cd8fd 1970/01/01 00:00:02 user $
tests for different changenodes
% qpop and move on
Patch queue now empty
% copy
% kwfiles added
a
c
% commit
c
 c: copy a:0045e12f6c5791aac80ca6cbfd97709a88307292
overwriting c expanding keywords
% cat a c
expand $Id: a,v cecf1e2cc3d3 1970/01/01 00:00:01 user $
do not process $Id:
xxx $
expand $Id: c,v 1fed52d26fd0 1970/01/01 00:00:02 user $
do not process $Id:
xxx $
% touch copied c after 1 second
% status
% kwfiles
a
c
% diff --rev
diff -r cecf1e2cc3d3 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, 1 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 cecf1e2cc3d3 1970/01/01 00:00:01 user $
do not process $Id:
xxx $
expand $Id: a,v cecf1e2cc3d3 1970/01/01 00:00:01 user $
do not process $Id:
xxx $
ignore $Id$
% hg kwcat
expand $Id: a cecf1e2cc3d3 Thu, 01 Jan 1970 00:00:01 +0000 user $
do not process $Id:
xxx $
ignore $Id$
a
% interrupted commit should not change state
transaction abort!
rollback completed
abort: empty commit message
% status
M a
? log
% commit
a
overwriting a expanding keywords
% status
% cat
expand $Id: a a576e5647736 Thu, 01 Jan 1970 00:00:03 +0000 user $
do not process $Id:
xxx $
$Xinfo: User Name <user@example.com>: firstline $
expand $Id: a a576e5647736 Thu, 01 Jan 1970 00:00:03 +0000 user $
do not process $Id:
xxx $
$Xinfo: User Name <user@example.com>: firstline $
ignore $Id$
% hg kwcat
expand $Id: a a576e5647736 Thu, 01 Jan 1970 00:00:03 +0000 user $
do not process $Id:
xxx $
$Xinfo: User Name <user@example.com>: firstline $
ignore $Id$
a
% remove
% status
% rollback
rolling back last transaction
% status
R a
% revert a
% cat a
expand $Id: a a576e5647736 Thu, 01 Jan 1970 00:00:03 +0000 user $
do not process $Id:
xxx $
$Xinfo: User Name <user@example.com>: firstline $
% clone to test incoming
requesting all changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 3 changes to 3 files
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
% incoming
comparing with test-keyword/Test
searching for changes
changeset:   2:a576e5647736
tag:         tip
user:        User Name <user@example.com>
date:        Thu Jan 01 00:00:03 1970 +0000
summary:     firstline

% commit rejecttest
a
overwriting a expanding keywords
% export
% import
applying ../rejecttest.diff
% cat
expand $Id: a 97b8d4afd122 Thu, 01 Jan 1970 00:00:04 +0000 user $ rejecttest
do not process $Id: rejecttest
xxx $
$Xinfo: User Name <user@example.com>: rejects? $
expand $Id: a 97b8d4afd122 Thu, 01 Jan 1970 00:00:04 +0000 user $ rejecttest
do not process $Id: rejecttest
xxx $
$Xinfo: User Name <user@example.com>: 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 in given files
x/a
 x/a: copy a:779c764182ce5d43e2b1eb66ce06d7b47bfe342e
overwriting x/a expanding keywords
% cat a
expand $Id: x/a 6ae8e7fbf16c Thu, 01 Jan 1970 00:00:04 +0000 user $
do not process $Id:
xxx $
$Xinfo: User Name <user@example.com>: xa $
% kwshrink a inside directory x
overwriting x/a shrinking keywords
% cat a
expand $Id$
do not process $Id:
xxx $
$Xinfo$
% kwexpand nonexistent
nonexistent: No such file or directory
% kwshrink with unknown file u
overwriting a shrinking keywords
overwriting x/a shrinking keywords
% cat
expand $Id$
do not process $Id:
xxx $
$Xinfo$
expand $Id$
do not process $Id:
xxx $
$Xinfo$
ignore $Id$
% hg kwcat
expand $Id: a a576e5647736 Thu, 01 Jan 1970 00:00:03 +0000 user $
do not process $Id:
xxx $
$Xinfo: User Name <user@example.com>: firstline $
ignore $Id$
a