hg-fast-export.py: do not lose file mode changes
authorKyle J. McKay <mackyle@gmail.com>
Sat, 15 Mar 2014 07:03:28 +0000 (15 00:03 -0700)
committerFrej Drejhammar <frej.drejhammar@gmail.com>
Sun, 16 Mar 2014 15:00:42 +0000 (16 16:00 +0100)
If the file mode changes (for example from 10644 to 10755), but the
actual text of the file itself does not, then the change could be
missed since the hashes would remain the same.

If the hashes match, also compare the gitmode values before deciding
the file is unchanged.

hg-fast-export.py

index afcdc46..9155bf9 100755 (executable)
@@ -59,7 +59,7 @@ def split_dict(dleft,dright,l=[],c=[],r=[],match=file_mismatch):
     if right==None:
       # we have the file but our parent hasn't: add to left set
       l.append(left)
-    elif match(dleft[left],right):
+    elif match(dleft[left],right) or gitmode(dleft.flags(left))!=gitmode(dright.flags(left)):
       # we have it but checksums mismatch: add to center set
       c.append(left)
   for right in dright.keys():