diff --git a/setup.py b/setup.py index e8dfe89..6348275 100644 --- a/setup.py +++ b/setup.py @@ -38,7 +38,6 @@ setup( 'Intended Audience :: Developers', 'License :: OSI Approved :: BSD License', 'Natural Language :: English', - 'Programming Language :: Python', 'Topic :: Text Editors', 'Programming Language :: Python', 'Programming Language :: Python :: 2', diff --git a/wakatime/projects/subversion.py b/wakatime/projects/subversion.py index 33617ad..16935f0 100644 --- a/wakatime/projects/subversion.py +++ b/wakatime/projects/subversion.py @@ -62,21 +62,22 @@ class Subversion(BaseProject): def _get_info(self, path): info = OrderedDict() - stdout = None - try: - os.environ['LANG'] = 'en_US' - stdout, stderr = Popen([ - self._find_binary(), 'info', os.path.realpath(path) - ], stdout=PIPE, stderr=PIPE).communicate() - except OSError: - pass - else: - if stdout: - for line in stdout.splitlines(): - line = u(line) - line = line.split(': ', 1) - if len(line) == 2: - info[line[0]] = line[1] + if not self._is_mac() or self._has_xcode_tools(): + stdout = None + try: + os.environ['LANG'] = 'en_US' + stdout, stderr = Popen([ + self._find_binary(), 'info', os.path.realpath(path) + ], stdout=PIPE, stderr=PIPE).communicate() + except OSError: + pass + else: + if stdout: + for line in stdout.splitlines(): + line = u(line) + line = line.split(': ', 1) + if len(line) == 2: + info[line[0]] = line[1] return info def _find_project_base(self, path, found=False): @@ -97,3 +98,18 @@ class Subversion(BaseProject): return found return self._find_project_base(split_path[0], found) + def _is_mac(self): + return platform.system() == 'Darwin' + + def _has_xcode_tools(self): + try: + with open(os.devnull, 'wb') as DEVNULL: + proc = Popen(['/usr/bin/xcode-select', '-p'], stdout=DEVNULL, stderr=DEVNULL) + proc.communicate() + retval = proc.wait() + if retval == 0: + return True + except: + pass + return False +