Rev 3025: Manage write groups in sign_my_commits, for efficiency. in http://people.ubuntu.com/~robertc/baz2.0/pack.read-locks

Robert Collins robertc at robertcollins.net
Thu Nov 22 02:24:17 GMT 2007


At http://people.ubuntu.com/~robertc/baz2.0/pack.read-locks

------------------------------------------------------------
revno: 3025
revision-id:robertc at robertcollins.net-20071122022357-17rpgugyooepb30y
parent: robertc at robertcollins.net-20071122020949-kpvph7srqw3h60p1
committer: Robert Collins <robertc at robertcollins.net>
branch nick: pack.read-locks
timestamp: Thu 2007-11-22 13:23:57 +1100
message:
  Manage write groups in sign_my_commits, for efficiency.
modified:
  bzrlib/sign_my_commits.py      sign_my_commits.py-20060215152201-5a6363365180e671
=== modified file 'bzrlib/sign_my_commits.py'
--- a/bzrlib/sign_my_commits.py	2007-07-10 10:33:45 +0000
+++ b/bzrlib/sign_my_commits.py	2007-11-22 02:23:57 +0000
@@ -65,18 +65,25 @@
         count = 0
         repo.lock_write()
         try:
-            for rev_id in repo.get_ancestry(branch.last_revision())[1:]:
-                if repo.has_signature_for_revision_id(rev_id):
-                    continue
-                rev = repo.get_revision(rev_id)
-                if rev.committer != committer:
-                    continue
-                # We have a revision without a signature who has a 
-                # matching committer, start signing
-                print rev_id
-                count += 1
-                if not dry_run:
-                    repo.sign_revision(rev_id, gpg_strategy)
+            repo.start_write_group()
+            try:
+                for rev_id in repo.get_ancestry(branch.last_revision())[1:]:
+                    if repo.has_signature_for_revision_id(rev_id):
+                        continue
+                    rev = repo.get_revision(rev_id)
+                    if rev.committer != committer:
+                        continue
+                    # We have a revision without a signature who has a 
+                    # matching committer, start signing
+                    print rev_id
+                    count += 1
+                    if not dry_run:
+                        repo.sign_revision(rev_id, gpg_strategy)
+            except:
+                repo.abort_write_group()
+                raise
+            else:
+                repo.commit_write_group()
         finally:
             repo.unlock()
         print 'Signed %d revisions' % (count,)



More information about the bazaar-commits mailing list