From: Ian Jackson Date: Mon, 27 Jul 2015 02:51:00 +0000 (+0100) Subject: Set up git user.email and user.name from distro access config or DEBEMAIL/DEBFULLNAME... X-Git-Tag: debian/1.1~25 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=commitdiff_plain;h=fc328b35ddc6e37c183383d5f8c6bb973dd0cc9b Set up git user.email and user.name from distro access config or DEBEMAIL/DEBFULLNAME. Closes:#793410. --- diff --git a/debian/changelog b/debian/changelog index 5c9b4f90..4111fcdc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -45,6 +45,8 @@ dgit (1.1~~) unstable; urgency=low * Make configuration able to prevent dpkg-mergechangelogs setup. * Provide dgit setup-new-tree (like dpkg-setup-mergechangelogs but only does it if not disabled in config). + * Set up git user.email and user.name from distro access config + or DEBEMAIL/DEBFULLNAME. Closes:#793410. -- diff --git a/dgit b/dgit index d8a49dbc..867ba3c5 100755 --- a/dgit +++ b/dgit @@ -1668,8 +1668,24 @@ sub setup_mergechangelogs (;$) { rename "$attrs.new", "$attrs" or die "$attrs: $!"; } +sub setup_useremail (;$) { + my ($always) = @_; + return unless $always || access_cfg_bool(1, 'setup-useremail'); + + my $setup = sub { + my ($k, $envvar) = @_; + my $v = access_cfg("user-$k", 'RETURN-UNDEF') // $ENV{$envvar}; + return unless defined $v; + set_local_git_config "user.$k", $v; + }; + + $setup->('email', 'DEBEMAIL'); + $setup->('name', 'DEBFULLNAME'); +} + sub setup_new_tree () { setup_mergechangelogs(); + setup_useremail(); } sub clone ($) { @@ -3031,6 +3047,11 @@ sub cmd_setup_mergechangelogs { setup_mergechangelogs(1); } +sub cmd_setup_useremail { + badusage "no arguments allowed to dgit setup-mergechangelogs" if @ARGV; + setup_useremail(1); +} + sub cmd_setup_new_tree { badusage "no arguments allowed to dgit setup-tree" if @ARGV; setup_new_tree(); diff --git a/dgit.1 b/dgit.1 index c0c14504..e8f7eb23 100644 --- a/dgit.1 +++ b/dgit.1 @@ -200,16 +200,25 @@ public key in its keyring (but not your private key, obviously). .TP .B dgit setup-new-tree Configure the current working tree the way that dgit clone would have -set it up. Like running dgit setup-mergechangelogs (but only does it -if dgit is configured to do it automatically). +set it up. Like running +.B dgit setup-useremail +and +.B setup-mergechangelogs +(but only does each thing if dgit is configured to do it automatically). +You can use these in any git repository, not just ones used with +the other dgit operations. +.TP +.B dgit setup-useremail +Set the working tree's user.name and user.email from the +distro-specific dgit configuration +.RB ( dgit-distro. \fIdistro\fR .user-name " and " .user-email ), +or DEBFULLNAME or DEBEMAIL. .TP .B dgit setup-mergechangelogs Configures a git merge helper for the file .B debian/changelog which uses .BR dpkg-mergechangelogs . -You can use this in any git repository, not just ones used with -the other dgit operations. .TP .B dgit quilt-fixup `3.0 (quilt)' format source packages need changes representing not @@ -639,6 +648,15 @@ Not relevant for Debian. .BI dgit-distro. distro .upload-host Might be useful if you have an intermediate queue server. .TP +.BI dgit-distro. distro .user-name " " dgit-distro. distro .user-email +Values to configure for user.name and user.email in new git trees. If +not specified, the DEBFULLNAME and DEBEMAIL environment variables are +used, respectively. Only used if .setup-usermail is not disabled. +.TP +.BI dgit-distro. distro .setup-useremail +Whether to set user.name and user.email in new git trees. +True by default. Ignored for dgit setup-setup-useremail, which does it anyway. +.TP .BI dgit-distro. distro .setup-mergechangelogs Whether to setup a merge driver which uses dpkg-mergechangelogs for debian/changelog. True by default. Ignored for dgit @@ -718,6 +736,10 @@ interprets it the same way as git does. See also the --ssh= and --ssh: options. .TP +.BR DEBEMAIL ", " DEBFULLNAME +Default git user.email and user.name for new trees. See +.BR "dgit setup-new-tree" . +.TP .BR gpg ", " dpkg- "..., " debsign ", " git ", " curl ", " dput ", " LWP::UserAgent and other subprograms and modules used by dgit are affected by various environment variables. Consult the documentaton for those programs