diff hgext/largefiles/overrides.py @ 19954:427ce5633c1c stable

largefiles: don't prompt for normal/largefile changes when doing plain updates We used to get like: $ hg up -r 2 foo has been turned into a normal file keep as (l)argefile or use (n)ormal file? l getting changed largefiles 0 largefiles updated, 0 removed 0 files updated, 0 files merged, 2 files removed, 0 files unresolved $ cat foo cat: foo: No such file or directory [1] - which both asked the wrong question and did the wrong thing. Instead, skip this conflict resolution when the local conflicting file has been scheduled for removal and there thus is no conflict.
author Mads Kiilerich <madski@unity3d.com>
date Fri, 25 Oct 2013 02:33:59 +0800
parents 593207462618
children e92c6524a76d
line wrap: on
line diff
--- a/hgext/largefiles/overrides.py	Fri Oct 25 02:25:10 2013 +0800
+++ b/hgext/largefiles/overrides.py	Fri Oct 25 02:33:59 2013 +0800
@@ -374,6 +374,7 @@
     if overwrite:
         return actions
 
+    removes = set(a[0] for a in actions if a[1] == 'r')
     processed = []
 
     for action in actions:
@@ -381,7 +382,7 @@
 
         splitstandin = lfutil.splitstandin(f)
         if (m == "g" and splitstandin is not None and
-            splitstandin in p1):
+            splitstandin in p1 and splitstandin not in removes):
             # Case 1: normal file in the working copy, largefile in
             # the second parent
             lfile = splitstandin
@@ -394,7 +395,8 @@
                 processed.append((standin, "g", (p2.flags(standin),), msg))
             else:
                 processed.append((standin, "r", None, msg))
-        elif m == "g" and lfutil.standin(f) in p1:
+        elif (m == "g" and
+            lfutil.standin(f) in p1 and lfutil.standin(f) not in removes):
             # Case 2: largefile in the working copy, normal file in
             # the second parent
             standin = lfutil.standin(f)