keyword: preserve file mode when overwriting stable
authorChristian Ebert <blacktrash@gmx.net>
Thu, 08 Sep 2011 19:30:25 +0100
branchstable
changeset 15070 e4c65158b5e7
parent 15066 24efa83d81cb
child 15071 ad6eb7d7dbca
keyword: preserve file mode when overwriting
hgext/keyword.py
tests/test-keyword.t
--- a/hgext/keyword.py	Sat Aug 27 04:56:12 2011 +0900
+++ b/hgext/keyword.py	Thu Sep 08 19:30:25 2011 +0100
@@ -270,7 +270,10 @@
                 data, found = _shrinktext(data, re_kw.subn)
             if found:
                 self.ui.note(msg % f)
+                fpath = self.repo.wjoin(f)
+                mode = os.lstat(fpath).st_mode
                 self.repo.wwrite(f, data, ctx.flags(f))
+                os.chmod(fpath, mode)
                 if kwcmd:
                     self.repo.dirstate.normal(f)
                 elif self.record:
--- a/tests/test-keyword.t	Sat Aug 27 04:56:12 2011 +0900
+++ b/tests/test-keyword.t	Thu Sep 08 19:30:25 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 <user@example.com>'
   adding c
+  $ ls -l c | cut -b 1-10
+  -rw-------
 
 force expansion