chiark / gitweb /
When cleaning up after failed clone, stat the to-be-cleaned-up directory before runni...
[dgit.git] / dgit.1
diff --git a/dgit.1 b/dgit.1
index df650d9a1ffc64d538b2b90867d28f58c1250734..926a9c65d300a95f4341c00324cd92fb69a17a55 100644 (file)
--- a/dgit.1
+++ b/dgit.1
@@ -126,7 +126,7 @@ Print a usage summary.
 Constructs the source package, uses
 .B  sbuild
 to do a binary build, and uses mergechanges to merge the source and
-binary changes files.  Options and argumments after sbuild will be
+binary changes files.  Options and arguments after sbuild will be
 passed on to sbuild.  Changes files matching
 .IB package _ version _*.changes
 in the parent directory will be removed; the output is left in
@@ -134,10 +134,10 @@ in the parent directory will be removed; the output is left in
 
 Tagging, signing and actually uploading should be left to dgit push.
 .TP
-\fBdgit git-build\fR ...
+\fBdgit gbp-build\fR ...
 Runs
 .B git-buildpackage
-with some suitable options.  Options and argumments after git-build
+with some suitable options.  Options and arguments after gbp-build
 will be passed on to git-buildpackage.
 
 Tagging, signing and actually uploading should be left to dgit push.
@@ -198,13 +198,27 @@ You will need similar enough versions of dgit on the build-host and
 the invocation host.  The build-host needs gnupg installed, with your
 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
+.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
@@ -243,7 +257,11 @@ servers.
 .BI -k keyid
 Use
 .I keyid
-for signing the tag and the upload.
+for signing the tag and the upload.  The default comes from the
+distro's
+.B keyid
+config setting (see CONFIGURATION, below), or failing that, the
+uploader trailer line in debian/changelog.
 .TP
 .BR --no-sign
 does not sign tags or uploads (meaningful only with push).
@@ -302,8 +320,10 @@ The build-dependencies are not checked (due to
 which violates policy, but may work in practice.
 .TP
 .BR -N " | " --new
-The package may be new in this suite.  Without this, dgit will
-refuse to push.
+The package is or may be new in this suite.  Without this, dgit will
+refuse to push.  It may (for Debian, will) be unable to access the git
+history for any packages which have been newly pushed and have not yet
+been published.
 .TP
 .BR --ignore-dirty
 Do not complain if the working tree does not match your git HEAD.
@@ -370,7 +390,7 @@ fixing up, dgit push will fail.
 .TP
 .BI -D
 Prints debugging information to stderr.  Repeating the option produces
-more output (currently, up to -DDD is meaningfully different).
+more output (currently, up to -DDDD is meaningfully different).
 .TP
 .BI -c name = value
 Specifies a git configuration option, to be used for this run.
@@ -410,6 +430,7 @@ Specifies alternative programs to use instead of
 .BR gpg ,
 .BR ssh ,
 .BR dgit ,
+.BR git ,
 or
 .BR mergechanges .
 
@@ -456,10 +477,19 @@ this applies only when the program is invoked directly by dgit.
 Usually, for passing options to dpkg-genchanges, you should use
 .BR --ch: \fIoption\fR.
 
+Specifying --git not effective for some lower-level read-only git
+operations performed by dgit, and also not when git is invoked by
+another program run by dgit.
+
 See notes above regarding ssh and dgit.
 
 NB that --gpg:option is not supported (because debsign does not
-have that facility).  But see -k.
+have that facility).
+But see
+.B -k
+and the
+.B keyid
+distro config setting.
 .TP
 .BR -d "\fIdistro\fR | " --distro= \fIdistro\fR
 Specifies that the suite to be operated on is part of distro
@@ -499,7 +529,7 @@ default, in
 .BI --build-products-dir= directory
 Specifies where to find the built files to be uploaded.
 By default, dgit looks in the parent directory
-.BR .. ).
+.RB ( .. ).
 .TP
 .BI --existing-package= package
 dgit push needs to canonicalise the suite name.  Sometimes, dgit
@@ -530,12 +560,14 @@ It is always possible with dgit to clone or fetch a package, make
 changes in git (using git-commit) on the suite branch
 .RB ( "git checkout dgit/" \fIsuite\fR)
 and then dgit push.  You can use whatever gitish techniques you like
-to construct the commit to push; the only requirement is that it is a
+to construct the commits to push;
+the only requirement is that what you push is a
 descendant of the state of the archive, as provided by dgit in the
 remote tracking branch
 .BR remotes/dgit/dgit/ \fIsuite\fR.
 
-If you are using dgit to do an NMU, and don't know about the
+If you are using dgit to do an NMU (in Debian),
+and don't know about the
 maintainers' preferred packaging workflows, you should make your
 changes as a linear series of (logicially separated) commits on top of
 what's already in the archive.
@@ -564,7 +596,7 @@ branch
 and merge that other commit
 .RB ( "git merge debian/" \fIversion\fR).
 Hopefully this merge will be trivial because the two trees should
-be the same.  The resulting branch head can be merged into your
+be very similar.  The resulting branch head can be merged into your
 working branches
 .RB ( "git checkout master && git merge dgit/" \fIsuite\fR).
 
@@ -578,7 +610,7 @@ tracking branch.  Then somehow, using your other git history
 plus appropriate diffs and cherry picks from the dgit remote tracking
 branch, construct a git commit whose tree corresponds to the tree to use for the
 next upload.  If that commit-to-be-uploaded is not a descendant of the
-dig remote tracking branch, check it out and say
+dgit remote tracking branch, check it out and say
 .BR "git merge -s ours remotes/dgit/dgit/" \fIsuite\fR;
 that tells git that we are deliberately throwing away any differences
 between what's in the archive and what you intend to upload.
@@ -598,19 +630,29 @@ Settings likely to be useful for an end user include:
 Specifies the distro for a suite.  dgit keys off the suite name (which
 appears in changelogs etc.), and uses that to determine the distro
 which is involved.  The config used is thereafter that for the distro.
-it then looks
 .TP
 .BI dgit.default.distro " distro"
 The default distro for an unknown suite.
 .TP
+.BR dgit.default. *
+for each
+.BR dgit-distro. \fIdistro\fR . *,
+the default value used if there is no distro-specific setting.
+.TP
+.BR dgit-distro. \fIdistro\fR .clean-mode
+One of the values for the command line --clean= option; used if
+--clean is not specified.
+.TP
 .BR dgit-distro. \fIdistro\fR .readonly " " auto | a " | " true | t | y | 1 " | " false | f | n | 0
 Whether you have push access to the distro.
 For Debian, it is OK to use auto, which uses readonly mode if you are
-not pushing right now,
-but setting this to false will avoid relying on the mirror of the dgit
+not pushing right now;
+but, setting this to false will avoid relying on the mirror of the dgit
 git repository server.
 .TP
 .BI dgit-distro. distro .keyid
+See also
+.BR -k .
 .TP
 .BI dgit-distro. distro .mirror " url"
 .TP
@@ -619,6 +661,37 @@ Not relevant for Debian.
 .TP
 .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
+setup-mergechangelogs, which does it anyway.
+.TP
+.BI dgit-distro. distro .cmd- cmd
+Program to use instead of
+.IR cmd .
+Works like
+.BR -- \fIcmd\fR = "... ."
+.TP
+.BI dgit-distro. distro .opts- cmd
+Extra options to pass to
+.IR cmd .
+Works like
+.BR -- \fIcmd\fR : "... ."
+To pass several options, configure multiple values in git config
+(with git config --add).  The options for
+.BI dgit.default.opts- cmd
+.BI dgit-distro. distro /push.opts- cmd
+and are all used, followed by options from dgit's command line.
 .SH ACCESS CONFIGURATION
 There are many other settings which specify how a particular distro's
 services (archive and git) are provided.  These should not normally be
@@ -662,10 +735,6 @@ or when pushing and
 .BR dgit-distro. \fIdistro\fR . ( git | sshpsql ) - ( user | host | user-force )
 .TP
 .BI dgit-distro. distro .backports-quirk
-.TP
-.BR dgit.default. *
-for each
-.BR dgit-distro. \fIdistro\fR . *
 .SH ENVIRONMENT VARIABLES
 .TP
 .BR DGIT_SSH ", " GIT_SSH
@@ -677,6 +746,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
@@ -712,8 +785,6 @@ There should be an option which arranges for the `3.0 (quilt)'
 autocommit(s) to not appear on your HEAD, but instead only in the
 remote tracking suite branch.
 
-The option parser requires values to be cuddled to the option name.
-
 --dry-run does not always work properly, as not doing some of the git
 fetches may result in subsequent actions being different.  Doing a
 non-dry-run dgit fetch first will help.
@@ -726,4 +797,4 @@ non-dry-run dgit fetch first will help.
 \fBgit-buildpackage\fP(1),
 \fBdpkg-buildpackage\fP(1),
 .br
-https://wiki.debian.org/Alioth
+https://browse.dgit.debian.org/