# HG changeset patch
# User paulm
# Date 1263840299 28800
# Branch stable
# Node ID f6e36cf2a7ff6c97a2b0a269b20546fe2853a91c
# Parent  439d7ea6fe3aa4ab9ec274a68846779153789de9
merge: if action is permissions change, but not owner, change action to get

If we're not the file owner, we won't have permissions to
change executable permission bit... but (as long as we have read/write
access to directory), we can just delete / recreate the file, which is
essentially what the "get" action does - so do that instead

diff -r 439d7ea6fe3a -r f6e36cf2a7ff mercurial/merge.py
--- a/mercurial/merge.py        Tue Dec 01 19:28:15 2009 -0600
+++ b/mercurial/merge.py        Mon Jan 18 10:44:59 2010 -0800
@@ -125,6 +125,7 @@
     partial = function to filter file lists
     """
 
+    print "merging manifests"
     def fmerge(f, f2, fa):
         """merge flags"""
         a, m, n = ma.flags(fa), m1.flags(f), m2.flags(f2)
@@ -183,7 +184,15 @@
             a = ma.get(f, nullid)
             if n == m2[f] or m2[f] == a: # same or local newer
                 if m1.flags(f) != rflags:
-                    act("update permissions", "e", f, rflags)
+                    # If we're not the owner we won't be
+                    # allowed to change permissions;
+                    # in this case, act like we're checking out
+                    # the file, which should work as long as
+                    # we have write permissions to the directory
+                    if not util.isowner(os.stat(f)):
+                        act("remote is newer", "g", f, rflags)
+                    else:
+                        act("update permissions", "e", f, rflags)
             elif n == a: # remote newer
                 act("remote is newer", "g", f, rflags)
             else: # both changed

------------------------------------------------------------------------------
Throughout its 18-year history, RSA Conference consistently attracts the
world's best and brightest in the field, creating opportunities for Conference
attendees to learn about information security's most important issues through
interactions with peers, luminaries and emerging and established companies.
http://p.sf.net/sfu/rsaconf-dev2dev
_______________________________________________
Tortoisehg-develop mailing list
Tortoisehg-develop@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tortoisehg-develop

Reply via email to