[PATCH] move lock_read() into "bzr log"
Robert Widhopf-Fenk
hack at robf.de
Fri Jun 9 23:09:45 BST 2006
Also with the earlier changes in the revspec date: the
current code still reads the knit (index) twice.
The attached patch removes the two lock_read() calls and adds
a single lock_read() earlier in the call stack.
-------------- next part --------------
=== modified file 'bzrlib/builtins.py'
--- bzrlib/builtins.py 2006-06-09 21:48:56 +0000
+++ bzrlib/builtins.py 2006-06-09 21:55:35 +0000
@@ -1280,48 +1280,52 @@
dir, relpath = bzrdir.BzrDir.open_containing('.')
b = dir.open_branch()
- if revision is None:
- rev1 = None
- rev2 = None
- elif len(revision) == 1:
- rev1 = rev2 = revision[0].in_history(b).revno
- elif len(revision) == 2:
- if revision[0].spec is None:
- # missing begin-range means first revision
- rev1 = 1
- else:
- rev1 = revision[0].in_history(b).revno
-
- if revision[1].spec is None:
- # missing end-range means last known revision
- rev2 = b.revno()
- else:
- rev2 = revision[1].in_history(b).revno
- else:
- raise BzrCommandError('bzr log --revision takes one or two values.')
-
- # By this point, the revision numbers are converted to the +ve
- # form if they were supplied in the -ve form, so we can do
- # this comparison in relative safety
- if rev1 > rev2:
- (rev2, rev1) = (rev1, rev2)
-
- if (log_format == None):
- default = bzrlib.config.BranchConfig(b).log_format()
- log_format = get_log_format(long=long, short=short, line=line, default=default)
- lf = log_formatter(log_format,
- show_ids=show_ids,
- to_file=self.outf,
- show_timezone=timezone)
-
- show_log(b,
- lf,
- file_id,
- verbose=verbose,
- direction=direction,
- start_revision=rev1,
- end_revision=rev2,
- search=message)
+ b.lock_read()
+ try:
+ if revision is None:
+ rev1 = None
+ rev2 = None
+ elif len(revision) == 1:
+ rev1 = rev2 = revision[0].in_history(b).revno
+ elif len(revision) == 2:
+ if revision[0].spec is None:
+ # missing begin-range means first revision
+ rev1 = 1
+ else:
+ rev1 = revision[0].in_history(b).revno
+
+ if revision[1].spec is None:
+ # missing end-range means last known revision
+ rev2 = b.revno()
+ else:
+ rev2 = revision[1].in_history(b).revno
+ else:
+ raise BzrCommandError('bzr log --revision takes one or two values.')
+
+ # By this point, the revision numbers are converted to the +ve
+ # form if they were supplied in the -ve form, so we can do
+ # this comparison in relative safety
+ if rev1 > rev2:
+ (rev2, rev1) = (rev1, rev2)
+
+ if (log_format == None):
+ default = bzrlib.config.BranchConfig(b).log_format()
+ log_format = get_log_format(long=long, short=short, line=line, default=default)
+ lf = log_formatter(log_format,
+ show_ids=show_ids,
+ to_file=self.outf,
+ show_timezone=timezone)
+
+ show_log(b,
+ lf,
+ file_id,
+ verbose=verbose,
+ direction=direction,
+ start_revision=rev1,
+ end_revision=rev2,
+ search=message)
+ finally:
+ b.unlock()
def get_log_format(long=False, short=False, line=False, default='long'):
=== modified file 'bzrlib/log.py'
--- bzrlib/log.py 2006-06-07 19:13:41 +0000
+++ bzrlib/log.py 2006-06-09 21:50:12 +0000
@@ -155,12 +155,8 @@
end_revision
If not None, only show revisions <= end_revision
"""
- branch.lock_read()
- try:
- _show_log(branch, lf, specific_fileid, verbose, direction,
- start_revision, end_revision, search)
- finally:
- branch.unlock()
+ _show_log(branch, lf, specific_fileid, verbose, direction,
+ start_revision, end_revision, search)
def _show_log(branch,
lf,
=== modified file 'bzrlib/revisionspec.py'
--- bzrlib/revisionspec.py 2006-05-24 00:06:33 +0000
+++ bzrlib/revisionspec.py 2006-06-09 21:50:12 +0000
@@ -308,11 +308,7 @@
dt = datetime.datetime(year=year, month=month, day=day,
hour=hour, minute=minute, second=second)
- branch.lock_read()
- try:
- rev = bisect.bisect(RevisionSpec_revs(revs, branch), dt)
- finally:
- branch.unlock()
+ rev = bisect.bisect(RevisionSpec_revs(revs, branch), dt)
if rev == len(revs):
return RevisionInfo(branch, None)
else:
More information about the bazaar
mailing list