1
1
# Copyright (C) 2005, 2006 Canonical Ltd
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
5
5
# the Free Software Foundation; either version 2 of the License, or
6
6
# (at your option) any later version.
8
8
# This program is distributed in the hope that it will be useful,
9
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
11
# GNU General Public License for more details.
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
17
"""Command which looks for unsigned commits by the current user, and signs them.
20
from bzrlib.lazy_import import lazy_import
21
lazy_import(globals(), """
20
from bzrlib import config, gpg
21
from bzrlib.commands import Command
26
22
from bzrlib.bzrdir import BzrDir
28
from bzrlib.commands import Command
29
23
from bzrlib.option import Option
41
35
# (both mainline and merged), but not other revisions that may be in the
46
help='Don\'t actually sign anything, just print'
47
' the revisions that would be signed.'),
38
takes_options = [Option('dry-run'
39
, help='Don\'t actually sign anything, just print'
40
' the revisions that would be signed')
49
42
takes_args = ['location?', 'committer?']
51
44
def run(self, location=None, committer=None, dry_run=False):
68
repo.start_write_group()
70
for rev_id in repo.get_ancestry(branch.last_revision())[1:]:
71
if repo.has_signature_for_revision_id(rev_id):
73
rev = repo.get_revision(rev_id)
74
if rev.committer != committer:
76
# We have a revision without a signature who has a
77
# matching committer, start signing
81
repo.sign_revision(rev_id, gpg_strategy)
83
repo.abort_write_group()
86
repo.commit_write_group()
61
for rev_id in repo.get_ancestry(branch.last_revision())[1:]:
62
if repo.has_signature_for_revision_id(rev_id):
64
rev = repo.get_revision(rev_id)
65
if rev.committer != committer:
67
# We have a revision without a signature who has a
68
# matching committer, start signing
72
repo.sign_revision(rev_id, gpg_strategy)
89
75
print 'Signed %d revisions' % (count,)