[PATCH] vc: Fix "meld <file>" operation
- From: Peter Tyser <ptyser gmail com>
- To: meld-list gnome org
- Subject: [PATCH] vc: Fix "meld <file>" operation
- Date: Sat, 14 Dec 2013 11:50:08 -0600
Add a check to choose_vc() to make sure it always checks if a directory
supports version control. Previously it would check if a file supported
version control. Version control is always supported on a directory
basis, and the underlying meld version control support doesn't support
checking if a specific file is under version control which would lead to
a runtime error similar to:
Traceback (most recent call last):
File "/home/user/meld/meld/meldapp.py", line 81, in do_command_line
self.parse_args(command_line.get_arguments()[1:])
File "/home/user/meld/meld/meldapp.py", line 205, in parse_args
auto_merge=options.auto_merge, new_tab=options.newtab)
File "/home/user/meld/meld/meldapp.py", line 120, in open_paths
return self.window.open_paths(paths, **kwargs)
File "/home/user/meld/meld/meldwindow.py", line 713, in open_paths
self._single_file_open(a)
File "/home/user/meld/meld/meldwindow.py", line 703, in _single_file_open
doc.set_location(path)
File "/home/user/meld/NEWS", line 356, in set_location
self.choose_vc(location)
File "/home/user/meld/NEWS", line 304, in choose_vc
elif not avc.valid_repo(location):
File "/home/user/meld/meld/vc/git.py", line 263, in valid_repo
return not _vc.call([cls.CMD, "branch"], cwd=path)
File "/home/user/meld/meld/vc/_vc.py", line 338, in call
return subprocess.call(cmd, cwd=cwd, stdout=NULL, stderr=NULL)
File "/usr/lib/python2.7/subprocess.py", line 522, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 709, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1326, in _execute_child
raise child_exception
OSError: [Errno 20] Not a directory: '/home/user/meld/NEWS'
Signed-off-by: Peter Tyser <ptyser gmail com>
---
There are a few ways to fix this. I thought this was the least invasive,
but feel free to rework as necessary.
meld/vcview.py | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/meld/vcview.py b/meld/vcview.py
index 5b4be8c..14c41d8 100644
--- a/meld/vcview.py
+++ b/meld/vcview.py
@@ -282,6 +282,11 @@ class VcView(melddoc.MeldDoc, gnomeglade.Component):
default_active = -1
valid_vcs = []
location = os.path.abspath(location or ".")
+
+ # VC systems work at the directory level, so make sure we're checking
+ # for VC support there instead of on a specific file.
+ if os.path.isfile(location):
+ location = os.path.dirname(location)
vcs = vc.get_vcs(location)
# Try to keep the same VC plugin active on refresh()
for idx, avc in enumerate(vcs):
--
1.8.3.2
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]