changeset 6055:a3d8b1f8721d

convert: support binary files, link to files (viceversa) in gnu arch
author Aleix Conchillo Flaque <aleix@member.fsf.org>
date Sat, 09 Feb 2008 17:36:42 +0100
parents e2cbdd931341
children 0ad2ffbf6b38
files hgext/convert/gnuarch.py
diffstat 1 files changed, 34 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/convert/gnuarch.py	Sat Feb 09 13:13:46 2008 +0100
+++ b/hgext/convert/gnuarch.py	Sat Feb 09 17:36:42 2008 +0100
@@ -246,31 +246,47 @@
     def _parsechangeset(self, data, rev):
         for l in data:
             l = l.strip()
+            # Added file (ignore added directory)
             if l.startswith('A') and not l.startswith('A/'):
                 file = l[1:].strip()
                 if not self._exclude(file):
                     self.changes[rev].add_files.append(file)
+            # Deleted file (ignore deleted directory)
+            elif l.startswith('D') and not l.startswith('D/'):
+                file = l[1:].strip()
+                if not self._exclude(file):
+                    self.changes[rev].del_files.append(file)
+            # Modified binary file
+            elif l.startswith('Mb'):
+                file = l[2:].strip()
+                if not self._exclude(file):
+                    self.changes[rev].mod_files.append(file)
+            # Modified link
+            elif l.startswith('M->'):
+                file = l[3:].strip()
+                if not self._exclude(file):
+                    self.changes[rev].mod_files.append(file)
+            # Modified file
+            elif l.startswith('M'):
+                file = l[1:].strip()
+                if not self._exclude(file):
+                    self.changes[rev].mod_files.append(file)
+            # Renamed file (or link)
+            elif l.startswith('=>'):
+                files = l[2:].strip().split(' ')
+                if len(files) == 1:
+                    files = l[2:].strip().split('\t')
+                if not self._exclude(files[0]) and not self._exclude(files[1]):
+                    self.changes[rev].ren_files[files[0]] = files[1]
+            # Conversion from file to link or from link to file (modified)
+            elif l.startswith('ch'):
+                file = l[2:].strip()
+                if not self._exclude(file):
+                    self.changes[rev].mod_files.append(file)
+            # Renamed directory
             elif l.startswith('/>'):
                 dirs = l[2:].strip().split(' ')
                 if len(dirs) == 1:
                     dirs = l[2:].strip().split('\t')
                 if not self._exclude(dirs[0]) and not self._exclude(dirs[1]):
                     self.changes[rev].ren_dirs[dirs[0]] = dirs[1]
-            elif l.startswith('M'):
-                file = l[1:].strip()
-                if not self._exclude(file):
-                    self.changes[rev].mod_files.append(file)
-            elif l.startswith('->'):
-                file = l[2:].strip()
-                if not self._exclude(file):
-                    self.changes[rev].mod_files.append(file)
-            elif l.startswith('D') and not l.startswith('D/'):
-                file = l[1:].strip()
-                if not self._exclude(file):
-                    self.changes[rev].del_files.append(file)
-            elif l.startswith('=>'):
-                files = l[2:].strip().split(' ')
-                if len(files) == 1:
-                    files = l[2:].strip().split('\t')
-                if not self._exclude(files[0]) and not self._exclude(files[1]):
-                    self.changes[rev].ren_files[files[0]] = files[1]