chiark / gitweb /
Don't assume there is always a stage 2 in git.get_conflicts
authorCatalin Marinas <catalin.marinas@gmail.com>
Wed, 19 Dec 2007 18:00:15 +0000 (18:00 +0000)
committerCatalin Marinas <catalin.marinas@gmail.com>
Wed, 19 Dec 2007 23:13:32 +0000 (23:13 +0000)
For example, the t1202-push-undo.sh test generates a conflict where a
file was added in both current and patch but different content and
missing in ancestor, therefore no stage 2.

There could also be a case where stage 3 is missing if a file is
removed by the patch being pushed.

Signed-off-by: Catalin Marinas <catalin.marinas@gmail.com>
stgit/git.py

index 0cfcd42b6606c39621cc2c1a01197f9fe620aa0a..01076c917f8a80a97755c5f0fbe498a062d35317 100644 (file)
@@ -153,14 +153,12 @@ def get_commit(id_hash):
 def get_conflicts():
     """Return the list of file conflicts
     """
-    names = []
+    names = set()
     for line in GRun('ls-files', '-z', '--unmerged'
                      ).raw_output().split('\0')[:-1]:
         stat, path = line.split('\t', 1)
-        # Look for entries in stage 2 (could equally well use 3)
-        if stat.endswith(' 2'):
-            names.append(path)
-    return names
+        names.add(path)
+    return list(names)
 
 def exclude_files():
     files = [os.path.join(basedir.get(), 'info', 'exclude')]