Rev 3071: (Lukáš Lalinský) Add a global write lock for cmd_uncommit (related to #172649) in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Mon Dec 3 21:43:16 GMT 2007
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 3071
revision-id:pqm at pqm.ubuntu.com-20071203214310-467u6waddal0ucuw
parent: pqm at pqm.ubuntu.com-20071203210338-3w0ryakegm0xopp0
parent: john at arbash-meinel.com-20071203195541-zvk2kpnx4e0m9mlg
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Mon 2007-12-03 21:43:10 +0000
message:
(Lukáš Lalinský) Add a global write lock for cmd_uncommit (related to #172649)
modified:
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
------------------------------------------------------------
revno: 3065.2.2
revision-id:john at arbash-meinel.com-20071203195541-zvk2kpnx4e0m9mlg
parent: lalinsky at gmail.com-20071202191200-l0t8rhwq6lt4be67
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: jam-integration
timestamp: Mon 2007-12-03 13:55:41 -0600
message:
During bzr uncommit, lock the working tree if it is available.
modified:
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
------------------------------------------------------------
revno: 3065.2.1
revision-id:lalinsky at gmail.com-20071202191200-l0t8rhwq6lt4be67
parent: pqm at pqm.ubuntu.com-20071202151118-zcl7ezt2c7k5rkos
committer: Lukáš Lalinský <lalinsky at gmail.com>
branch nick: uncommit
timestamp: Sun 2007-12-02 20:12:00 +0100
message:
Add a global branch write lock to cmd_uncommit and avoid unnecessary Branch.revno calls.
modified:
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py 2007-11-29 18:41:01 +0000
+++ b/bzrlib/builtins.py 2007-12-03 19:55:41 +0000
@@ -3574,9 +3574,6 @@
def run(self, location=None,
dry_run=False, verbose=False,
revision=None, force=False):
- from bzrlib.log import log_formatter, show_log
- from bzrlib.uncommit import uncommit
-
if location is None:
location = u'.'
control, relpath = bzrdir.BzrDir.open_containing(location)
@@ -3587,19 +3584,38 @@
tree = None
b = control.open_branch()
+ if tree is not None:
+ tree.lock_write()
+ else:
+ b.lock_write()
+ try:
+ return self._run(b, tree, dry_run, verbose, revision, force)
+ finally:
+ if tree is not None:
+ tree.unlock()
+ else:
+ b.unlock()
+
+ def _run(self, b, tree, dry_run, verbose, revision, force):
+ from bzrlib.log import log_formatter, show_log
+ from bzrlib.uncommit import uncommit
+
+ last_revno, last_rev_id = b.last_revision_info()
+
rev_id = None
if revision is None:
- revno = b.revno()
+ revno = last_revno
+ rev_id = last_rev_id
else:
# 'bzr uncommit -r 10' actually means uncommit
# so that the final tree is at revno 10.
# but bzrlib.uncommit.uncommit() actually uncommits
# the revisions that are supplied.
# So we need to offset it by one
- revno = revision[0].in_history(b).revno+1
+ revno = revision[0].in_history(b).revno + 1
+ if revno <= last_revno:
+ rev_id = b.get_rev_id(revno)
- if revno <= b.revno():
- rev_id = b.get_rev_id(revno)
if rev_id is None or _mod_revision.is_null(rev_id):
self.outf.write('No revisions to uncommit.\n')
return 1
@@ -3613,7 +3629,7 @@
verbose=False,
direction='forward',
start_revision=revno,
- end_revision=b.revno())
+ end_revision=last_revno)
if dry_run:
print 'Dry-run, pretending to remove the above revisions.'
@@ -3628,7 +3644,7 @@
return 0
uncommit(b, tree=tree, dry_run=dry_run, verbose=verbose,
- revno=revno)
+ revno=revno)
class cmd_break_lock(Command):
More information about the bazaar-commits
mailing list