# HG changeset patch # User Christian Ebert # Date 1316010872 -3600 # Node ID 06a1ec674ee8a34b3a95ec7c4ae46d4d1d48701f # Parent d487504115fefcf8245e7b2eadbe24a9e7335884# Parent 639bb4617c704de72f61591be8563361c79634a7 Merge with default diff -r d487504115fe -r 06a1ec674ee8 hgkw/keyword.py --- a/hgkw/keyword.py Tue Aug 09 12:56:43 2011 +0200 +++ b/hgkw/keyword.py Wed Sep 14 15:34:32 2011 +0100 @@ -257,7 +257,6 @@ msg = _('overwriting %s expanding keywords\n') else: msg = _('overwriting %s shrinking keywords\n') - lctx = ctx for f in candidates: if self.restrict: data = self.repo.file(f).read(mf[f]) @@ -267,15 +266,17 @@ continue if expand: if lookup: - lctx = self.linkctx(f, mf[f]) - data, found = self.substitute(data, f, lctx, re_kw.subn) + ctx = self.linkctx(f, mf[f]) + data, found = self.substitute(data, f, ctx, re_kw.subn) elif self.restrict: found = re_kw.search(data) else: data, found = _shrinktext(data, re_kw.subn) if found: self.ui.note(msg % f) - self.repo.wwrite(f, data, ctx.flags(f)) + fp = self.repo.wopener(f, "wb", atomictemp=True) + fp.write(data) + fp.close() if kwcmd: self.repo.dirstate.normal(f) elif self.record: diff -r d487504115fe -r 06a1ec674ee8 tests/test-keyword.t --- a/tests/test-keyword.t Tue Aug 09 12:56:43 2011 +0200 +++ b/tests/test-keyword.t Wed Sep 14 15:34:32 2011 +0100 @@ -270,15 +270,20 @@ xxx $ ignore $Id$ -Check whether expansion is filewise +Check whether expansion is filewise and file mode is preserved $ echo '$Id$' > c $ echo 'tests for different changenodes' >> c + $ chmod 600 c + $ ls -l c | cut -b 1-10 + -rw------- commit file c $ hg commit -A -mcndiff -d '1 0' -u 'User Name ' adding c + $ ls -l c | cut -b 1-10 + -rw------- force expansion @@ -439,6 +444,8 @@ r committed changeset 3:899491280810 overwriting r expanding keywords + - status call required for dirstate.normallookup() check + $ hg status r $ hg --verbose rollback repository tip rolled back to revision 2 (undo commit) working directory now based on revision 2 @@ -829,6 +836,8 @@ $ hg copy a x/a $ hg --verbose kwshrink a overwriting a shrinking keywords + - sleep required for dirstate.normal() check + $ sleep 1 $ hg status a $ hg --verbose kwexpand a overwriting a expanding keywords