[PATCH] keyword: avoid additional conflicts during merge/resolve

Christian Ebert blacktrash at gmx.net
Fri Aug 22 01:27:04 CDT 2008


# HG changeset patch
# User Christian Ebert <blacktrash at gmx.net>
# Date 1219386378 -7200
# Node ID 1b311c57e5ce027107bfde179f9504cabca65319
# Parent  a58a611c320fc763bb2dac5b3e468bad4c270629
keyword: avoid additional conflicts during merge/resolve

Make merge and resolve trigger kwtemplater.restricted to compare
data without keyword expansion.
The keyword stays outside the conflict:

$Keyword$
<<<<<<< local
bar
=======
foo
>>>>>>> other

and will again be expanded on commit.
Demonstrate in test case.

diff --git a/hgext/keyword.py b/hgext/keyword.py
--- a/hgext/keyword.py
+++ b/hgext/keyword.py
@@ -94,7 +94,7 @@
 
 # hg commands that trigger expansion only when writing to working dir,
 # not when reading filelog, and unexpand when reading from working dir
-restricted = 'record qfold qimport qnew qpush qrefresh qrecord'
+restricted = 'merge record resolve qfold qimport qnew qpush qrefresh qrecord'
 
 def utcdate(date):
     '''Returns hgdate in cvs-like UTC format.'''
diff --git a/tests/test-keyword b/tests/test-keyword
--- a/tests/test-keyword
+++ b/tests/test-keyword
@@ -301,6 +301,31 @@
 echo % errors encountered
 cat errors.log
 
+echo % merge/resolve
+echo '$Id$' > m
+hg add m
+hg commit -m 4kw 
+echo foo >> m
+hg commit -m 5foo
+echo % simplemerge
+hg update 4
+echo foo >> m
+hg commit -m 6foo
+hg merge
+hg commit -m simplemerge
+cat m
+echo % conflict
+hg update 4
+echo bar >> m
+hg commit -m 8bar
+hg merge
+echo % keyword stays outside conflict zone
+cat m
+echo % resolve to local
+HGMERGE=internal:local hg resolve
+hg commit -m localresolve
+cat m
+
 echo % switch off expansion
 echo % kwshrink with unknown file u
 cp a u
diff --git a/tests/test-keyword.out b/tests/test-keyword.out
--- a/tests/test-keyword.out
+++ b/tests/test-keyword.out
@@ -431,9 +431,36 @@
 
 
 % 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
+% 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$


More information about the Mercurial-devel mailing list