diff options
Diffstat (limited to 'libbe/bzr.py')
-rw-r--r-- | libbe/bzr.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/libbe/bzr.py b/libbe/bzr.py index d7cd1e5..7457815 100644 --- a/libbe/bzr.py +++ b/libbe/bzr.py @@ -93,6 +93,28 @@ class Bzr(RCS): assert len(match.groups()) == 1 revision = match.groups()[0] return revision + def _rcs_revision_id(self, index): + status,output,error = self._u_invoke_client("revno") + current_revision = int(output) + if index >= current_revision or index < -current_revision: + return None + if index >= 0: + return str(index+1) # bzr commit 0 is the empty tree. + return str(current_revision+index+1) + def postcommit(self): + try: + self._u_invoke_client('merge') + except rcs.CommandError, e: + if ('No merge branch known or specified' in e.err_str or + 'No merge location known or specified' in e.err_str): + pass + else: + self._u_invoke_client('revert', '--no-backup', + directory=directory) + self._u_invoke_client('resolve', '--all', directory=directory) + raise + if len(self._u_invoke_client('status', directory=directory)[1]) > 0: + self.commit('Merge from upstream') rcs.make_rcs_testcase_subclasses(Bzr, sys.modules[__name__]) |