From a5572bfc294c37033b06ea12316ed257987c1f19 Mon Sep 17 00:00:00 2001 From: Alan Hamlett Date: Wed, 27 Aug 2014 03:25:05 -0700 Subject: [PATCH] find svn binary location from common install directories --- wakatime/projects/subversion.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/wakatime/projects/subversion.py b/wakatime/projects/subversion.py index 5a5551e..6e49bf5 100644 --- a/wakatime/projects/subversion.py +++ b/wakatime/projects/subversion.py @@ -32,6 +32,7 @@ except NameError: class Subversion(BaseProject): + binary_location = None def process(self): return self._find_project_base(self.path) @@ -44,13 +45,31 @@ class Subversion(BaseProject): unicode(os.path.basename(self.base)) return None + def _find_binary(self): + if self.binary_location: + return self.binary_location + locations = [ + 'svn', + '/usr/bin/svn', + '/usr/local/bin/svn', + ] + for location in locations: + try: + Popen([location, '--version']) + self.binary_location = location + return location + except: + pass + self.binary_location = 'svn' + return 'svn' + def _get_info(self, path): info = OrderedDict() stdout = None try: os.environ['LANG'] = 'en_US' stdout, stderr = Popen([ - 'svn', 'info', os.path.realpath(path) + self._find_binary(), 'info', os.path.realpath(path) ], stdout=PIPE, stderr=PIPE).communicate() except OSError: pass