3
Remove the last revision from the history of the current branch.
8
from bzrlib.errors import BoundBranchOutOfDate
10
def test_remove(filename):
11
if os.path.exists(filename):
14
print '* file does not exist: %r' % filename
17
def uncommit(branch, dry_run=False, verbose=False, revno=None, tree=None):
18
"""Remove the last revision from the supplied branch.
20
:param dry_run: Don't actually change anything
21
:param verbose: Print each step as you do it
22
:param revno: Remove back to this revision
24
from bzrlib.atomicfile import AtomicFile
29
unlockable.append(tree)
32
unlockable.append(branch)
34
master = branch.get_master_branch()
35
if master is not None:
37
unlockable.append(master)
38
rh = branch.revision_history()
39
if master is not None and rh[-1] != master.last_revision():
40
raise BoundBranchOutOfDate(branch, master)
45
for r in range(revno-1, len(rh)):
48
print 'Removing revno %d: %s' % (len(rh)+1, rev_id)
51
# Committing before we start removing files, because
52
# once we have removed at least one, all the rest are invalid.
54
if master is not None:
55
master.set_revision_history(rh)
56
branch.set_revision_history(rh)
58
tree.set_last_revision(branch.last_revision())
60
for item in reversed(unlockable):