chiark / gitweb /
Set up git user.email and user.name from distro access config or DEBEMAIL/DEBFULLNAME...
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 27 Jul 2015 02:51:00 +0000 (03:51 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 27 Jul 2015 02:51:37 +0000 (03:51 +0100)
debian/changelog
dgit
dgit.1

index 5c9b4f9..4111fcd 100644 (file)
@@ -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 d8a49db..867ba3c 100755 (executable)
--- 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 c0c1450..e8f7eb2 100644 (file)
--- 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