Package: dh-make-perl Version: 0.92 Followup-For: Bug #852332 On 24 January 2017 at 13:15, gregor herrmann <gre...@debian.org> wrote: > On Tue, 24 Jan 2017 12:55:10 +0000, Dominic Hargreaves wrote: > >> > @@ -777,7 +777,7 @@ sub git_add_debian { >> > >> > my $git = Git->repository( $self->main_dir ); >> > $git->command( 'add', 'debian' ); >> > - $git->command( 'commit', '-m', >> > + $git->command( 'commit', '--author', $self->get_developer, '-m', >> > "Initial packaging by dh-make-perl $VERSION" ); >> > $git->command( >> > qw( remote add origin ), >> >> This will indeed create commits with the email and name specified, but >> the committer address will not be overridden which is probably confusing. > > Ack. > Maybe setting GIT_COMMITTER_NAME and GIT_COMMITTER_EMAIL via > environment variables would work?
There are options to git, not to git commit. One can use: git commit -c "user.name=Foo" -c "user.email=Bar" ... Which would mean changing DhMakePerl::Command::Packaging to have get_email and get_name (which would then also be used by get_developer). I have attached a new patch that does that. Carnë
From 941e701f86cb754594789aa5231416f4eb8a3a61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carn=C3=AB=20Draug?= <carandraug+...@gmail.com> Date: Tue, 24 Jan 2017 14:15:15 +0000 Subject: [PATCH] DhMakePerl::Command::make: use author and email information for git commits. DhMakePerl::Command::Packaging (get_name, get_email): two new methods to retrieve only email and name because git handles them separate. Closes: #852332 --- Changes | 5 +++++ lib/DhMakePerl/Command/Packaging.pm | 36 +++++++++++++++++++++++------------- lib/DhMakePerl/Command/make.pm | 10 +++++++--- 3 files changed, 35 insertions(+), 16 deletions(-) diff --git a/Changes b/Changes index 9c47553..4c952ec 100644 --- a/Changes +++ b/Changes @@ -1,4 +1,9 @@ 0.93 (201x-xx-xx) + [ Carnë Draug ] + * Use dh-make-perl email and name information for git commits. + (Closes: #852332) + * DhMakePerl::Command::Packaging: add two new methods: get_email + and get_name. 0.92 (2016-09-20) diff --git a/lib/DhMakePerl/Command/Packaging.pm b/lib/DhMakePerl/Command/Packaging.pm index d759b66..e560abd 100644 --- a/lib/DhMakePerl/Command/Packaging.pm +++ b/lib/DhMakePerl/Command/Packaging.pm @@ -119,14 +119,27 @@ sub makefile_pl { return $self->main_file('Makefile.PL'); } -sub get_developer { +sub get_email { my $self = shift; - my $email = $self->cfg->email; - my ( $user, $pwnam, $name, $mailh ); - $user = $ENV{LOGNAME} || $ENV{USER}; - $pwnam = getpwuid($<); + $email ||= ( $ENV{DEBEMAIL} || $ENV{EMAIL} ); + unless ($email) { + my $mailh; + chomp( $mailh = `cat /etc/mailname` ); + $email = $self->get_user . '@' . $mailh; + } + + $email =~ s/^(.*)\s+<(.*)>$/$2/; + return $email; +} + +sub get_name { + my $self = shift; + + my $name; + my $user = $ENV{LOGNAME} || $ENV{USER}; + my $pwnam = getpwuid($<); die "Cannot determine current user\n" unless $pwnam; if ( defined $ENV{DEBFULLNAME} ) { $name = $ENV{DEBFULLNAME}; @@ -137,15 +150,12 @@ sub get_developer { } $user ||= $pwnam->name; $name ||= $user; - $email ||= ( $ENV{DEBEMAIL} || $ENV{EMAIL} ); - unless ($email) { - chomp( $mailh = `cat /etc/mailname` ); - $email = $user . '@' . $mailh; - } - - $email =~ s/^(.*)\s+<(.*)>$/$2/; + return $name; +} - return "$name <$email>"; +sub get_developer { + my $self = shift; + return $self->get_name . " <" . $self->get_email . ">"; } sub fill_maintainer { diff --git a/lib/DhMakePerl/Command/make.pm b/lib/DhMakePerl/Command/make.pm index 31db889..dae325b 100644 --- a/lib/DhMakePerl/Command/make.pm +++ b/lib/DhMakePerl/Command/make.pm @@ -744,11 +744,13 @@ sub git_import_upstream__init_debian { $self->reset_git_environment(); Git::command( 'init', $self->main_dir ); + my @git_config = ( '-c', 'user.name="' . $self->get_name . '"', + '-c', 'user.email="' . $self->get_email . '"'); my $git = Git->repository( $self->main_dir ); $git->command( qw(symbolic-ref HEAD refs/heads/upstream) ); $git->command( 'add', '.' ); - $git->command( 'commit', '-m', + $git->command( 'commit', @git_config, '-m', "Import original source of " . $self->perlname . ' ' . $self->version ); @@ -762,7 +764,7 @@ sub git_import_upstream__init_debian { # debian/ directory from the working tree; git has the history, so I don't # need the debian.bak $git->command( 'rm', '-r', $self->debian_dir ); - $git->command( 'commit', '-m', + $git->command( 'commit', @git_config, '-m', 'Removed debian directory embedded in upstream source' ); } } @@ -776,8 +778,10 @@ sub git_add_debian { $self->reset_git_environment; my $git = Git->repository( $self->main_dir ); + my @git_config = ( '-c', 'user.name="' . $self->get_name . '"', + '-c', 'user.email="' . $self->get_email . '"'); $git->command( 'add', 'debian' ); - $git->command( 'commit', '-m', + $git->command( 'commit', @git_config, '-m', "Initial packaging by dh-make-perl $VERSION" ); $git->command( qw( remote add origin ), -- 2.11.0