From: W. Trevor King Date: Wed, 29 Jul 2009 19:49:45 +0000 (-0400) Subject: Corrected some problems with revision_id() before an initial commit. X-Git-Tag: 1.0.0~62^2~46^2 X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=22a38de80ee11ada710bc6766798ca608f938307;p=be.git Corrected some problems with revision_id() before an initial commit. --- diff --git a/libbe/git.py b/libbe/git.py index 2b45679..f7e9646 100644 --- a/libbe/git.py +++ b/libbe/git.py @@ -117,7 +117,12 @@ class Git(RCS): return full_revision def _rcs_revision_id(self, index): args = ["rev-list", "--first-parent", "--reverse", "HEAD"] - status,output,error = self._u_invoke_client(*args) + kwargs = {"expect":(0,128)} + status,output,error = self._u_invoke_client(*args, **kwargs) + if status == 128: + if error.startswith("fatal: ambiguous argument 'HEAD': unknown "): + return None + raise rcs.CommandError(args, status, error) commits = output.splitlines() try: return commits[index] diff --git a/libbe/hg.py b/libbe/hg.py index fcda829..31df1d0 100644 --- a/libbe/hg.py +++ b/libbe/hg.py @@ -86,7 +86,10 @@ class Hg(RCS): kwargs = {"expect": (0,255)} status,output,error = self._u_invoke_client(*args, **kwargs) if status == 0: - return output.strip() + id = output.strip() + if id == '000000000000': + return None # before initial commit. + return id return None diff --git a/libbe/rcs.py b/libbe/rcs.py index d979df0..fdbb01a 100644 --- a/libbe/rcs.py +++ b/libbe/rcs.py @@ -860,6 +860,15 @@ class RCS_commit_TestCase(RCSTestCase): self.failUnlessEqual(self.rcs.revision_id(i), None) self.failUnlessEqual(self.rcs.revision_id(-i-1), None) + def test_revision_id_as_committed(self): + """Check revision id before first commit""" + if not self.rcs.versioned: + self.failUnlessEqual(self.rcs.revision_id(5), None) + return + committed_revisions = [] + for path in self.test_files: + self.failUnlessEqual(self.rcs.revision_id(0), None) + class RCS_duplicate_repo_TestCase(RCSTestCase): """Test cases for RCS.duplicate_repo method."""