X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=dgit.1;h=322bc3b0ab27862663bc302da08a52cae2d71206;hb=5616b78952e95f848c30600f23ca34db0bd4148b;hp=14b7d1ed42e88973a68e841557390e39a867db3c;hpb=08a4cefb989b93dec53d5357e3b40d04340884cc;p=dgit.git diff --git a/dgit.1 b/dgit.1 index 14b7d1ed..322bc3b0 100644 --- a/dgit.1 +++ b/dgit.1 @@ -5,14 +5,14 @@ dgit \- git integration with the Debian archive .SH SYNOPSIS .B dgit [\fIdgit\-opts\fP] \fBclone\fP [\fIdgit\-opts\fP] -\fIpackage\fP [\fIsuite\fP] [\fB./\fP\fIdir|\fB/\fP\fIdir] +\fIpackage\fP [\fIsuite\fP] [\fB./\fP\fIdir|\fB/\fP\fIdir\fR] .br .B dgit [\fIdgit\-opts\fP] \fBfetch\fP|\fBpull\fP [\fIdgit\-opts\fP] [\fIsuite\fP] .br .B dgit -[\fIdgit\-opts\fP] \fBbuild\fP|\fBsbuild\fP +[\fIdgit\-opts\fP] \fBbuild\fP|\fBsbuild\fP|\fBbuild-source\fP [\fIbuild\-opts\fp] .br .B dgit @@ -32,8 +32,13 @@ as .B dgit-repos which lives outside the Debian archive (currently, on Alioth). +The usual workflow is: 1. clone or fetch; 2. make and commit changes +in git as desired; 3. run dgit build, dgit sbuild or dgit +build-source, or generate the source and binary packages for upload +some other way; 4. do pre-upload tests of the proposed upload; 5. run +dgit push. .TP -\fBdgit clone\fR \fIpackage\fP [\fIsuite\fP] [\fB./\fP\fIdir|\fB/\fP\fIdir] +\fBdgit clone\fR \fIpackage\fP [\fIsuite\fP] [\fB./\fP\fIdir|\fB/\fP\fIdir\fR] Consults the archive and dgit-repos to construct the git view of history for .I package @@ -61,7 +66,7 @@ belongs. Consults the archive and git-repos to update the git view of history for a specific suite (and downloads any necessary orig tarballs), and updates the remote tracking branch -.BR remotes/dgit/ \fIsuite\fR. +.BR remotes/dgit/dgit/ \fIsuite\fR. If the current branch is .BI dgit/ suite then dgit fetch defaults to @@ -72,7 +77,7 @@ there. \fBdgit pull\fR [\fIsuite\fP] Does dgit fetch, and then merges the new head of the remote tracking branch -.BI remotes/dgit/ suite +.BI remotes/dgit/dgit/ suite into the current branch. .TP \fBdgit build\fR ... @@ -82,7 +87,22 @@ with some suitable options. Options and argumments after build will be passed on to git-buildpackage. It is not necessary to use dgit build when using dgit; it is OK to use any approach which ensures that the generated source package corresponds to the relevant git -commit. Tagging and signing should be left to dgit push. +commit. + +.B NB +that this function will be changed in the future to use +dpkg-buildpackage directly. + +Tagging, signing and actually uploading should be left to dgit push. +.TP +\fBdgit build-source\fR ... +Builds the source package, and a changes file for a prospective +source-only upload. The output is left in +.IR package \fB_\fR version \fB.dsc\fR +and +.IR package \fB_\fR version \fB_source.changes\fR. + +Tagging, signing and actually uploading should be left to dgit push. .TP \fBdgit sbuild\fR ... Constructs the source package, and uses sbuild to do a binary @@ -92,6 +112,8 @@ to sbuild. Changes files matching .IB package _ version _*.changes in the parent directory will be removed; the output is left in .IR package \fB_\fR version \fB_multi.changes\fR. + +Tagging, signing and actually uploading should be left to dgit push. .TP .B dgit push Does an `upload', pushing the current HEAD to the archive (as a source @@ -114,6 +136,9 @@ dgit quilt-fixup. dgit push always uses the package, suite and version specified in the debian/changelog and the .dsc, which must agree. + +If dgit push fails while uploading, it is fine to simply retry the +dput on the .changes file at your leisure. .TP .B dgit quilt-fixup Looks to see if there is quilt patch metadata left over by dpkg-source @@ -133,7 +158,7 @@ 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 descendant of the state of the archive, as provided by dgit in the remote tracking branch -.BR remotes/dgit/ \fIsuite\fR. +.BR remotes/dgit/dgit/ \fIsuite\fR. If you are lucky the other uploaders have also used dgit and integrated the other relevant git history; if not you can fetch it @@ -168,13 +193,13 @@ to start using dgit. First, do .B dgit fetch (or clone) to obtain a git history representation of what's in the archive and record it in the -.BI remotes/dgit/ suite +.BI remotes/dgit/dgit/ suite 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 -.BR "git merge -s ours remotes/dgit/" \fIsuite\fR; +.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. Then run @@ -281,6 +306,21 @@ Specifies that we should process source package rather than looking in debian/control or debian/changelog. Valid with dgit fetch and dgit pull, only. .TP +.BR --clean=git | -wg +The source tree should be cleaned, before building a source package +with one of the build options, using +.BR "git clean -xdf" . +This will delete all files which are not tracked by git. +.TP +.BR --clean=none | -wn +Do not clean the tree before building a source package. If there are +files which are not in git, a subsequent dgit push will fail. +.TP +.BR --clean=dpkg-source | -wd +Use dpkg-buildpackage to do the build, so that the source package +is cleaned by dpkg-source running the package's clean target. +This is the default. It requires the package's build dependencies. +.TP .BR -N | --new The package may be new in this suite. Without this, dgit will refuse to push. @@ -293,31 +333,68 @@ more output (currently, up to -DD is meaningfully different). Specifies a git configuration option. dgit itself is also controlled by git configuration options. .TP +.RI \fB-v\fR version |\fB-m\fR maintaineraddress +Passed to dpkg-genchanges (eventually). +.TP +.RI \fB--ch:\fR option +Specifies a single additional option to pass, eventually, to +dpkg-genchanges. +.TP .RI \fB--dget=\fR program |\fB--dput=\fR program |... Specifies alternative programs to use instead of .BR dget , .BR dput , .BR debsign , -.BR dpkg-buildpackage +.BR dpkg-source , +.BR dpkg-buildpackage , +.BR dpkg-genchanges , .BR sbuild , or .BR mergechanges . +This applies only when the program is invoked directly by dgit. .TP .RI \fB--dget:\fR option |\fB--dput:\fR option |... Specifies a single additional option to pass to .BR dget , .BR dput , .BR debsign , -.BR dpkg-buildpackage +.BR dpkg-source , +.BR dpkg-buildpackage , +.BR dpkg-genchanges , .BR sbuild , or .BR mergechanges . Can be repeated as necessary. +This applies only when the program is invoked directly by dgit. +Usually, for passing options to dpkg-genchanges, use +.BR --ch: \fIoption\fR. +.TP +.BR -d "\fIdistro\fR | " --distro= \fIdistro\fR +Specifies that the suite to be operated on is part of distro +.IR distro . +This overrides the default value found from the git config option +.BR dgit-suite. \fIsuite\fR .distro . +The only effect is that other configuration variables (used +for accessing the archive and dgit-repos) used are +.BR dgit-distro. \fIdistro\fR .* . + +If your suite is part of a distro that dgit already knows about, you +can use this option to make dgit work even if your dgit doesn't know +about the suite. For example, specifying +.B -ddebian +will work when the suite is an unknown suite in the Debian archive. + +To define a new distro it is necessary to define methods and URLs +for fetching (and, for dgit push, altering) a variety of information both +in the archive and in dgit-repos. How to do this is not yet +documented, and currently the arrangements are unpleasant. See +BUGS. .TP .BI -C changesfile Specifies the .changes file which is to be uploaded. By default dgit push looks for single .changes file in the parent directory whose -filename suggests it is for the right package and version. +filename suggests it is for the right package and version - or, +if there is a _multi.changes file, dgit uses that. .TP .BI --existing-package= package dgit push needs to canonicalise the suite name. But currently @@ -382,6 +459,8 @@ on the dgit command line. .TP .BI dgit-distro. distro .ssh .TP +.BI dgit-distro. distro .keyid +.TP .BR dgit.default. * for each .BR dgit-distro. \fIdistro\fR . *