~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/sign_my_commits.py

  • Committer: Martin Pool
  • Date: 2009-08-20 04:53:23 UTC
  • mto: This revision was merged to the branch mainline in revision 4632.
  • Revision ID: mbp@sourcefrog.net-20090820045323-4hsicfa87pdq3l29
Correction to xdg_cache_dir and add a simple test

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
"""Command which looks for unsigned commits by the current user, and signs them.
18
18
"""
19
19
 
20
 
from bzrlib import config, gpg
 
20
from bzrlib.lazy_import import lazy_import
 
21
lazy_import(globals(), """
 
22
from bzrlib import (
 
23
    config,
 
24
    gpg,
 
25
    )
 
26
from bzrlib.bzrdir import BzrDir
 
27
""")
21
28
from bzrlib.commands import Command
22
 
from bzrlib.bzrdir import BzrDir
23
29
from bzrlib.option import Option
24
30
 
25
31
 
35
41
    # (both mainline and merged), but not other revisions that may be in the
36
42
    # repository
37
43
 
38
 
    takes_options = [Option('dry-run'
39
 
                            , help='Don\'t actually sign anything, just print'
40
 
                                   ' the revisions that would be signed')
41
 
                    ]
 
44
    takes_options = [
 
45
            Option('dry-run',
 
46
                   help='Don\'t actually sign anything, just print'
 
47
                        ' the revisions that would be signed.'),
 
48
            ]
42
49
    takes_args = ['location?', 'committer?']
43
50
 
44
51
    def run(self, location=None, committer=None, dry_run=False):
58
65
        count = 0
59
66
        repo.lock_write()
60
67
        try:
61
 
            for rev_id in repo.get_ancestry(branch.last_revision())[1:]:
62
 
                if repo.has_signature_for_revision_id(rev_id):
63
 
                    continue
64
 
                rev = repo.get_revision(rev_id)
65
 
                if rev.committer != committer:
66
 
                    continue
67
 
                # We have a revision without a signature who has a 
68
 
                # matching committer, start signing
69
 
                print rev_id
70
 
                count += 1
71
 
                if not dry_run:
72
 
                    repo.sign_revision(rev_id, gpg_strategy)
 
68
            repo.start_write_group()
 
69
            try:
 
70
                for rev_id in repo.get_ancestry(branch.last_revision())[1:]:
 
71
                    if repo.has_signature_for_revision_id(rev_id):
 
72
                        continue
 
73
                    rev = repo.get_revision(rev_id)
 
74
                    if rev.committer != committer:
 
75
                        continue
 
76
                    # We have a revision without a signature who has a
 
77
                    # matching committer, start signing
 
78
                    print rev_id
 
79
                    count += 1
 
80
                    if not dry_run:
 
81
                        repo.sign_revision(rev_id, gpg_strategy)
 
82
            except:
 
83
                repo.abort_write_group()
 
84
                raise
 
85
            else:
 
86
                repo.commit_write_group()
73
87
        finally:
74
88
            repo.unlock()
75
89
        print 'Signed %d revisions' % (count,)