Package: devscripts
Version: 2.14.1
Severity: normal
Tags: patch
For keyring-maint work, we gpg-sign each individual commit to the
repository. We were until now using a Bazaar repository, but as we are
switching to Git, we can no longer specify that commit messages should
be signed by default.
I usually do my keyring-maint commits via debcommit; this simple patch
solves our use case (and you see here included my ~/.devscripts
putting it in action).
Ah, and FWIW: I chose to leave the configuration variable as
"DEBCOMMIT_SIGN_COMMITS", because its meaning is in plural (always
sign the commits), but the command line switch in singular
(--sign-commit), because it only applies to the current case.
-- Package-specific info:
--- /etc/devscripts.conf ---
--- ~/.devscripts ---
DEBSIGN_KEYID=C1DB921F
DEBCOMMIT_SIGN_COMMITS=yes
-- System Information:
Debian Release: jessie/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Kernel: Linux 3.13-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages devscripts depends on:
ii dpkg-dev 1.17.6
ii libc6 2.18-3
ii perl 5.18.2-2
ii python3 3.3.4-1
pn python3:any <none>
Versions of packages devscripts recommends:
ii at 3.1.14-1
ii curl 7.35.0-1
ii dctrl-tools 2.23
pn debian-keyring <none>
ii dput 0.9.6.4
ii equivs 2.0.9
ii fakeroot 1.20-3
ii gnupg 1.4.16-1.1
ii libdistro-info-perl 0.12
ii libencode-locale-perl 1.03-1
ii libjson-perl 2.61-1
ii liblwp-protocol-https-perl 6.04-2
ii libparse-debcontrol-perl 2.005-4
ii libsoap-lite-perl 1.10-1
ii liburi-perl 1.60-1
ii libwww-perl 6.05-2
ii lintian 2.5.21
ii man-db 2.6.6-1
ii patch 2.7.1-4
ii patchutils 0.3.2-3
ii python3-debian 0.1.21+nmu2
ii python3-magic 1:5.17-0.1
ii sensible-utils 0.0.9
ii strace 4.5.20-2.3
ii unzip 6.0-10
ii wdiff 1.2.1-2
ii wget 1.15-1
ii xz-utils 5.1.1alpha+20120614-2
Versions of packages devscripts suggests:
ii bsd-mailx [mailx] 8.1.2-0.20131005cvs-1
ii build-essential 11.6
ii cvs-buildpackage 5.23
ii devscripts-el 35.11
ii gnuplot 4.6.4-2
ii gpgv 1.4.16-1.1
ii libauthen-sasl-perl 2.1500-1
ii libfile-desktopentry-perl 0.07-1
ii libnet-smtp-ssl-perl 1.01-3
ii libterm-size-perl 0.207-1+b1
ii libtimedate-perl 2.3000-1
ii libyaml-syck-perl 1.27-2+b1
ii mutt 1.5.21-6.4
ii openssh-client [ssh-client] 1:6.5p1-4
ii svn-buildpackage 0.8.5
ii w3m 0.5.3-15
-- no debconf information
--- /usr/bin/debcommit 2014-01-25 21:17:55.000000000 -0600
+++ /tmp/debcommit 2014-03-07 12:43:33.000000000 -0600
@@ -82,6 +82,11 @@
This option is set by default and ignored if more than one line of
the message begins with "[*+-] ".
+=item B<--sign-commit>, B<--no-sign-commit>
+
+If this option is set, then the commits that debcommit creates will be
+signed using gnupg. Currently this is only supported by git.
+
=item B<--sign-tags>, B<--no-sign-tags>
If this option is set, then tags that debcommit creates will be signed
@@ -116,6 +121,11 @@
If this is set to I<yes>, then it is the same as the B<--sign-tags> command
line parameter being used. The default is I<no>.
+=item B<DEBCOMMIT_SIGN_COMMITS>
+
+If this is set to I<yes>, then it is the same as the B<--sign-commit>
+command line parameter being used. The default is I<no>.
+
=item B<DEBCOMMIT_RELEASE_USE_CHANGELOG>
If this is set to I<yes>, then it is the same as the B<--release-use-changelog>
@@ -204,6 +214,8 @@
-a --all Commit all files (default except for git)
-s --strip-message Strip the leading '* ' from the commit message
--no-strip-message Do not strip a leading '* ' (default)
+ --sign-commit Enable signing of the commit (git only)
+ --no-sign-commit Do not sign the commit (default)
--sign-tags Enable signing of tags (git only)
--no-sign-tags Do not sign tags (default)
--changelog-info Use author and date information from the changelog
@@ -240,6 +252,7 @@
my $edit=0;
my $all=0;
my $stripmessage=1;
+my $signcommit=0;
my $signtags=0;
my $changelog;
my $changelog_info=0;
@@ -257,6 +270,7 @@
my @config_files = ('/etc/devscripts.conf', '~/.devscripts');
my %config_vars = (
'DEBCOMMIT_STRIP_MESSAGE' => 'yes',
+ 'DEBCOMMIT_SIGN_COMMITS' => 'no',
'DEBCOMMIT_SIGN_TAGS' => 'no',
'DEBCOMMIT_RELEASE_USE_CHANGELOG' => 'no',
'DEBSIGN_KEYID' => '',
@@ -278,6 +292,8 @@
# Check validity
$config_vars{'DEBCOMMIT_STRIP_MESSAGE'} =~ /^(yes|no)$/
or $config_vars{'DEBCOMMIT_STRIP_MESSAGE'}='yes';
+ $config_vars{'DEBCOMMIT_SIGN_COMMITS'} =~ /^(yes|no)$/
+ or $config_vars{'DEBCOMMIT_SIGN_COMMITS'}='no';
$config_vars{'DEBCOMMIT_SIGN_TAGS'} =~ /^(yes|no)$/
or $config_vars{'DEBCOMMIT_SIGN_TAGS'}='no';
$config_vars{'DEBCOMMIT_RELEASE_USE_CHANGELOG'} =~ /^(yes|no)$/
@@ -292,6 +308,7 @@
chomp $modified_conf_msg;
$stripmessage = $config_vars{'DEBCOMMIT_STRIP_MESSAGE'} eq 'no' ? 0 : 1;
+ $signcommit = $config_vars{'DEBCOMMIT_SIGN_COMMITS'} eq 'no' ? 0 : 1;
$signtags = $config_vars{'DEBCOMMIT_SIGN_TAGS'} eq 'no' ? 0 : 1;
$release_use_changelog = $config_vars{'DEBCOMMIT_RELEASE_USE_CHANGELOG'} eq 'no' ? 0 : 1;
if (exists $config_vars{'DEBSIGN_KEYID'} &&
@@ -321,6 +338,7 @@
"a|all" => \$all,
"c|changelog=s" => \$changelog,
"s|strip-message!" => \$stripmessage,
+ "sign-commit!" => \$signcommit,
"sign-tags!" => \$signtags,
"changelog-info!" => \$changelog_info,
"R|release-use-changelog!" => \$release_use_changelog,
@@ -535,6 +553,11 @@
if ($changelog_info) {
@extra_args = ("--author=$maintainer", "--date=$date");
}
+ if ($signcommit) {
+ my $sign = '-gpg--sign';
+ $sign .= "=$keyid" if $keyid;
+ push(@extra_args, $sign);
+ }
$action_rc = action($prog, "commit", "-m", $message, @extra_args, @files_to_commit);
}
}
_______________________________________________
devscripts-devel mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/devscripts-devel