2 .TH dgit 1 "" "Debian Project" "dgit"
4 dgit \- git integration with the Debian archive
8 [\fIdgit\-opts\fP] \fBclone\fP [\fIdgit\-opts\fP]
9 \fIpackage\fP [\fIsuite\fP] [\fB./\fP\fIdir|\fB/\fP\fIdir\fR]
12 [\fIdgit\-opts\fP] \fBfetch\fP|\fBpull\fP [\fIdgit\-opts\fP]
16 [\fIdgit\-opts\fP] \fBbuild\fP|\fBsbuild\fP|\fBbuild-source\fP
20 [\fIdgit\-opts\fP] \fBpush\fP [\fIdgit\-opts\fP]
24 [\fIdgit\-opts\fP] \fBrpush\fR \fIbuild-host\fR\fB:\fR\fIbuild-dir\fR
28 [\fIdgit\-opts\fP] \fIaction\fR ...
31 allows you to treat the Debian archive as if it were a git
34 it allows Debian to publish the source of its packages
35 as git branches, in a format which is directly useable
38 This is the command line reference.
39 Please read the tutorial(s):
42 dgit-user(7) for users: editing, building and sharing packages
43 dgit-nmu-simple(7) for DDs: doing a straightforward NMU
44 dgit-maint-native(7) for maintainers of Debian-native packages
45 dgit-maint-merge(7) for maintainers who want a pure git workflow
46 dgit-maint-gbp(7) for maintainers already using git-buildpackage
47 dgit-sponsorship(7) for sponsors and sponsored contributors
50 See \fBdgit(7)\fP for detailed information about the data
52 common problems likely to arise with certain kinds of package,
56 \fBdgit clone\fR \fIpackage\fP [\fIsuite\fP] [\fB./\fP\fIdir|\fB/\fP\fIdir\fR]
57 Consults the archive and dgit-repos to construct the git view of
64 in a new directory (named
67 also, downloads any necessary orig tarballs.
69 The suite's git tip is
70 left on the local branch
72 ready for work, and on the corresponding dgit remote tracking branch.
75 remote will be set up to point to the package's dgit-repos tree
76 for the distro to which
81 may be a combination of several underlying suites in the form
82 .IR mainsuite \fB,\fR subsuite ...;
83 see COMBINED SUITES in dgit(7).
85 For your convenience, the
87 remote will be set up from the package's Vcs-Git field, if there is
88 one - but note that in the general case the history found there may be
89 different to or even disjoint from dgit's view.
91 \fBdgit fetch\fR [\fIsuite\fP]
92 Consults the archive and git-repos to update the git view of
93 history for a specific suite (and downloads any necessary orig
94 tarballs), and updates the remote tracking branch
95 .BR remotes/dgit/dgit/ \fIsuite\fR.
96 If the current branch is
98 then dgit fetch defaults to
100 otherwise it parses debian/changelog and uses the suite specified
102 suite may be a combined suite, as for clone.
104 \fBdgit pull\fR [\fIsuite\fP]
105 Does dgit fetch, and then merges the new head of the remote tracking
107 .BI remotes/dgit/dgit/ suite
108 into the current branch.
113 with some suitable options. Options and arguments after build
114 will be passed on to dpkg-buildpackage. It is not necessary to use
115 dgit build when using dgit; it is OK to use any approach which ensures
116 that the generated source package corresponds to the relevant git
119 Tagging, signing and actually uploading should be left to dgit push.
121 \fBdgit build-source\fR ...
122 Builds the source package, and a changes file for a prospective
123 source-only upload, using
125 The output is left in
126 .IR package \fB_\fR version \fB.dsc\fR
128 .IR package \fB_\fR version \fB_source.changes\fR.
130 Tagging, signing and actually uploading should be left to dgit push.
133 Cleans the current working tree (according to the --clean= option in
137 Print a usage summary.
139 \fBdgit sbuild\fR ...
140 Constructs the source package, uses
142 to do a binary build, and uses mergechanges to merge the source and
143 binary changes files. Options and arguments after sbuild will be
145 The output is left in
146 .IR package \fB_\fR version \fB_multi.changes\fR.
149 sbuild does not build arch-independent packages.
150 You probably want to pass -A, to request those.
152 Tagging, signing and actually uploading should be left to dgit push.
154 \fBdgit gbp-build\fR ...
157 with some suitable options. Options and arguments after gbp-build
158 will be passed on to git-buildpackage.
160 By default this uses \-\-quilt=gbp, so HEAD should be a
161 git-buildpackage style branch, not a patches-applied branch.
163 Tagging, signing and actually uploading should be left to dgit push.
165 \fBdgit push\fR [\fIsuite\fP]
166 Does an `upload', pushing the current HEAD to the archive (as a source
167 package) and to dgit-repos (as git commits). The package must already
168 have been built ready for upload, with the .dsc and .changes
169 left in the parent directory. It is normally best to do the build
170 with dgit too (eg with dgit sbuild): some existing build tools pass
171 unhelpful options to dpkg-source et al by default, which can result in
172 the built source package not being identical to the git tree.
174 In more detail: dgit push checks that the current HEAD corresponds to
175 the .dsc. It then pushes the HEAD to the suite's dgit-repos branch,
176 adjusts the .changes to include any .origs which the archive lacks
177 and exclude .origs which the archive has
178 (so -sa and -sd are not needed when building for dgit push),
179 makes a signed git tag, edits the .dsc to contain the dgit metadata
180 field, runs debsign to sign the upload (.dsc and .changes), pushes the
181 signed tag, and finally uses dput to upload the .changes to the
184 dgit push always uses the package, suite and version specified in the
185 debian/changelog and the .dsc, which must agree. If the command line
186 specifies a suite then that must match too.
188 \fBdgit rpush\fR \fIbuild-host\fR\fB:\fR\fIbuild-dir\fR [\fIpush args...\fR]
189 Pushes the contents of the specified directory on a remote machine.
190 This is like running dgit push on build-host with build-dir as the
191 current directory; however, signing operations are done on the
192 invoking host. This allows you to do a push when the system which has
193 the source code and the build outputs has no access to the key:
197 1. Clone on build host (dgit clone)
198 2. Edit code on build host (edit, git commit)
199 3. Build package on build host (dgit build)
200 4. Test package on build host or elsewhere (dpkg -i, test)
201 5. Upload by invoking dgit rpush on host with your GPG key.
204 However, the build-host must be able to ssh to the dgit repos. If
205 this is not already the case, you must organise it separately, for
206 example by the use of ssh agent forwarding.
208 The remaining arguments are treated just as dgit push would handle
211 build-host and build\-dir can be passed as separate
212 arguments; this is assumed to be the case if the first argument
213 contains no : (except perhaps one in [ ], to support IPv6 address
216 You will need similar enough versions of dgit on the build-host and
217 the invocation host. The build-host needs gnupg installed, with your
218 public key in its keyring (but not your private key, obviously).
220 .B dgit setup-new-tree
221 Configure the current working tree the way that dgit clone would have
222 set it up. Like running
223 .BR "dgit setup-useremail" ,
224 .B setup-mergechangelogs
226 .B setup-gitattributes
227 (but only does each thing if dgit is configured to do it automatically).
228 You can use these in any git repository, not just ones used with
229 the other dgit operations.
231 .B dgit setup-useremail
232 Set the working tree's user.name and user.email from the
233 distro-specific dgit configuration
234 .RB ( dgit-distro. \fIdistro\fR .user-name " and " .user-email ),
235 or DEBFULLNAME or DEBEMAIL.
237 .B dgit setup-mergechangelogs
238 Configures a git merge helper for the file
241 .BR dpkg-mergechangelogs .
243 .B dgit setup-gitattributes
244 Set up the working tree's
245 .B .git/info/attributes
246 to disable all transforming attributes for all files.
247 This is done by defining a macro attribute
256 (If there is already a macro attribute line
257 .B [attr]dgit-defuse-attrs
258 in .git/info/attributes
259 (whatever its effects),
260 this operation does nothing further.
261 This fact can be used to defeat or partially defeat
262 dgit setup-gitattributes
264 dgit setup-new-tree.)
267 `3.0 (quilt)' format source packages need changes representing not
268 only in-tree but also as patches in debian/patches. dgit quilt-fixup
269 checks whether this has been done; if not, dgit will make appropriate
270 patches in debian/patches and also commit the resulting changes to
273 This is normally done automatically by dgit build and dgit push.
275 dgit will try to turn each relevant commit in your git history into a
276 new quilt patch. dgit cannot convert nontrivial merges, or certain
277 other kinds of more exotic history. If dgit can't find a suitable
278 linearisation of your history, by default it will fail, but you can
279 ask it to generate a single squashed patch instead.
281 \fBdgit import-dsc\fR [\fIsub-options\fR] \fI../path/to/.dsc\fR [\fB+\fR|\fB..\fR]branch
282 Import a Debian-format source package,
283 specified by its .dsc,
285 the way dgit fetch would do.
287 This does about half the work of dgit fetch:
288 it will convert the .dsc into a new, orphan git branch.
289 Since dgit has no access to a corresponding source package archive
290 or knowledge of the history
291 it does not consider whether this version is newer
292 than any previous import
293 or corresponding git branches;
294 and it therefore does not
295 make a pseudomerge to bind the import
296 into any existing git history.
298 Because a .dsc can contain a Dgit field naming a git commit
299 (which you might not have),
300 and specifying where to find that commit
301 (and any history rewrite table),
302 import-dsc might need online access.
304 (or dgit's efforts to find the commit fail),
305 consider --no-chase-dsc-distro
306 or --force-import-dsc-with-dgit-field.
308 There is only only sub-option:
310 .B --require-valid-signature
311 causes dgit to insist that the signature on the .dsc is valid
312 (using the same criteria as dpkg-source -x).
313 Otherwise, dgit tries to verify the signature but
314 the outcome is reported only as messages to stderr.
320 then if it already exists, it will be simply ovewritten,
321 no matter its existing contents.
326 then if it already exists
327 and dgit actually imports the dsc
328 (rather than simply reading the git commit out of the Dgit field),
329 dgit will make a pseudomerge
330 so that the result is necessarily fast forward
331 from the existing branch.
332 Otherwise, if branch already exists,
333 dgit will stop with an error message.
337 does not start with refs/, refs/heads/ is prepended.
340 Prints version information and exits.
342 .BI "dgit clone-dgit-repos-server" " destdir"
343 Tries to fetch a copy of the source code for the dgit-repos-server,
344 as actually being used on the dgit git server, as a git tree.
346 .BI "dgit print-dgit-repos-server-source-url"
347 Prints the url used by dgit clone-dgit-repos-server.
348 This is hopefully suitable for use as a git remote url.
349 It may not be useable in a browser.
351 .BI "dgit print-dpkg-source-ignores"
352 Prints the -i and -I arguments which must be passed to dpkg-souce
353 to cause it to exclude exactly the .git diredcory
355 The separate arguments are unquoted, separated by spaces,
356 and do not contain spaces.
359 .BR --dry-run " | " -n
360 Go through the motions, fetching all information needed, but do not
361 actually update the output(s). For push, dgit does
362 the required checks and leaves the new .dsc in a temporary file,
363 but does not sign, tag, push or upload.
365 .BR --damp-run " | " -L
366 Go through many more of the motions: do everything that doesn't
367 involve either signing things, or making changes on the public
373 for signing the tag and the upload. The default comes from the
376 config setting (see CONFIGURATION, below), or failing that, the
377 uploader trailer line in debian/changelog.
380 does not sign tags or uploads (meaningful only with push).
384 Specifies that we should process source package
386 rather than looking in debian/control or debian/changelog.
387 Valid with dgit fetch and dgit pull, only.
389 .BR --clean=git " | " -wg
392 to clean the working tree,
393 rather than running the package's rules clean target.
395 This will delete all files which are not tracked by git.
396 (Including any files you forgot to git add.)
399 options other than dpkg-source
400 are useful when the package's clean target is troublesome, or
401 to avoid needing the build-dependencies.
403 .BR --clean=git-ff " | " -wgf
405 .BR "git clean -xdff"
406 to clean the working tree.
409 but it also removes any subdirectories containing different git
410 trees (which only unusual packages are likely to create).
412 .BR --clean=check " | " -wc
413 Merely check that the tree is clean (does not contain uncommitted
415 Avoids running rules clean,
416 and can avoid needing the build-dependencies.
418 .BR --clean=none " | " -wn
419 Do not clean the tree, nor check that it is clean.
420 Avoids running rules clean,
421 and can avoid needing the build-dependencies.
423 files which are not in git, or if the build creates such files, a
424 subsequent dgit push will fail.
426 .BR --clean=dpkg-source " | " -wd
427 Use dpkg-buildpackage to do the clean, so that the source package
428 is cleaned by dpkg-source running the package's clean target.
430 Requires the package's build dependencies.
432 .BR --clean=dpkg-source-d " | " -wdd
434 .B dpkg-buildpackage -d
436 so that the source package
437 is cleaned by dpkg-source running the package's clean target.
438 The build-dependencies are not checked (due to
440 which violates policy, but may work in practice.
443 The package is or may be new in this suite. Without this, dgit will
444 refuse to push. It may (for Debian, will) be unable to access the git
445 history for any packages which have been newly pushed and have not yet
449 Do not complain if the working tree does not match your git HEAD.
450 This can be useful with build, if you plan to commit later. (dgit
451 push will still ensure that the .dsc you upload and the git tree
452 you push are identical, so this option won't make broken pushes.)
454 .BR --overwrite [=\fIprevious-version\fR]
455 Declare that even though your git branch is not a descendant
456 of the version in the archive
457 according to the revision history,
458 it really does contain
459 all the (wanted) changes from that version.
461 This option is useful if you are the maintainer, and you have
462 incorporated NMU changes into your own git workflow in a way that
463 doesn't make your branch a fast forward from the NMU.
466 ought to be the version currently in the archive. If
469 specified, dgit will check that the version in the archive is
470 mentioned in your debian/changelog.
471 (This will avoid losing
472 changes unless someone committed to git a finalised changelog
473 entry, and then made later changes to that version.)
475 dgit push --overwrite
477 pseudo-merge (that is, something that looks like the result
478 of git merge -s ours) to stitch the archive's version into your own
479 git history, so that your push is a fast forward from the archive.
482 .BR gbp ", " dpm " or " unpatched ,
483 implying a split between the dgit view and the
484 maintainer view, the pseudo-merge will appear only in the dgit view.)
486 .BR --delayed =\fIdays\fR
487 Upload to a DELAYED queue.
490 If the maintainer responds by cancelling
491 your upload from the queue,
492 and does not make an upload of their own,
493 this will not rewind the git branch on the dgit git server.
494 Other dgit users will then see your push
495 (with a warning message from dgit)
496 even though the maintainer wanted to abolish it.
497 Such users might unwittingly reintroduce your changes.
499 If this situation arises,
500 someone should make a suitable dgit push
501 to update the contents of dgit-repos
502 to a version without the controversial changes.
504 .BR --no-chase-dsc-distro
505 Tells dgit not to look online
506 for additional git repositories
507 containing information about a particular .dsc being imported.
508 Chasing is the default.
511 (such as fetch and pull),
513 means dgit will access only the git server
514 for the distro you are directly working with,
515 even if the .dsc was copied verbatim from another distro.
518 means dgit will work completely offline.
520 Disabling chasing can be hazardous:
521 if the .dsc names a git commit which has been rewritten
522 by those in charge of the distro,
523 this option may prevent that rewrite from being effective.
526 dgit fails to find necessary git commits.
528 .BR --dgit-view-save= \fIbranch\fR|\fIref\fR
529 Specifies that when a split view quilt mode is in operation,
531 (or looks up in its cache)
532 a dgit view corresponding to your HEAD,
533 the dgit view will be left in
535 The specified ref is unconditionally overwritten,
536 so don't specify a branch you want to keep.
538 This option is effective only with the following operations:
539 quilt-fixup; push; all builds.
540 And it is only effective with
545 If ref does not start with refs/
546 it is taken to to be a branch -
547 i.e. refs/heads/ is prepended.
549 .BI --deliberately- something
550 Declare that you are deliberately doing
552 This can be used to override safety catches, including safety catches
553 which relate to distro-specific policies.
554 The use of --deliberately is declared and published in the signed tags
555 generated for you by dgit,
556 so that the archive software can give effect to your intent,
558 for the benefit humans looking at the history.
561 understood in the context of Debian are discussed below:
563 .BR --deliberately-not-fast-forward
564 Declare that you are deliberately rewinding history. When pushing to
565 Debian, use this when you are making a renewed upload of an entirely
566 new source package whose previous version was not accepted for release
567 from NEW because of problems with copyright or redistributibility.
569 In split view quilt modes,
570 this also prevents the construction by dgit of a pseudomerge
571 to make the dgit view fast forwarding.
573 --overwrite (which creates a suitable pseudomerge)
575 --deliberately-not-fast-forward
576 (which suppresses the pseudomerge and the fast forward checks)
578 --overwrite is usually better.
580 .BR --deliberately-include-questionable-history
581 Declare that you are deliberately including, in the git history of
582 your current push, history which contains a previously-submitted
583 version of this package which was not approved (or has not yet been
584 approved) by the ftpmasters. When pushing to Debian, only use this
585 option after verifying that: none of the rejected-from-NEW (or
586 never-accepted) versions in the git history of your current push, were
587 rejected by ftpmaster for copyright or redistributability reasons.
589 .BR --deliberately-fresh-repo
590 Declare that you are deliberately rewinding history and want to
591 throw away the existing repo. Not relevant when pushing to Debian,
592 as the Debian server will do this automatically when necessary.
595 When fixing up source format `3.0 (quilt)' metadata, insist on
596 generating a linear patch stack: one new patch for each relevant
598 If such a stack cannot be generated, fail.
599 This is the default for Debian.
601 HEAD should be a series of plain commits
602 (not touching debian/patches/),
604 with as ancestor a patches-applied branch.
607 When fixing up source format `3.0 (quilt)' metadata, prefer to
608 generate a linear patch stack
609 (as with --quilt=auto)
610 but if that doesn't seem possible,
611 try to generate a single squashed patch for all the changes made in git
612 (as with --quilt=smash).
613 This is not a good idea for an NMU in Debian.
616 When fixing up source format `3.0 (quilt)' metadata,
617 generate a single additional patch for all the changes made in git.
618 This is not a good idea for an NMU in Debian.
620 (If HEAD has any in-tree patches already, they must apply cleanly.
621 This will be the case for any trees produced by dgit fetch or clone;
622 if you do not change the upstream version
623 nor make changes in debian/patches,
624 it will remain true.)
627 Check whether source format `3.0 (quilt)' metadata would need fixing
628 up, but, if it does, fail. You must then fix the metadata yourself
629 somehow before pushing. (NB that dpkg-source --commit will not work
630 because the dgit git tree does not have a
634 .BR --quilt=nocheck " | " --no-quilt-fixup
635 Do not check whether up source format `3.0 (quilt)' metadata needs
636 fixing up. If you use this option and the metadata did in fact need
637 fixing up, dgit push will fail.
639 .BR -- [ quilt= ] gbp " | " -- [ quilt= ] dpm " | " --quilt=unapplied
640 Tell dgit that you are using a nearly-dgit-compatible git branch,
642 .BR "maintainer view" ,
644 do not want your branch changed by dgit.
649 is for use with git-buildpackage.
650 Your HEAD is expected to be
651 a patches-unapplied git branch, except that it might contain changes
652 to upstream .gitignore files. This is the default for dgit gbp-build.
657 is for use with git-dpm.
658 Your HEAD is expected to be
659 a patches-applied git branch,
660 except that it might contain changes to upstream .gitignore files.
663 specifies that your HEAD is a patches-unapplied git branch (and
664 that any changes to upstream .gitignore files are represented as
665 patches in debian/patches).
667 With --quilt=gbp|dpm|unapplied,
668 dgit push (or precursors like quilt-fixup and build) will automatically
669 generate a conversion of your git branch into the right form.
670 dgit push will push the
671 dgit-compatible form (the
673 to the dgit git server.
674 The dgit view will be visible to you
675 in the dgit remote tracking branches, but your own branch will
677 dgit push will create a tag
679 for the maintainer view, and the dgit tag
680 .BI archive/debian/ version
682 dgit quilt-fixup will merely do some checks,
683 and cache the maintainer view.
685 .B If you have a branch like this it is essential to specify the appropriate --quilt= option!
686 This is because it is not always possible to tell: a patches-unapplied
687 git branch of a package with one patch, for example, looks very like
688 a patches-applied branch where the user has used git revert to
689 undo the patch, expecting to actually revert it.
690 However, if you fail to specify the right \-\-quilt option,
691 and you aren't too lucky, dgit will notice the problem and stop,
694 .BR -d "\fIdistro\fR | " --distro= \fIdistro\fR
695 Specifies that the suite to be operated on is part of distro
697 This overrides the default value found from the git config option
698 .BR dgit-suite. \fIsuite\fR .distro .
699 The only effect is that other configuration variables (used
700 for accessing the archive and dgit-repos) used are
701 .BR dgit-distro. \fIdistro\fR .* .
703 If your suite is part of a distro that dgit already knows about, you
704 can use this option to make dgit work even if your dgit doesn't know
705 about the suite. For example, specifying
707 will work when the suite is an unknown suite in the Debian archive.
709 To define a new distro it is necessary to define methods and URLs
710 for fetching (and, for dgit push, altering) a variety of information both
711 in the archive and in dgit-repos.
712 How to set this up is not yet documented.
715 Specifies the .changes file which is to be uploaded. By default
716 dgit push looks for single .changes file in the parent directory whose
717 filename suggests it is for the right package and version.
721 pathname contains slashes, the directory part is also used as
723 .BR --build-products-dir ;
724 otherwise, the changes file is expected in that directory (by
729 When doing a build, delete any changes files matching
730 .IB package _ version _*.changes
731 before starting. This ensures that
732 dgit push (and dgit sbuild) will be able to unambigously
733 identify the relevant changes files from the most recent build, even
734 if there have been previous builds with different tools or options.
735 The default is not to remove, but
736 .B \-\-no-rm-old-changes
737 can be used to override a previous \-\-rm-old-changes
738 or the .rm-old-changes configuration setting.
740 .BI --build-products-dir= directory
741 Specifies where to find the built files to be uploaded.
742 By default, dgit looks in the parent directory
746 Do not delete the destination directory if clone fails.
749 Generates a DEP-14 tag (eg
750 .BR debian/ \fIversion\fR)
751 as well as a dgit tag (eg
752 .BR archive/debian/ \fIversion\fR)
753 where possible. This is the default.
756 Do not generate a DEP-14 tag, except in split quilt view mode.
757 (On servers where only the old tag format is supported,
758 the dgit tag will have the DEP-14 name.
759 This option does not prevent that.)
761 .BI --dep14tag-always
762 Insist on generating a DEP-14 tag
763 as well as a dgit tag.
764 If the server does not support that, dgit push will fail.
767 Prints debugging information to stderr. Repeating the option produces
768 more output (currently, up to -DDDD is meaningfully different).
771 Specifies a git configuration option, to be used for this run.
772 dgit itself is also controlled by git configuration options.
774 .RI \fB-v\fR version "|\fB_\fR | " \fB--since-version=\fR version |\fB_\fR
777 option to pass to dpkg-genchanges, during builds. Changes (from
778 debian/changelog) since this version will be included in the built
779 changes file, and hence in the upload. If this option is not
780 specified, dgit will query the archive and use the latest version
781 uploaded to the intended suite.
785 inhibits this, so that no -v option will be passed to dpkg-genchanges
786 (and as a result, only the last stanza from debian/changelog will
787 be used for the build and upload).
789 .RI \fB-m\fR maintaineraddress
790 Passed to dpkg-genchanges (eventually).
792 .RI \fB--ch:\fR option
793 Specifies a single additional option to pass, eventually, to
796 Options which are safe to pass include
800 although these should never be necessary with Debian since dgit
801 automatically calculates whether .origs need to be uploaded.)
803 For other options the caveat below applies.
805 .RI \fB--curl:\fR option " | \fB--dput:\fR" option " |..."
806 Specifies a single additional option to pass to
811 .BR dpkg-buildpackage ,
812 .BR dpkg-genchanges ,
822 Can be repeated as necessary.
824 Use of this ability should not normally be necessary.
825 It is provided for working around bugs,
826 or other unusual situations.
827 If you use these options,
828 you may violate dgit's assumptions
829 about the behaviour of its subprograms
832 For dpkg-buildpackage, dpkg-genchanges, mergechanges and sbuild,
833 the option applies only when the program is invoked directly by dgit.
834 Usually, for passing options to dpkg-genchanges, you should use
835 .BR --ch: \fIoption\fR.
837 Specifying --git is not effective for some lower-level read-only git
838 operations performed by dgit, and also not when git is invoked by
839 another program run by dgit.
841 See notes below regarding ssh and dgit.
843 NB that --gpg:option is not supported (because debsign does not
849 distro config setting.
851 .RI \fB--curl=\fR program " | \fB--dput=\fR" program " |..."
852 Specifies alternative programs to use instead of
857 .BR dpkg-buildpackage ,
858 .BR dpkg-genchanges ,
872 .BR dpkg-buildpackage ,
873 .BR dpkg-genchanges ,
877 this applies only when the program is invoked directly by dgit.
881 specifies the command to run on the remote host when dgit
882 rpush needs to invoke a remote copy of itself. (dgit also reinvokes
883 itself as the EDITOR for dpkg-source --commit; this is done using
884 argv[0], and is not affected by --dgit=).
888 is used instead of gbp build or git-buildpackage. (The default is
889 the latter unless the former exists on PATH.)
892 is used instead of gbp pq.
894 unusually, the specified value is split on whitespace
895 to produce a command and possibly some options and/or arguments.
899 the default value is taken from the
903 environment variables, if set (see below). And, for ssh, when accessing the
904 archive and dgit-repos, this command line setting is overridden by the
906 .BI dgit-distro. distro .ssh
909 (which can in turn be overridden with -c). Also, when dgit is using
910 git to access dgit-repos, only git's idea of what ssh to use (eg,
914 .BI --existing-package= package
915 dgit push needs to canonicalise the suite name. Sometimes, dgit
916 lacks a way to ask the archive to do this without knowing the
917 name of an existing package. Without --new we can just use the
918 package we are trying to push. But with --new that will not work, so
921 or use the value of this option. This option is not needed with the
922 default mechanisms for accessing the archive.
925 Print a usage summary.
927 .BI --initiator-tempdir= directory
928 dgit rpush uses a temporary directory on the invoking (signing) host.
929 This option causes dgit to use
931 instead. Furthermore, the specified directory will be emptied,
932 removed and recreated before dgit starts, rather than removed
933 after dgit finishes. The directory specified must be an absolute
936 .BI --force- something
937 Instructs dgit to try to proceed despite detecting
938 what it thinks is going to be a fatal problem.
939 .B This is probably not going to work.
940 These options are provided as an escape hatch,
941 in case dgit is confused.
942 (They might also be useful for testing error cases.)
944 .B --force-import-dsc-with-dgit-field
945 Tell dgit import-dsc to treat a .dsc with a Dgit field
947 The result is a fresh import,
948 discarding the git history
949 that the person who pushed that .dsc was working with.
951 .B --force-unrepresentable
953 dgit thinks that your git tree contains changes
954 (relative to your .orig tarballs)
955 which dpkg-source is not able to represent.
956 Your build or push will probably fail later.
958 .B --force-changes-origs-exactly
959 Use the set of .origs specified in your .changes, exactly,
960 without regard to what is in the archive already.
961 The archive may well reject your upload.
963 .B --force-unsupported-source-format
964 Carry on despite dgit not understanding your source package format.
965 dgit will probably mishandle it.
967 .B --force-dsc-changes-mismatch
968 Do not check whether .dsc and .changes match.
969 The archive will probably reject your upload.
971 .BR --force-import-gitapply-absurd " | " --force-import-gitapply-no-absurd
972 Force on or off the use of the absurd git-apply emulation
973 when running gbp pq import
974 when importing a package from a .dsc.
975 See Debian bug #841867.
977 dgit can be configured via the git config system.
978 You may set keys with git-config (either in system-global or per-tree
979 configuration), or provide
981 on the dgit command line.
983 Settings likely to be useful for an end user include:
985 .BR dgit-suite. \fIsuite\fR .distro " \fIdistro\fR"
986 Specifies the distro for a suite. dgit keys off the suite name (which
987 appears in changelogs etc.), and uses that to determine the distro
988 which is involved. The config used is thereafter that for the distro.
991 may be a glob pattern.
993 .BI dgit.default.distro " distro"
994 The default distro for an unknown suite.
996 .BI dgit.default.default-suite " suite"
997 The default suite (eg for clone).
1001 .BR dgit-distro. \fIdistro\fR . *,
1002 the default value used if there is no distro-specific setting.
1004 .BR dgit-distro. \fIdistro\fR .clean-mode
1005 One of the values for the command line --clean= option; used if
1006 --clean is not specified.
1008 .BR dgit-distro. \fIdistro\fR .quilt-mode
1009 One of the values for the command line --quilt= option; used if
1010 --quilt is not specified.
1012 .BR dgit-distro. \fIdistro\fR .rm-old-changes
1013 Boolean, used if neither \-\-rm-old-changes nor \-\-no-rm-old-changes
1014 is specified. The default is not to remove.
1016 .BR dgit-distro. \fIdistro\fR .readonly " " auto | a " | " true | t | y | 1 " | " false | f | n | 0
1017 Whether you have push access to the distro.
1018 For Debian, it is OK to use auto, which uses readonly mode if you are
1019 not pushing right now;
1020 but, setting this to false will avoid relying on the mirror of the dgit
1021 git repository server.
1023 .BI dgit-distro. distro .keyid
1027 .BI dgit-distro. distro .mirror " url"
1029 .BI dgit-distro. distro .username
1030 Not relevant for Debian.
1032 .BI dgit-distro. distro .upload-host
1033 Might be useful if you have an intermediate queue server.
1035 .BI dgit-distro. distro .user-name " " dgit-distro. distro .user-email
1036 Values to configure for user.name and user.email in new git trees. If
1037 not specified, the DEBFULLNAME and DEBEMAIL environment variables are
1038 used, respectively. Only used if .setup-usermail is not disabled.
1040 .BI dgit-distro. distro .setup-useremail
1041 Whether to set user.name and user.email in new git trees.
1042 True by default. Ignored for dgit setup-setup-useremail, which does it anyway.
1044 .BI dgit-distro. distro .setup-mergechangelogs
1045 Whether to setup a merge driver which uses dpkg-mergechangelogs for
1046 debian/changelog. True by default. Ignored for dgit
1047 setup-mergechangelogs, which does it anyway.
1049 .BI dgit-distro. distro .setup-gitattributes
1050 Whether to configure .git/info/attributes
1051 to suppress checkin/checkout file content transformations
1053 True by default. Ignored for dgit setup-gitattributes, which does it anyway.
1055 .BI dgit-distro. distro .cmd- cmd
1056 Program to use instead of
1059 .BR -- \fIcmd\fR = "... ."
1061 .BI dgit-distro. distro .opts- cmd
1062 Extra options to pass to
1065 .BR -- \fIcmd\fR : "... ."
1066 To pass several options, configure multiple values in git config
1067 (with git config --add). The options for
1068 .BI dgit.default.opts- cmd
1069 .BI dgit-distro. distro /push.opts- cmd
1070 and are all used, followed by options from dgit's command line.
1071 .SH ACCESS CONFIGURATION
1072 There are many other settings which specify how a particular distro's
1073 services (archive and git) are provided. These should not normally be
1074 adjusted, but are documented for the benefit of distros who wish to
1077 .BI dgit-distro. distro .nominal-distro
1078 Shown in git tags, Dgit fields, and so on.
1080 .BI dgit-distro. distro .alias-canon
1081 Used for all access configuration lookup.
1083 .BR dgit-distro. \fIdistro\fR /push. *
1084 If set, overrides corresponding non \fB/push\fR config when
1085 .BR readonly=false ,
1089 .BI dgit-distro. distro .git-url
1091 .BR dgit-distro. \fIdistro\fR .git-url [ -suffix ]
1093 .BI dgit-distro. distro .git-proto
1095 .BI dgit-distro. distro .git-path
1097 .BR dgit-distro. \fIdistro\fR .git-check " " true | false | url | ssh-cmd
1099 .BI dgit-distro. distro .git-check-suffix
1101 .BR dgit-distro. \fIdistro\fR .diverts.divert " " new-distro | / \fIdistro-suffix\fR
1103 .BI dgit-distro. distro .git-create " " ssh-cmd | true
1105 .BR dgit-distro. \fIdistro\fR .archive-query " " ftpmasterapi: " | " madison: "\fIdistro\fR | " dummycat: "\fI/path\fR | " sshpsql: \fIuser\fR @ \fIhost\fR : \fIdbname\fR
1107 .BR dgit-distro. \fIdistro\fR .archive-query- ( url | tls-key | curl-ca-args )
1109 .BI dgit-distro. distro .madison-distro
1111 .BI dgit-distro. distro .archive-query-default-component
1113 .BI dgit-distro. distro .dgit-tag-format
1115 .BR dgit-distro. \fIdistro\fR .dep14tag " " want | no | always
1117 .BI dgit-distro. distro .ssh
1119 .BI dgit-distro. distro .sshpsql-dbname
1121 .BR dgit-distro. \fIdistro\fR . ( git | sshpsql ) - ( user | host | user-force )
1123 .BI dgit-distro. distro .backports-quirk
1125 .BI dgit-distro. distro .rewrite-map-enable
1127 .BI dgit.default.old-dsc-distro
1129 .BI dgit.dsc-url-proto-ok. protocol
1131 .BI dgit.dsc-url-proto-ok.bad-syntax
1133 .BI dgit.default.dsc-url-proto-ok
1134 .SH ENVIRONMENT VARIABLES
1136 .BR DGIT_SSH ", " GIT_SSH
1137 specify an alternative default program (and perhaps arguments) to use
1138 instead of ssh. DGIT_SSH is consulted first and may contain arguments;
1139 if it contains any whitespace will be passed to the shell. GIT_SSH
1140 specifies just the program; no arguments can be specified, so dgit
1141 interprets it the same way as git does.
1143 also the --ssh= and --ssh: options.
1145 .BR DEBEMAIL ", " DEBFULLNAME
1146 Default git user.email and user.name for new trees. See
1147 .BR "dgit setup-new-tree" .
1149 .BR gpg ", " dpkg- "..., " debsign ", " git ", " curl ", " dput ", " LWP::UserAgent
1150 and other subprograms and modules used by dgit are affected by various
1151 environment variables. Consult the documentaton for those programs
1155 a `dgit rebase-prep' command or some such to turn a
1156 fast-forwarding branch containing pseudo-merges
1157 back into a rebasing patch stack.
1158 It might have to leave a note
1159 for a future dgit push.
1161 If the dgit push fails halfway through,
1162 it is not necessarily restartable and
1164 It would be good to check that the proposed signing key is
1165 available before starting work.
1167 dgit's build functions, and dgit push, may make changes to
1168 your current HEAD. Sadly this is necessary for packages in the `3.0
1169 (quilt)' source format. This is ultimately due to what I consider
1170 design problems in quilt and dpkg-source.
1172 --dry-run does not always work properly, as not doing some of the git
1173 fetches may result in subsequent actions being different. Doing a
1174 non-dry-run dgit fetch first will help.
1175 --damp-run is likely to work much better.
1182 \fBgit-config\fP(1),
1183 \fBgit-buildpackage\fP(1),
1184 \fBdpkg-buildpackage\fP(1),
1186 https://browse.dgit.debian.org/