chiark / gitweb /
test suite: add t-pushed-good-check-changes
[dgit.git] / dgit.1
1 '\" t
2 .TH dgit 1 "" "Debian Project" "dgit"
3 .SH NAME
4 dgit \- git integration with the Debian archive
5 .
6 .SH SYNOPSIS
7 .B dgit
8 [\fIdgit\-opts\fP] \fBclone\fP [\fIdgit\-opts\fP]
9 \fIpackage\fP [\fIsuite\fP] [\fB./\fP\fIdir|\fB/\fP\fIdir\fR]
10 .br
11 .B dgit
12 [\fIdgit\-opts\fP] \fBfetch\fP|\fBpull\fP [\fIdgit\-opts\fP]
13 [\fIsuite\fP]
14 .br
15 .B dgit
16 [\fIdgit\-opts\fP] \fBbuild\fP|\fBsbuild\fP|\fBbuild-source\fP
17 [\fIbuild\-opts\fP]
18 .br
19 .B dgit
20 [\fIdgit\-opts\fP] \fBpbuilder\fP|\fBcowbuilder\fP
21 [\fIdebbuildopts\fP]
22 .br
23 .B dgit
24 [\fIdgit\-opts\fP] \fBpush\fP|\fBpush-source\fP [\fIdgit\-opts\fP]
25 [\fIsuite\fP]
26 .br
27 .B dgit
28 [\fIdgit\-opts\fP] \fBrpush\fR \fIbuild-host\fR\fB:\fR\fIbuild-dir\fR
29 [\fIpush args...\fR]
30 .br
31 .B dgit
32 [\fIdgit\-opts\fP] \fIaction\fR ...
33 .SH DESCRIPTION
34 .B dgit
35 allows you to treat the Debian archive as if it were a git
36 repository.
37 Conversely,
38 it allows Debian to publish the source of its packages
39 as git branches, in a format which is directly useable
40 by ordinary people.
41
42 This is the command line reference.
43 Please read the tutorial(s):
44 .TS
45 lb l.
46 dgit-user(7)    for users: edit, build and share packages
47 dgit-nmu-simple(7)      for DDs: do a straightforward NMU
48 dgit-maint-native(7)    for maintainers of Debian-native packages
49 dgit-maint-debrebase(7) for maintainers: a pure-git rebasish workflow
50 dgit-maint-merge(7)     for maintainers: a pure-git merging workflow
51 dgit-maint-gbp(7)       for maintainers already using git-buildpackage
52 dgit-sponsorship(7)     for sponsors and sponsored contributors
53 dgit-downstream-dsc(7)  setting up dgit push for a new distro
54 .TE
55 .LP
56 See \fBdgit(7)\fP for detailed information about the data
57 model,
58 common problems likely to arise with certain kinds of package,
59 etc.
60 .SH OPERATIONS
61 .TP
62 \fBdgit clone\fR \fIpackage\fP [\fIsuite\fP] [\fB./\fP\fIdir|\fB/\fP\fIdir\fR]
63 Consults the archive and dgit-repos to construct the git view of
64 history for
65 .I package
66 in
67 .I suite
68 .RB ( sid
69 by default)
70 in a new directory (named
71 .BI ./ package
72 by default);
73 also, downloads any necessary orig tarballs.
74
75 The suite's git tip is
76 left on the local branch
77 .BI dgit/ suite
78 ready for work, and on the corresponding dgit remote tracking branch.
79 The
80 .B origin
81 remote will be set up to point to the package's dgit-repos tree
82 for the distro to which
83 .I suite
84 belongs.
85
86 .I suite
87 may be a combination of several underlying suites in the form
88 .IR mainsuite \fB,\fR subsuite ...;
89 see COMBINED SUITES in dgit(7).
90
91 For your convenience, the
92 .B vcs-git
93 remote will be set up from the package's Vcs-Git field, if there is
94 one - but note that in the general case the history found there may be
95 different to or even disjoint from dgit's view.
96 (See also dgit update-vcs-git.)
97 .TP
98 \fBdgit fetch\fR [\fIsuite\fP]
99 Consults the archive and git-repos to update the git view of
100 history for a specific suite (and downloads any necessary orig
101 tarballs), and updates the remote tracking branch
102 .BR remotes/dgit/dgit/ \fIsuite\fR.
103 If the current branch is
104 .BI dgit/ suite
105 then dgit fetch defaults to
106 .IR suite ;
107 otherwise it parses debian/changelog and uses the suite specified
108 there.
109 suite may be a combined suite, as for clone.
110 .TP
111 \fBdgit pull\fR [\fIsuite\fP]
112 Does dgit fetch, and then merges the new head of the remote tracking
113 branch
114 .BI remotes/dgit/dgit/ suite
115 into the current branch.
116 .TP
117 \fBdgit checkout\fR \fIsuite\fR
118 Checks out the local branch
119 .BR dgit/ \fIsuite\fR.
120
121 If the branch does not exist,
122 dgit checkout creates it,
123 and sets it up the same way as dgit clone would.
124 In that case, if
125 the archive remote tracking branch does not exist,
126 dgit checkout will do a dgit fetch first.
127
128 NB: dgit checkout will only do a fetch if it has to.
129 If you already have the suite branch,
130 and want to merge your branch with updates from the archive,
131 use dgit pull.
132
133 dgit checkout will normally need to aceess the archive server,
134 to canonicalise the provided suite name.
135 The exception is if you specify the canonical name,
136 and the branch (or tracking branch) already exists.
137 .TP
138 \fBdgit build\fR ...
139 Runs
140 .B dpkg-buildpackage
141 with some suitable options.  Options and arguments after build
142 will be passed on to dpkg-buildpackage.  It is not necessary to use
143 dgit build when using dgit; it is OK to use any approach which ensures
144 that the generated source package corresponds to the relevant git
145 commit.
146
147 Tagging, signing and actually uploading should be left to dgit push.
148
149 dgit's build operations access the the network,
150 to get the -v option right.
151 See -v, below.
152 .TP
153 \fBdgit build-source\fR ...
154 Builds the source package, and a changes file for a prospective
155 source-only upload, using
156 .BR dpkg-source .
157 The output is left in
158 .IR package \fB_\fR version \fB.dsc\fR
159 and
160 .IR package \fB_\fR version \fB_source.changes\fR.
161
162 Tagging, signing and actually uploading should be left to dgit
163 push-source, or dgit push.
164 .TP
165 .B dgit clean
166 Cleans the current working tree (according to the --clean= option in
167 force).
168 .TP
169 \fBdgit update-vcs-git\fR [\fIsuite\fP|\fB.\fR] [\fB--\fR] [\fIgit fetch options\fR]
170 .TQ
171 \fBdgit update-vcs-git\fR [\fIsuite|\fP\fB.\fR] \fB-\fR
172 Sets up, or updates the url of, the vcs-git remote, and
173 (unless \fB-\fR was specified)
174 runs git fetch on it.
175
176 By default, the Vcs-Git field of the .dsc from Debian sid is used,
177 as that is probably most up to date.
178 Another suite may be specified, or
179 .B .
180 to indicate that the Vcs-Git of the cwd's debian/control should
181 be used instead.
182 .TP
183 .B dgit help
184 Print a usage summary.
185 .TP
186 \fBdgit sbuild\fR ...
187 Constructs the source package, uses
188 .B  sbuild
189 to do a binary build, and uses mergechanges to merge the source and
190 binary changes files.  Options and arguments after sbuild will be
191 passed on to sbuild.
192 The output is left in
193 .IR package \fB_\fR version \fB_multi.changes\fR.
194 .IP
195 Note that by default
196 sbuild does not build arch-independent packages.
197 You probably want to pass -A, to request those.
198 .IP
199 Tagging, signing and actually uploading should be left to dgit push.
200 .TP
201 \fBdgit pbuilder\fR [\fIdebbuildopts\fP]
202 Like \fBdgit sbuild\fR, but uses
203 .B pbuilder
204 instead of
205 .BR sbuild ,
206 and builds arch-independent packages by default.
207
208 You should ensure that your dgit --build-products-dir setting matches
209 your pbuilder --buildresult.
210
211 The \fIdebbuildopts\fP are passed to pbuilder using its --debbuildopts
212 option.  If you want to pass other options to pbuilder, use the
213 \fB--pbuilder:\fR dgit option as described below
214 (recalling that dgit options should appear between \fBdgit\fR and
215 \fBpbuilder\fR).
216
217 You should ensure that in your pbuilderrc you do
218 .B not
219 have the setting
220 .B SOURCE_ONLY_CHANGES=yes
221 as this may cause trouble.
222 .TP
223 \fBdgit cowbuilder\fR [\fIdebbuildopts\fP]
224 Like \fBdgit pbuilder\fR, but uses
225 .B cowbuilder
226 instead of
227 .B pbuilder.
228 .TP
229 \fBdgit gbp-build\fR ...
230 Runs
231 .B git-buildpackage
232 with some suitable options.  Options and arguments after gbp-build
233 will be passed on to git-buildpackage.
234
235 By default this uses \-\-quilt=gbp, so HEAD should be a
236 git-buildpackage style branch, not a patches-applied branch.
237
238 Tagging, signing and actually uploading should be left to dgit push.
239 .TP
240 \fBdgit push\fR [\fIsuite\fP]
241 Does an `upload', pushing the current HEAD to the archive (as a source
242 package) and to dgit-repos (as git commits).  The package must already
243 have been built ready for upload, with the .dsc and .changes
244 left in the parent directory.  It is normally best to do the build
245 with dgit too (eg with dgit sbuild): some existing build tools pass
246 unhelpful options to dpkg-source et al by default, which can result in
247 the built source package not being identical to the git tree.
248
249 In more detail: dgit push checks that the current HEAD corresponds to
250 the .dsc.  It then pushes the HEAD to the suite's dgit-repos branch,
251 adjusts the .changes to include any .origs which the archive lacks
252 and exclude .origs which the archive has
253 (so -sa and -sd are not needed when building for dgit push),
254 makes a signed git tag, edits the .dsc to contain the dgit metadata
255 field, runs debsign to sign the upload (.dsc and .changes), pushes the
256 signed tag, and finally uses dput to upload the .changes to the
257 archive.
258
259 dgit push always uses the package, suite and version specified in the
260 debian/changelog and the .dsc, which must agree.  If the command line
261 specifies a suite then that must match too.
262
263 When used on a git-debrebase branch,
264 dgit calls git-debrebase
265 to prepare the branch
266 for source package upload and push.
267 .TP
268 \fBdgit push-source\fR [\fIsuite\fP]
269 Without \fB-C\fR, builds a source package and dgit pushes it.  Saying
270 \fBdgit push-source\fR is like saying "update the source code in the
271 archive to match my git HEAD, and let the autobuilders do the rest."
272
273 With \fB-C\fR, performs a dgit push, additionally ensuring that no
274 binary packages are uploaded.
275 .TP
276 \fBdgit rpush\fR \fIbuild-host\fR\fB:\fR\fIbuild-dir\fR [\fIpush args...\fR]
277 Pushes the contents of the specified directory on a remote machine.
278 This is like running dgit push on build-host with build-dir as the
279 current directory; however, signing operations are done on the
280 invoking host.  This allows you to do a push when the system which has
281 the source code and the build outputs has no access to the key:
282
283 .TS
284 l l.
285 1.      Clone on build host (dgit clone)
286 2.      Edit code on build host (edit, git commit)
287 3.      Build package on build host (dgit build)
288 4.      Test package on build host or elsewhere (dpkg -i, test)
289 5.      Upload by invoking dgit rpush on host with your GPG key.
290 .TE
291
292 However, the build-host must be able to ssh to the dgit repos.  If
293 this is not already the case, you must organise it separately, for
294 example by the use of ssh agent forwarding.
295
296 The remaining arguments are treated just as dgit push would handle
297 them.
298
299 build-host and build\-dir can be passed as separate
300 arguments; this is assumed to be the case if the first argument
301 contains no : (except perhaps one in [ ], to support IPv6 address
302 literals).
303
304 You will need similar enough versions of dgit on the build-host and
305 the invocation host.  The build-host needs gnupg installed, with your
306 public key in its keyring (but not your private key, obviously).
307 .TP
308 .B dgit setup-new-tree
309 Configure the current working tree the way that dgit clone would have
310 set it up.  Like running
311 .BR "dgit setup-useremail" ,
312 .B setup-mergechangelogs
313 and
314 .B setup-gitattributes
315 (but only does each thing if dgit is configured to do it automatically).
316 You can use these in any git repository, not just ones used with
317 the other dgit operations.
318 Does
319 .B not
320 run
321 .B update-vcs-git
322 (as that requires Debian packaging information).
323 .TP
324 .B dgit setup-useremail
325 Set the working tree's user.name and user.email from the
326 distro-specific dgit configuration
327 .RB ( dgit-distro. \fIdistro\fR .user-name " and " .user-email ),
328 or DEBFULLNAME or DEBEMAIL.
329 .TP
330 .B dgit setup-mergechangelogs
331 Configures a git merge helper for the file
332 .B debian/changelog
333 which uses
334 .BR dpkg-mergechangelogs .
335 .TP
336 .B dgit setup-gitattributes
337 Set up the working tree's
338 .B .git/info/attributes
339 to disable all transforming attributes for all files.
340 This is done by defining a macro attribute
341 .B dgit-defuse-attrs
342 and applying it to
343 .BR * .
344 For why, see
345 .B GITATTRIBUTES
346 in
347 .BR dgit(7) .
348
349 If there is an existing macro attribute line
350 .B [attr]dgit-defuse-attrs
351 in .git/info/attributes,
352 but it is insufficient,
353 because it was made by an earlier version of dgit
354 and git has since introduced new transforming attributes,
355 modifies the macro to disable the newer transformations.
356
357 (If there is already a macro attribute line
358 .B [attr]dgit-defuse-attrs
359 in .git/info/attributes
360 which does what dgit requires
361 (whatever files it effects),
362 this operation does nothing further.
363 This fact can be used to defeat or partially defeat
364 dgit setup-gitattributes
365 and hence
366 dgit setup-new-tree.)
367 .TP
368 .B dgit quilt-fixup
369 `3.0 (quilt)' format source packages need changes representing not
370 only in-tree but also as patches in debian/patches.  dgit quilt-fixup
371 checks whether this has been done; if not, dgit will make appropriate
372 patches in debian/patches and also commit the resulting changes to
373 git.
374
375 This is normally done automatically by dgit build and dgit push.
376
377 dgit will try to turn each relevant commit in your git history into a
378 new quilt patch.  dgit cannot convert nontrivial merges, or certain
379 other kinds of more exotic history.  If dgit can't find a suitable
380 linearisation of your history, by default it will fail, but you can
381 ask it to generate a single squashed patch instead.
382
383 When used with a git-debrebase branch,
384 dgit will ask git-debrebase to prepare patches.
385 However,
386 dgit can make patches in some situations where git-debrebase fails,
387 so dgit quilt-fixup can be useful in its own right.
388 To always use dgit's own patch generator
389 instead of git-debrebase make-patches,
390 pass --git-debrebase=true to dgit.
391
392 See
393 .B FORMAT 3.0 (QUILT)
394 in
395 .BR dgit(7) .
396 .TP
397 \fBdgit import-dsc\fR [\fIsub-options\fR] \fI../path/to/.dsc\fR [\fB+\fR|\fB..\fR]branch
398 Import a Debian-format source package,
399 specified by its .dsc,
400 into git,
401 the way dgit fetch would do.
402
403 This does about half the work of dgit fetch:
404 it will convert the .dsc into a new, orphan git branch.
405 Since dgit has no access to a corresponding source package archive
406 or knowledge of the history
407 it does not consider whether this version is newer
408 than any previous import
409 or corresponding git branches;
410 and it therefore does not
411 make a pseudomerge to bind the import
412 into any existing git history.
413
414 Because a .dsc can contain a Dgit field naming a git commit
415 (which you might not have),
416 and specifying where to find that commit
417 (and any history rewrite table),
418 import-dsc might need online access.
419 If this is a problem
420 (or dgit's efforts to find the commit fail),
421 consider --no-chase-dsc-distro
422 or --force-import-dsc-with-dgit-field.
423
424 There is only only sub-option:
425
426 .B --require-valid-signature
427 causes dgit to insist that the signature on the .dsc is valid
428 (using the same criteria as dpkg-source -x).
429 Otherwise, dgit tries to verify the signature but
430 the outcome is reported only as messages to stderr.
431
432 If
433 .I branch
434 is prefixed with
435 .B +
436 then if it already exists, it will be simply ovewritten,
437 no matter its existing contents.
438 If
439 .I branch
440 is prefixed with
441 .B ..
442 then if it already exists
443 and dgit actually imports the dsc
444 (rather than simply reading the git commit out of the Dgit field),
445 dgit will make a pseudomerge
446 so that the result is necessarily fast forward
447 from the existing branch.
448 Otherwise, if branch already exists,
449 dgit will stop with an error message.
450
451 If
452 .I branch
453 does not start with refs/, refs/heads/ is prepended.
454 .TP
455 .B dgit version
456 Prints version information and exits.
457 .TP
458 .BI "dgit clone-dgit-repos-server" " destdir"
459 Tries to fetch a copy of the source code for the dgit-repos-server,
460 as actually being used on the dgit git server, as a git tree.
461 .TP
462 .BI "dgit print-dgit-repos-server-source-url"
463 Prints the url used by dgit clone-dgit-repos-server.
464 This is hopefully suitable for use as a git remote url.
465 It may not be useable in a browser.
466 .TP
467 .BI "dgit print-dpkg-source-ignores"
468 Prints the -i and -I arguments which must be passed to dpkg-souce
469 to cause it to exclude exactly the .git diredcory
470 and nothing else.
471 The separate arguments are unquoted, separated by spaces,
472 and do not contain spaces.
473 .SH OPTIONS
474 .TP
475 .BR --dry-run " | " -n
476 Go through the motions, fetching all information needed, but do not
477 actually update the output(s).  For push, dgit does
478 the required checks and leaves the new .dsc in a temporary file,
479 but does not sign, tag, push or upload.
480 .TP
481 .BR --damp-run " | " -L
482 Go through many more of the motions: do everything that doesn't
483 involve either signing things, or making changes on the public
484 servers.
485 .TP
486 .BI -k keyid
487 Use
488 .I keyid
489 for signing the tag and the upload.  The default comes from the
490 distro's
491 .B keyid
492 config setting (see CONFIGURATION, below), or failing that, the
493 uploader trailer line in debian/changelog.
494 .TP
495 .BR --no-sign
496 does not sign tags or uploads (meaningful only with push).
497 .TP
498 .TP
499 .BI -p package
500 Specifies that we should process source package
501 .I package
502 rather than looking in debian/control or debian/changelog.
503 Valid with dgit fetch and dgit pull, only.
504 .TP
505 .BR --clean=git " | " -wg
506 Use
507 .BR "git clean -xdf"
508 to clean the working tree,
509 rather than running the package's rules clean target.
510
511 This will delete all files which are not tracked by git.
512 (Including any files you forgot to git add.)
513
514 .BI --clean= ...
515 options other than dpkg-source
516 are useful when the package's clean target is troublesome, or
517 to avoid needing the build-dependencies.
518 .TP
519 .BR --clean=git-ff " | " -wgf
520 Use
521 .BR "git clean -xdff"
522 to clean the working tree.
523 Like
524 git clean -xdf
525 but it also removes any subdirectories containing different git
526 trees (which only unusual packages are likely to create).
527 .TP
528 .BR --clean=check " | " -wc
529 Merely check that the tree is clean (does not contain uncommitted
530 files).
531 Avoids running rules clean,
532 and can avoid needing the build-dependencies.
533 .TP
534 .BR --clean=none " | " -wn
535 Do not clean the tree, nor check that it is clean.
536 Avoids running rules clean,
537 and can avoid needing the build-dependencies.
538 If there are
539 files which are not in git, or if the build creates such files, a
540 subsequent dgit push will fail.
541 .TP
542 .BR --clean=dpkg-source " | " -wd
543 Use dpkg-buildpackage to do the clean, so that the source package
544 is cleaned by dpkg-source running the package's clean target.
545 This is the default.
546 Requires the package's build dependencies.
547 .TP
548 .BR --clean=dpkg-source-d " | " -wdd
549 Use
550 .B dpkg-buildpackage -d
551 to do the clean,
552 so that the source package
553 is cleaned by dpkg-source running the package's clean target.
554 The build-dependencies are not checked (due to
555 .BR -d ),
556 which violates policy, but may work in practice.
557 .TP
558 .BR -N " | " --new
559 The package is or may be new in this suite.  Without this, dgit will
560 refuse to push.  It may (for Debian, will) be unable to access the git
561 history for any packages which have been newly pushed and have not yet
562 been published.
563 .TP
564 .BR --include-dirty
565 Do not complain if the working tree does not match your git HEAD,
566 and when building,
567 include the changes from your working tree.
568 This can be useful with build, if you plan to commit later.  (dgit
569 push will still ensure that the .dsc you upload and the git tree
570 you push are identical, so this option won't make broken pushes.)
571 .TP
572 .BR --ignore-dirty
573 Deprecated alias for --include-dirty.
574 .TP
575 .BR --overwrite [=\fIprevious-version\fR]
576 Declare that your HEAD really does contain
577 all the (wanted) changes
578 from all versions listed in its changelog;
579 or, all (wanted) changes from
580 .IR previous-version .
581 This promise is needed when
582 your git branch is not a descendant
583 of the version in the archive
584 according to the git revision history.
585
586 This option is useful if you are the maintainer, and you have
587 incorporated NMU changes into your own git workflow in a way that
588 doesn't make your branch a fast forward from the NMU.
589
590 This option is also usually necessary
591 the first time a package is pushed with dgit push
592 to a particular suite.
593 See
594 .BR dgit-maint- \fI*\fR (7) .
595
596 If
597 .I previous-version
598 is not
599 specified, dgit will check that the version in the archive is
600 mentioned in your debian/changelog.
601 (This will avoid losing
602 changes, even with
603 .BR --overwrite ,
604 unless someone committed to git a finalised changelog
605 entry, and then made later changes to that version.)
606 If
607 .IR previous-version
608 is specified, it ought to be the version currently in the archive.
609
610 dgit push --overwrite
611 will, if necessary, make a
612 pseudo-merge (that is, something that looks like the result
613 of git merge -s ours) to stitch the archive's version into your own
614 git history, so that your push is a fast forward from the archive.
615
616 (In quilt mode
617 .BR gbp ", " dpm " or " unpatched ,
618 implying a split between the dgit view and the
619 maintainer view, the pseudo-merge will appear only in the dgit view.)
620 .TP
621 .BR --delayed =\fIdays\fR
622 Upload to a DELAYED queue.
623
624 .B WARNING:
625 If the maintainer responds by cancelling
626 your upload from the queue,
627 and does not make an upload of their own,
628 this will not rewind the git branch on the dgit git server.
629 Other dgit users will then see your push
630 (with a warning message from dgit)
631 even though the maintainer wanted to abolish it.
632 Such users might unwittingly reintroduce your changes.
633
634 If this situation arises,
635 someone should make a suitable dgit push
636 to update the contents of dgit-repos
637 to a version without the controversial changes.
638 .TP
639 .BR --no-chase-dsc-distro
640 Tells dgit not to look online
641 for additional git repositories
642 containing information about a particular .dsc being imported.
643 Chasing is the default.
644
645 For most operations
646 (such as fetch and pull),
647 disabling chasing
648 means dgit will access only the git server
649 for the distro you are directly working with,
650 even if the .dsc was copied verbatim from another distro.
651 For import-dsc,
652 disabling chasing
653 means dgit will work completely offline.
654
655 Disabling chasing can be hazardous:
656 if the .dsc names a git commit which has been rewritten
657 by those in charge of the distro,
658 this option may prevent that rewrite from being effective.
659 Also,
660 it can mean that
661 dgit fails to find necessary git commits.
662 .TP
663 .BR --dgit-view-save= \fIbranch\fR|\fIref\fR
664 Specifies that when a split view quilt mode is in operation,
665 and dgit calculates
666 (or looks up in its cache)
667 a dgit view corresponding to your HEAD,
668 the dgit view will be left in
669 .IR ref .
670 The specified ref is unconditionally overwritten,
671 so don't specify a branch you want to keep.
672
673 This option is effective only with the following operations:
674 quilt-fixup; push; all builds.
675 And it is only effective with
676 --[quilt=]gbp,
677 --[quilt=]dpm,
678 --quilt=unpatched.
679
680 If ref does not start with refs/
681 it is taken to to be a branch -
682 i.e. refs/heads/ is prepended.
683 .TP
684 .BI --deliberately- something
685 Declare that you are deliberately doing
686 .IR something .
687 This can be used to override safety catches, including safety catches
688 which relate to distro-specific policies.
689 The use of --deliberately is declared and published in the signed tags
690 generated for you by dgit,
691 so that the archive software can give effect to your intent,
692 and
693 for the benefit humans looking at the history.
694 The meanings of
695 .IR something s
696 understood in the context of Debian are discussed below:
697 .TP
698 .BR --deliberately-not-fast-forward
699 Declare that you are deliberately rewinding history.  When pushing to
700 Debian, use this when you are making a renewed upload of an entirely
701 new source package whose previous version was not accepted for release
702 from NEW because of problems with copyright or redistributibility.
703
704 In split view quilt modes,
705 this also prevents the construction by dgit of a pseudomerge
706 to make the dgit view fast forwarding.
707 Normally only one of
708 --overwrite (which creates a suitable pseudomerge)
709 and
710 --deliberately-not-fast-forward
711 (which suppresses the pseudomerge and the fast forward checks)
712 should be needed;
713 --overwrite is usually better.
714 .TP
715 .BR --deliberately-include-questionable-history
716 Declare that you are deliberately including, in the git history of
717 your current push, history which contains a previously-submitted
718 version of this package which was not approved (or has not yet been
719 approved) by the ftpmasters.  When pushing to Debian, only use this
720 option after verifying that: none of the rejected-from-NEW (or
721 never-accepted) versions in the git history of your current push, were
722 rejected by ftpmaster for copyright or redistributability reasons.
723 .TP
724 .BR --deliberately-fresh-repo
725 Declare that you are deliberately rewinding history and want to
726 throw away the existing repo.  Not relevant when pushing to Debian,
727 as the Debian server will do this automatically when necessary.
728 .TP
729 .BR --quilt=linear
730 When fixing up source format `3.0 (quilt)' metadata, insist on
731 generating a linear patch stack: one new patch for each relevant
732 commit.
733 If such a stack cannot be generated, fail.
734 This is the default for Debian.
735
736 HEAD should be a series of plain commits
737 (not touching debian/patches/),
738 and pseudomerges,
739 with as ancestor a patches-applied branch.
740 .TP
741 .BR --quilt=auto
742 When fixing up source format `3.0 (quilt)' metadata, prefer to
743 generate a linear patch stack
744 (as with --quilt=auto)
745 but if that doesn't seem possible,
746 try to generate a single squashed patch for all the changes made in git
747 (as with --quilt=smash).
748 This is not a good idea for an NMU in Debian.
749 .TP
750 .BR --quilt=smash
751 When fixing up source format `3.0 (quilt)' metadata,
752 generate a single additional patch for all the changes made in git.
753 This is not a good idea for an NMU in Debian.
754
755 (If HEAD has any in-tree patches already, they must apply cleanly.
756 This will be the case for any trees produced by dgit fetch or clone;
757 if you do not change the upstream version
758 nor make changes in debian/patches,
759 it will remain true.)
760 .TP
761 .BR --quilt=nofix
762 Check whether source format `3.0 (quilt)' metadata would need fixing
763 up, but, if it does, fail.  You must then fix the metadata yourself
764 somehow before pushing.  (NB that dpkg-source --commit will not work
765 because the dgit git tree does not have a
766 .B .pc
767 directory.)
768 .TP
769 .BR --quilt=nocheck " | " --no-quilt-fixup
770 Do not check whether up source format `3.0 (quilt)' metadata needs
771 fixing up.  If you use this option and the metadata did in fact need
772 fixing up, dgit push will fail.
773 .TP
774 .BR -- [ quilt= ] gbp " | " -- [ quilt= ] dpm " | " --quilt=unapplied
775 Tell dgit that you are using a nearly-dgit-compatible git branch,
776 aka a
777 .BR "maintainer view" ,
778 and
779 do not want your branch changed by dgit.
780
781 .B --gbp
782 (short for
783 .BR --quilt=gbp )
784 is for use with git-buildpackage.
785 Your HEAD is expected to be
786 a patches-unapplied git branch, except that it might contain changes
787 to upstream .gitignore files.  This is the default for dgit gbp-build.
788
789 .B --dpm
790 (short for
791 .BR --quilt=dpm )
792 is for use with git-dpm.
793 Your HEAD is expected to be
794 a patches-applied git branch,
795 except that it might contain changes to upstream .gitignore files.
796
797 .B --quilt=unapplied
798 specifies that your HEAD is a patches-unapplied git branch (and
799 that any changes to upstream .gitignore files are represented as
800 patches in debian/patches).
801
802 With --quilt=gbp|dpm|unapplied,
803 dgit push (or precursors like quilt-fixup and build) will automatically
804 generate a conversion of your git branch into the right form.
805 dgit push will push the
806 dgit-compatible form (the
807 .BR "dgit view" )
808 to the dgit git server.
809 The dgit view will be visible to you
810 in the dgit remote tracking branches, but your own branch will
811 not be modified.
812 dgit push will create a tag
813 .BI debian/ version
814 for the maintainer view, and the dgit tag
815 .BI archive/debian/ version
816 for the dgit view.
817 dgit quilt-fixup will merely do some checks,
818 and cache the maintainer view.
819
820 .B If you have a branch like this it is essential to specify the appropriate --quilt= option!
821 This is because it is not always possible to tell: a patches-unapplied
822 git branch of a package with one patch, for example, looks very like
823 a patches-applied branch where the user has used git revert to
824 undo the patch, expecting to actually revert it.
825 However, if you fail to specify the right \-\-quilt option,
826 and you aren't too lucky, dgit will notice the problem and stop,
827 with a useful hint. 
828 .TP
829 .BR -d "\fIdistro\fR | " --distro= \fIdistro\fR
830 Specifies that the suite to be operated on is part of distro
831 .IR distro .
832 This overrides the default value found from the git config option
833 .BR dgit-suite. \fIsuite\fR .distro .
834 The only effect is that other configuration variables (used
835 for accessing the archive and dgit-repos) used are
836 .BR dgit-distro. \fIdistro\fR .* .
837
838 If your suite is part of a distro that dgit already knows about, you
839 can use this option to make dgit work even if your dgit doesn't know
840 about the suite.  For example, specifying
841 .B -ddebian
842 will work when the suite is an unknown suite in the Debian archive.
843
844 To define a new distro it is necessary to define methods and URLs
845 for fetching (and, for dgit push, altering) a variety of information both
846 in the archive and in dgit-repos.
847 How to set this up is not yet documented.
848 .TP
849 .BI -C changesfile
850 Specifies the .changes file which is to be uploaded.  By default
851 dgit push looks for single .changes file in the parent directory whose
852 filename suggests it is for the right package and version.
853
854 If the specified
855 .I changesfile
856 pathname contains slashes, the directory part is also used as
857 the value for
858 .BR --build-products-dir ;
859 otherwise, the changes file is expected in that directory (by
860 default, in
861 .BR .. ).
862 .TP
863 .B --rm-old-changes
864 When doing a build, delete any changes files matching
865 .IB package _ version _*.changes
866 before starting.  This ensures that
867 dgit push (and dgit sbuild) will be able to unambigously
868 identify the relevant changes files from the most recent build, even
869 if there have been previous builds with different tools or options.
870 The default is not to remove, but
871 .B \-\-no-rm-old-changes
872 can be used to override a previous \-\-rm-old-changes
873 or the .rm-old-changes configuration setting.
874
875 Note that \fBdgit push-source\fR will always find the right .changes,
876 regardless of this option.
877 .TP
878 .BI --build-products-dir= directory
879 Specifies where to find the built files to be uploaded.
880 By default, dgit looks in the parent directory
881 .RB ( .. ).
882
883 Also see the
884 .BI dgit.default.build-products-dir
885 configuration option
886 (which this command line option overrides).
887 .TP
888 .BI --no-rm-on-error
889 Do not delete the destination directory if clone fails.
890 .TP
891 .BI --dep14tag
892 Generates a DEP-14 tag (eg
893 .BR debian/ \fIversion\fR)
894 as well as a dgit tag (eg
895 .BR archive/debian/ \fIversion\fR)
896 where possible.  This is the default.
897 .TP
898 .BI --no-dep14tag
899 Do not generate a DEP-14 tag, except in split quilt view mode.
900 (On servers where only the old tag format is supported,
901 the dgit tag will have the DEP-14 name.
902 This option does not prevent that.)
903 .TP
904 .BI --dep14tag-always
905 Insist on generating a DEP-14 tag
906 as well as a dgit tag.
907 If the server does not support that, dgit push will fail.
908 .TP
909 .BI -D
910 Prints debugging information to stderr.  Repeating the option produces
911 more output (currently, up to -DDDD is meaningfully different).
912 .TP
913 .BI -c name = value
914 Specifies a git configuration option, to be used for this run.
915 dgit itself is also controlled by git configuration options.
916 .TP
917 .RI \fB-v\fR version "|\fB_\fR | " \fB--since-version=\fR version |\fB_\fR
918 Specifies the
919 .BI -v version
920 option to pass to dpkg-genchanges, during builds.  Changes (from
921 debian/changelog) since this version will be included in the built
922 changes file, and hence in the upload.  If this option is not
923 specified, dgit will query the archive and use the latest version
924 uploaded to the intended suite.
925
926 Specifying
927 .B _
928 inhibits this, so that no -v option will be passed to dpkg-genchanges
929 (and as a result, only the last stanza from debian/changelog will
930 be used for the build and upload).
931 .TP
932 .RI \fB-m\fR maintaineraddress
933 Passed to dpkg-genchanges (eventually).
934 .TP
935 .RI \fB--ch:\fR option
936 Specifies a single additional option to pass, eventually, to
937 dpkg-genchanges.
938
939 Options which are safe to pass include
940 .BR -C
941 (and also
942 .BR "-si -sa -sd"
943 although these should never be necessary with Debian since dgit
944 automatically calculates whether .origs need to be uploaded.)
945
946 For other options the caveat below applies.
947 .TP
948 .RI \fB--curl:\fR option " | \fB--dput:\fR" option " |..."
949 Specifies a single additional option to pass to
950 .BR curl ,
951 .BR dput ,
952 .BR debsign ,
953 .BR dpkg-source ,
954 .BR dpkg-buildpackage ,
955 .BR dpkg-genchanges ,
956 .BR sbuild ,
957 .BR pbuilder ,
958 .BR cowbuilder ,
959 .BR ssh ,
960 .BR dgit ,
961 .BR git-debrebase ,
962 .BR apt-get ,
963 .BR apt-cache ,
964 .BR gbp-pq ,
965 .BR gbp-build ,
966 or
967 .BR mergechanges .
968 Can be repeated as necessary.
969
970 Use of this ability should not normally be necessary.
971 It is provided for working around bugs,
972 or other unusual situations.
973 If you use these options,
974 you may violate dgit's assumptions
975 about the behaviour of its subprograms
976 and cause lossage.
977
978 For dpkg-buildpackage, dpkg-genchanges, mergechanges and sbuild,
979 the option applies only when the program is invoked directly by dgit.
980 Usually, for passing options to dpkg-genchanges, you should use
981 .BR --ch: \fIoption\fR.
982
983 Specifying --git is not effective for some lower-level read-only git
984 operations performed by dgit, and also not when git is invoked by
985 another program run by dgit.
986
987 See notes below regarding ssh and dgit.
988
989 NB that --gpg:option is not supported (because debsign does not
990 have that facility).
991 But see
992 .B -k
993 and the
994 .B keyid
995 distro config setting.
996 .TP
997 .RI \fB--curl=\fR program " | \fB--dput=\fR" program  " |..."
998 Specifies alternative programs to use instead of
999 .BR curl ,
1000 .BR dput ,
1001 .BR debsign ,
1002 .BR dpkg-source ,
1003 .BR dpkg-buildpackage ,
1004 .BR dpkg-genchanges ,
1005 .BR sbuild ,
1006 .BR pbuilder ,
1007 .BR cowbuilder ,
1008 .BR gpg ,
1009 .BR ssh ,
1010 .BR dgit ,
1011 .BR git-debrebase ,
1012 .BR apt-get ,
1013 .BR apt-cache ,
1014 .BR git ,
1015 .BR gbp-pq ,
1016 .BR gbp-build ,
1017 or
1018 .BR mergechanges .
1019
1020 For
1021 .BR dpkg-buildpackage ,
1022 .BR dpkg-genchanges ,
1023 .B mergechanges
1024 and
1025 .BR sbuild ,
1026 this applies only when the program is invoked directly by dgit.
1027
1028 For
1029 .BR dgit ,
1030 specifies the command to run on the remote host when dgit
1031 rpush needs to invoke a remote copy of itself.  (dgit also reinvokes
1032 itself as the EDITOR for dpkg-source --commit; this is done using
1033 argv[0], and is not affected by --dgit=).
1034
1035 .BR gbp-build 's
1036 value
1037 is used instead of gbp build or git-buildpackage.  (The default is
1038 the latter unless the former exists on PATH.)
1039 .BR gbp-pq 's
1040 value
1041 is used instead of gbp pq.
1042 In both cases,
1043 unusually, the specified value is split on whitespace
1044 to produce a command and possibly some options and/or arguments.
1045
1046 For pbuilder and cowbuilder, the defaults are
1047 .BR "sudo -E pbuilder"
1048 and
1049 .BR "sudo -E cowbuilder"
1050 respectively.
1051 Like with gbp-build and gbp pq,
1052 the specified value is split on whitespace.
1053
1054 For
1055 .BR ssh ,
1056 the default value is taken from the
1057 .B DGIT_SSH
1058 or
1059 .B GIT_SSH
1060 environment variables, if set (see below).  And, for ssh, when accessing the
1061 archive and dgit-repos, this command line setting is overridden by the
1062 git config variables
1063 .BI dgit-distro. distro .ssh
1064 and
1065 .B .dgit.default.ssh
1066 (which can in turn be overridden with -c).  Also, when dgit is using
1067 git to access dgit-repos, only git's idea of what ssh to use (eg,
1068 .BR GIT_SSH )
1069 is relevant.
1070 .TP
1071 .BI --existing-package= package
1072 dgit push needs to canonicalise the suite name.  Sometimes, dgit
1073 lacks a way to ask the archive to do this without knowing the
1074 name of an existing package.  Without --new we can just use the
1075 package we are trying to push.  But with --new that will not work, so
1076 we guess
1077 .B dpkg
1078 or use the value of this option.  This option is not needed with the
1079 default mechanisms for accessing the archive.
1080 .TP
1081 .BR -h | --help
1082 Print a usage summary.
1083 .TP
1084 .BI --initiator-tempdir= directory
1085 dgit rpush uses a temporary directory on the invoking (signing) host.
1086 This option causes dgit to use
1087 .I directory
1088 instead.  Furthermore, the specified directory will be emptied,
1089 removed and recreated before dgit starts, rather than removed
1090 after dgit finishes.  The directory specified must be an absolute
1091 pathname.
1092 .TP
1093 .BI --force- something
1094 Instructs dgit to try to proceed despite detecting
1095 what it thinks is going to be a fatal problem.
1096 .B This is probably not going to work.
1097 These options are provided as an escape hatch,
1098 in case dgit is confused.
1099 (They might also be useful for testing error cases.)
1100 .TP
1101 .B --force-import-dsc-with-dgit-field
1102 Tell dgit import-dsc to treat a .dsc with a Dgit field
1103 like one without it.
1104 The result is a fresh import,
1105 discarding the git history
1106 that the person who pushed that .dsc was working with.
1107 .TP
1108 .B --force-uploading-binaries
1109 Carry on and
1110 upload binaries
1111 even though dgit thinks your distro does not permit that.
1112 .TP
1113 .B --force-uploading-source-only
1114 Carry on and do a source-only upload,
1115 without any binaries,
1116 even though dgit thinks your distro does not permit that,
1117 or does not permit that in this situation.
1118 .TP
1119 .B --force-unrepresentable
1120 Carry on even if
1121 dgit thinks that your git tree contains changes
1122 (relative to your .orig tarballs)
1123 which dpkg-source is not able to represent.
1124 Your build or push will probably fail later.
1125 .TP
1126 .B --force-changes-origs-exactly
1127 Use the set of .origs specified in your .changes, exactly,
1128 without regard to what is in the archive already.
1129 The archive may well reject your upload.
1130 .TP
1131 .B --force-unsupported-source-format
1132 Carry on despite dgit not understanding your source package format.
1133 dgit will probably mishandle it.
1134 .TP
1135 .B --force-dsc-changes-mismatch
1136 Do not check whether .dsc and .changes match.
1137 The archive will probably reject your upload.
1138 .TP
1139 .BR --force-import-gitapply-absurd " | " --force-import-gitapply-no-absurd
1140 Force on or off the use of the absurd git-apply emulation
1141 when running gbp pq import
1142 when importing a package from a .dsc.
1143 See Debian bug #841867.
1144 .SH CONFIGURATION
1145 dgit can be configured via the git config system.
1146 You may set keys with git-config (either in system-global or per-tree
1147 configuration), or provide
1148 .BI -c key = value
1149 on the dgit command line.
1150 .LP
1151 Settings likely to be useful for an end user include:
1152 .TP
1153 .BI dgit.default.build-products-dir
1154 Specifies where to find the built files to be uploaded,
1155 when --build-products-dir is not specified.  The default is
1156 the parent directory
1157 .RB ( .. ).
1158 .TP
1159 .BR dgit-suite. \fIsuite\fR .distro " \fIdistro\fR"
1160 Specifies the distro for a suite.  dgit keys off the suite name (which
1161 appears in changelogs etc.), and uses that to determine the distro
1162 which is involved.  The config used is thereafter that for the distro.
1163
1164 .I suite
1165 may be a glob pattern.
1166 .TP
1167 .BI dgit.default.distro " distro"
1168 The default distro for an unknown suite.
1169 .TP
1170 .BI dgit.default.default-suite " suite"
1171 The default suite (eg for clone).
1172 .TP
1173 .BR dgit.default. *
1174 for each
1175 .BR dgit-distro. \fIdistro\fR . *,
1176 the default value used if there is no distro-specific setting.
1177 .TP
1178 .BR dgit-distro. \fIdistro\fR .clean-mode
1179 One of the values for the command line --clean= option; used if
1180 --clean is not specified.
1181 .TP
1182 .BR dgit-distro. \fIdistro\fR .quilt-mode
1183 One of the values for the command line --quilt= option; used if
1184 --quilt is not specified.
1185 .TP
1186 .BR dgit-distro. \fIdistro\fR .rm-old-changes
1187 Boolean, used if neither \-\-rm-old-changes nor \-\-no-rm-old-changes
1188 is specified.  The default is not to remove.
1189 .TP
1190 .BR dgit-distro. \fIdistro\fR .readonly " " auto | a " | " true | t | y | 1 " | " false | f | n | 0
1191 Whether you have push access to the distro.
1192 For Debian, it is OK to use auto, which uses readonly mode if you are
1193 not pushing right now;
1194 but, setting this to false will avoid relying on the mirror of the dgit
1195 git repository server.
1196 .TP
1197 .BI dgit-distro. distro .keyid
1198 See also
1199 .BR -k .
1200 .TP
1201 .BI dgit-distro. distro .mirror " url"
1202 .TP
1203 .BI dgit-distro. distro .username
1204 Not relevant for Debian.
1205 .TP
1206 .BI dgit-distro. distro .upload-host
1207 Might be useful if you have an intermediate queue server.
1208 .TP
1209 .BI dgit-distro. distro .user-name " " dgit-distro. distro .user-email
1210 Values to configure for user.name and user.email in new git trees.  If
1211 not specified, the DEBFULLNAME and DEBEMAIL environment variables are
1212 used, respectively.  Only used if .setup-usermail is not disabled.
1213 .TP
1214 .BI dgit-distro. distro .setup-useremail
1215 Whether to set user.name and user.email in new git trees.
1216 True by default.  Ignored for dgit setup-setup-useremail, which does it anyway.
1217 .TP
1218 .BI dgit-distro. distro .setup-mergechangelogs
1219 Whether to setup a merge driver which uses dpkg-mergechangelogs for
1220 debian/changelog.  True by default.  Ignored for dgit
1221 setup-mergechangelogs, which does it anyway.
1222 .TP
1223 .BI dgit-distro. distro .setup-gitattributes
1224 Whether to configure .git/info/attributes
1225 to suppress checkin/checkout file content transformations
1226 in new git trees.
1227 True by default.  Ignored for dgit setup-gitattributes, which does it anyway.
1228 .TP
1229 .BI dgit-distro. distro .cmd- cmd
1230 Program to use instead of
1231 .IR cmd .
1232 Works like
1233 .BR -- \fIcmd\fR = "... ."
1234 .TP
1235 .BI dgit-distro. distro .opts- cmd
1236 Extra options to pass to
1237 .IR cmd .
1238 Works like
1239 .BR -- \fIcmd\fR : "... ."
1240 To pass several options, configure multiple values in git config
1241 (with git config --add).  The options for
1242 .BI dgit.default.opts- cmd
1243 .BI dgit-distro. distro /push.opts- cmd
1244 and are all used, followed by options from dgit's command line.
1245 .SH ACCESS CONFIGURATION
1246 There are many other settings which specify how a particular distro's
1247 services (archive and git) are provided.  These should not normally be
1248 adjusted, but are documented for the benefit of distros who wish to
1249 adopt dgit.
1250 .TP
1251 .BI dgit-distro. distro .nominal-distro
1252 Shown in git tags, Dgit fields, and so on.
1253 .TP
1254 .BI dgit-distro. distro .alias-canon
1255 Used for all access configuration lookup.
1256 .TP
1257 .BR dgit-distro. \fIdistro\fR /push. *
1258 If set, overrides corresponding non \fB/push\fR config when
1259 .BR readonly=false ,
1260 or when pushing and
1261 .BR readonly=auto .
1262 .TP
1263 .BI dgit-distro. distro .git-url
1264 .TP
1265 .BR dgit-distro. \fIdistro\fR .git-url [ -suffix ]
1266 .TP
1267 .BI dgit-distro. distro .git-proto
1268 .TP
1269 .BI dgit-distro. distro .git-path
1270 .TP
1271 .BR dgit-distro. \fIdistro\fR .git-check " " true | false | url | ssh-cmd
1272 .TP
1273 .BI dgit-distro. distro .git-check-suffix
1274 .TP
1275 .BR dgit-distro. \fIdistro\fR .diverts.divert " " new-distro | / \fIdistro-suffix\fR
1276 .TP
1277 .BI dgit-distro. distro .git-create " " ssh-cmd | true
1278 .TP
1279 .BR dgit-distro. \fIdistro\fR .archive-query " " ftpmasterapi: " | " madison: "\fIdistro\fR | " dummycat: "\fI/path\fR  | " sshpsql: \fIuser\fR @ \fIhost\fR : \fIdbname\fR
1280 .TP
1281 .BR dgit-distro. \fIdistro\fR .archive-query- ( url | tls-key | curl-ca-args )
1282 .TP
1283 .BI dgit-distro. distro .madison-distro
1284 .TP
1285 .BI dgit-distro. distro .archive-query-default-component
1286 .TP
1287 .BI dgit-distro. distro .dgit-tag-format
1288 .TP
1289 .BR dgit-distro. \fIdistro\fR .dep14tag " " want | no | always
1290 .TP
1291 .BI dgit-distro. distro .ssh
1292 .TP
1293 .BI dgit-distro. distro .sshpsql-dbname
1294 .TP
1295 .BR dgit-distro. \fIdistro\fR . ( git | sshpsql ) - ( user | host | user-force )
1296 .TP
1297 .BI dgit-distro. distro .backports-quirk
1298 .TP
1299 .BI dgit-distro. distro .rewrite-map-enable
1300 .TP
1301 .BR dgit-distro. \fIdistro\fR .source-only-uploads " " ok | always | never | not-wholly-new
1302 .TP
1303 .BI dgit.default.old-dsc-distro
1304 .TP
1305 .BI dgit.dsc-url-proto-ok. protocol
1306 .TP
1307 .BI dgit.dsc-url-proto-ok.bad-syntax
1308 .TP
1309 .BI dgit.default.dsc-url-proto-ok
1310 .TP
1311 .BR dgit.vcs-git.suites " \fIsuite\fR[" ; ...]
1312 .SH ENVIRONMENT VARIABLES
1313 .TP
1314 .BR DGIT_SSH ", " GIT_SSH
1315 specify an alternative default program (and perhaps arguments) to use
1316 instead of ssh.  DGIT_SSH is consulted first and may contain arguments;
1317 if it contains any whitespace will be passed to the shell.  GIT_SSH
1318 specifies just the program; no arguments can be specified, so dgit
1319 interprets it the same way as git does.
1320 See
1321 also the --ssh= and --ssh: options.
1322 .TP
1323 .BR DEBEMAIL ", " DEBFULLNAME
1324 Default git user.email and user.name for new trees.  See
1325 .BR "dgit setup-new-tree" .
1326 .TP
1327 .BR gpg ", " dpkg- "..., " debsign ", " git ", " curl ", " dput ", " LWP::UserAgent
1328 and other subprograms and modules used by dgit are affected by various
1329 environment variables.  Consult the documentaton for those programs
1330 for details.
1331 .SH BUGS
1332 There should be
1333 a `dgit rebase-prep' command or some such to turn a
1334 fast-forwarding branch containing pseudo-merges
1335 back into a rebasing patch stack.
1336 It might have to leave a note
1337 for a future dgit push.
1338
1339 If the dgit push fails halfway through,
1340 it is not necessarily restartable and
1341 idempotent.
1342 It would be good to check that the proposed signing key is
1343 available before starting work.
1344
1345 dgit's build functions, and dgit push, may make changes to
1346 your current HEAD.  Sadly this is necessary for packages in the `3.0
1347 (quilt)' source format.  This is ultimately due to what I consider
1348 design problems in quilt and dpkg-source.
1349
1350 --dry-run does not always work properly, as not doing some of the git
1351 fetches may result in subsequent actions being different.  Doing a
1352 non-dry-run dgit fetch first will help.
1353 --damp-run is likely to work much better.
1354 .SH SEE ALSO
1355 \fBdgit\fP(7),
1356 \fBdgit-*\fP(7),
1357 \fBcurl\fP(1),
1358 \fBdput\fP(1),
1359 \fBdebsign\fP(1),
1360 \fBgit-config\fP(1),
1361 \fBgit-buildpackage\fP(1),
1362 \fBdpkg-buildpackage\fP(1),
1363 .br
1364 https://browse.dgit.debian.org/