diff options
-rw-r--r-- | libbe/arch.py | 4 | ||||
-rw-r--r-- | libbe/bzr.py | 4 | ||||
-rw-r--r-- | libbe/darcs.py | 26 | ||||
-rw-r--r-- | libbe/git.py | 4 | ||||
-rw-r--r-- | libbe/hg.py | 4 | ||||
-rw-r--r-- | libbe/vcs.py | 25 |
6 files changed, 37 insertions, 30 deletions
diff --git a/libbe/arch.py b/libbe/arch.py index c2d7cde..daa8ac6 100644 --- a/libbe/arch.py +++ b/libbe/arch.py @@ -53,8 +53,8 @@ class Arch(vcs.VCS): _project_name = None _tmp_project = False _arch_paramdir = os.path.expanduser("~/.arch-params") - def _vcs_help(self): - status,output,error = self._u_invoke_client("--help") + def _vcs_version(self): + status,output,error = self._u_invoke_client("--version") return output def _vcs_detect(self, path): """Detect whether a directory is revision-controlled using Arch""" diff --git a/libbe/bzr.py b/libbe/bzr.py index e9e0649..ed9e032 100644 --- a/libbe/bzr.py +++ b/libbe/bzr.py @@ -37,8 +37,8 @@ class Bzr(vcs.VCS): name = "bzr" client = "bzr" versioned = True - def _vcs_help(self): - status,output,error = self._u_invoke_client("--help") + def _vcs_version(self): + status,output,error = self._u_invoke_client("--version") return output def _vcs_detect(self, path): if self._u_search_parent_directories(path, ".bzr") != None : diff --git a/libbe/darcs.py b/libbe/darcs.py index 16005f2..9115886 100644 --- a/libbe/darcs.py +++ b/libbe/darcs.py @@ -40,8 +40,10 @@ class Darcs(vcs.VCS): name="darcs" client="darcs" versioned=True - def _vcs_help(self): - status,output,error = self._u_invoke_client("--help") + def _vcs_version(self): + status,output,error = self._u_invoke_client("--version") + num_part = output.split(" ")[0] + self.parsed_version = [int(i) for i in num_part.split(".")] return output def _vcs_detect(self, path): if self._u_search_parent_directories(path, "_darcs") != None : @@ -95,20 +97,20 @@ class Darcs(vcs.VCS): def _vcs_get_file_contents(self, path, revision=None, binary=False): if revision == None: return vcs.VCS._vcs_get_file_contents(self, path, revision, - binary=binary) + binary=binary) else: - try: - return self._u_invoke_client("show", "contents", "--patch", revision, path) - except vcs.CommandError: + if self.parsed_version[0] >= 2: + status,output,error = self._u_invoke_client( \ + "show", "contents", "--patch", revision, path) + return output + else: # Darcs versions < 2.0.0pre2 lack the "show contents" command - status,output,error = self._u_invoke_client("diff", "--unified", - "--from-patch", - revision, path) + status,output,error = self._u_invoke_client( \ + "diff", "--unified", "--from-patch", revision, path) major_patch = output - status,output,error = self._u_invoke_client("diff", "--unified", - "--patch", - revision, path) + status,output,error = self._u_invoke_client( \ + "diff", "--unified", "--patch", revision, path) target_patch = output # "--output -" to be supported in GNU patch > 2.5.9 diff --git a/libbe/git.py b/libbe/git.py index 3abe3b8..628f9b9 100644 --- a/libbe/git.py +++ b/libbe/git.py @@ -36,8 +36,8 @@ class Git(vcs.VCS): name="git" client="git" versioned=True - def _vcs_help(self): - status,output,error = self._u_invoke_client("--help") + def _vcs_version(self): + status,output,error = self._u_invoke_client("--version") return output def _vcs_detect(self, path): if self._u_search_parent_directories(path, ".git") != None : diff --git a/libbe/hg.py b/libbe/hg.py index f8f8121..7cd4c2f 100644 --- a/libbe/hg.py +++ b/libbe/hg.py @@ -36,8 +36,8 @@ class Hg(vcs.VCS): name="hg" client="hg" versioned=True - def _vcs_help(self): - status,output,error = self._u_invoke_client("--help") + def _vcs_version(self): + status,output,error = self._u_invoke_client("--version") return output def _vcs_detect(self, path): """Detect whether a directory is revision-controlled using Mercurial""" diff --git a/libbe/vcs.py b/libbe/vcs.py index da1f800..7b506e8 100644 --- a/libbe/vcs.py +++ b/libbe/vcs.py @@ -124,13 +124,12 @@ class VCS(object): self._duplicateBasedir = None self._duplicateDirname = None self.encoding = encoding - - def _vcs_help(self): + self.version = self._get_version() + def _vcs_version(self): """ - Return the command help string. - (Allows a simple test to see if the client is installed.) + Return the VCS version string. """ - pass + return "0.0" def _vcs_detect(self, path=None): """ Detect whether a directory is revision controlled with this VCS. @@ -229,15 +228,21 @@ class VCS(object): specified revision does not exist. """ return None - def installed(self): + def _get_version(self): try: - self._vcs_help() - return True + ret = self._vcs_version() + return ret except OSError, e: if e.errno == errno.ENOENT: - return False + return None + else: + raise OSError, e except CommandError: - return False + return None + def installed(self): + if self.version != None: + return True + return False def detect(self, path="."): """ Detect whether a directory is revision controlled with this VCS. |