Skip to content

Commit f670b14

Browse files
committed
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.
1 parent ba19b27 commit f670b14

1 file changed

Lines changed: 9 additions & 3 deletions

File tree

meld/filediff.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,8 +1046,11 @@ def set_merge_output_file(self, filename):
10461046
buf = self.textbuffer[1]
10471047
buf.data.savefile = os.path.abspath(filename)
10481048
buf.data.label = filename
1049-
self.set_buffer_writable(buf, os.access(buf.data.savefile, os.W_OK))
1050-
self.fileentry[1].set_filename(os.path.abspath(filename))
1049+
writable = True
1050+
if os.path.exists(buf.data.savefile):
1051+
writable = os.access(buf.data.savefile, os.W_OK)
1052+
self.set_buffer_writable(buf, writable)
1053+
self.fileentry[1].set_filename(buf.data.savefile)
10511054
self.recompute_label()
10521055

10531056
def _set_save_action_sensitivity(self):
@@ -1179,7 +1182,10 @@ def add_dismissable_msg(pane, icon, primary, secondary):
11791182
t.buf.insert(t.buf.get_end_iter(), nextbit)
11801183
else:
11811184
if t.buf.data.savefile:
1182-
writable = os.access(t.buf.data.savefile, os.W_OK)
1185+
writable = True
1186+
if os.path.exists(t.buf.data.savefile):
1187+
writable = os.access(
1188+
t.buf.data.savefile, os.W_OK)
11831189
else:
11841190
writable = os.access(t.filename, os.W_OK)
11851191
self.set_buffer_writable(t.buf, writable)

0 commit comments

Comments
 (0)