[meld] filediff: Assume non-existant output files are writable (bgo#730194)



commit f670b14dbd6779e6e56f8bc865d12df7fd9662a2
Author: Kai Willadsen <kai willadsen gmail com>
Date:   Sat May 17 08:37:53 2014 +1000

    filediff: Assume non-existant output files are writable (bgo#730194)
    
    The scenario this handles is VCs that give a non-existant file as the
    target file for a merge, expecting the helper (i.e., us) to write
    that file if the merge was successful.

 meld/filediff.py |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)
---
diff --git a/meld/filediff.py b/meld/filediff.py
index d792aca..be3f6c8 100644
--- a/meld/filediff.py
+++ b/meld/filediff.py
@@ -1046,8 +1046,11 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
         buf = self.textbuffer[1]
         buf.data.savefile = os.path.abspath(filename)
         buf.data.label = filename
-        self.set_buffer_writable(buf, os.access(buf.data.savefile, os.W_OK))
-        self.fileentry[1].set_filename(os.path.abspath(filename))
+        writable = True
+        if os.path.exists(buf.data.savefile):
+            writable = os.access(buf.data.savefile, os.W_OK)
+        self.set_buffer_writable(buf, writable)
+        self.fileentry[1].set_filename(buf.data.savefile)
         self.recompute_label()
 
     def _set_save_action_sensitivity(self):
@@ -1179,7 +1182,10 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
                         t.buf.insert(t.buf.get_end_iter(), nextbit)
                     else:
                         if t.buf.data.savefile:
-                            writable = os.access(t.buf.data.savefile, os.W_OK)
+                            writable = True
+                            if os.path.exists(t.buf.data.savefile):
+                                writable = os.access(
+                                    t.buf.data.savefile, os.W_OK)
                         else:
                             writable = os.access(t.filename, os.W_OK)
                         self.set_buffer_writable(t.buf, writable)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]