=head1 NAME
-git-debrebase - delta queue rebase tool for Debian packaging
+git-debrebase - tool to maintain series of Debian changes to upstream source
=head1 SYNOPSYS
git-debrebase [<options...>] [-- <git-rebase options...>]
git-debrebase [<options...>] <operation> [<operation options...>
-=head1 INTRODUCTION
+=head1 QUICK REFERENCE
-git-debrebase is a tool for representing in git,
-and manpulating,
-Debian packages based on upstream source code.
+These are most of the commands you will regularly need:
+
+ git debrebase -i # edit the patch queue
+ git debrebase conclude && git push # push to eg salsa
+ git debrebase conclude && dgit push-source # source-only upload
+ git debrebase [-i] new-upstream 1.2.3-1 # uses tag, eg "v1.2.3"
+ dpkg-buildpackage -uc -b # get test debs, at any time
+
+To add patches, or edit the packaging, just make git commits.
+Ignore anything that may appear in debian/patches.
+Avoid using "git pull" and "git merge" without "--ff-only".
+
+git-debrebase has a special branch format, so see
+"CONVERTING AN EXISTING PACKAGE" in L<dgit-maint-debrebase(7)>.
+
+=head1 GUIDE TO DOCUMENTATION
This is the command line reference.
-Please read the tutorial
-L<dgit-maint-debrebase(7)>.
+There is also a detailed workflow tutorial at
+L<dgit-maint-debrebase(7)>
+(on which the above "QUICK REFERENCE" is based).
For background, theory of operation,
and definitions see L<git-debrebase(5)>.
-You should read this manpage in cojnunction with
+You should read this manpage in conjunction with
L<git-debrebase(5)/TERMINOLOGY>,
which defines many important terms used here.
because git-rebase has a tendency to start the rebase
too far back in history,
and then drop important commits.
-Soo L<git-debrebase(5)/ILLEGAL OPERATIONS>
+See L<git-debrebase(5)/ILLEGAL OPERATIONS>
=item git-debrebase status
=item git-debrebase prepush [--prose=<for commit message>]
+If the branch is unstitched,
+stitches it,
+consuming ffq-prev.
+
+This is a good command to run before pushing to a git server.
+You should consider using B<conclude> instead,
+because that launders the branch too.
+
=item git-debrebase stitch [--prose=<for commit message>]
Stitches the branch,
consuming ffq-prev.
-This is a good command to run before pushing to a git server.
If there is no ffq-prev, it is an error, unless --noop-ok.
-You should consider using B<conclude> instead,
-because that launders the branch too.
+You should consider using B<prepush> or B<conclude> instead.
=item git-debrebase scrap
Throws away all the work since the branch was last stitched.
This is done by rewinding you to ffq-prev.
+If you are in the middle of a git-rebase, will abort that too.
+
=item git-debrebase new-upstream <new-version> [<upstream-details>...]
Rebases the delta queue
except for the laundering.
<new-version>
-may be whole new Debian version, including revision,
+may be a whole new Debian version, including revision,
or just the upstream part,
in which case -1 will be appended
to make the new Debian version.
are not a simple superset of those already in debian/patches,
make-patches will fail with exit status 7,
and an error message.
-(The message can be suppress with --quiet-would-amend.)
+(The message can be suppressed with --quiet-would-amend.)
If the problem is simply that
the existing patches were not made by git-debrebase,
using dgit quilt-fixup instead should succeed.
+=item git-debrebase convert-from-unapplied [<upstream-commit-ish>]
+
=item git-debrebase convert-from-gbp [<upstream-commit-ish>]
-Cnnverts a gbp patches-unapplied branch
-(not a gbp pq patch queue branch)
-into a git-debrebase interchange branch.
+Converts any of the following into a git-debrebase interchange branch:
+
+=over
+
+=item
+
+a gbp patches-unapplied branch (but not a gbp pq patch-queue branch)
+
+=item
+
+a patches-unapplied git packaging branch containing debian/patches,
+as used with quilt
+
+=item
+
+a git branch for a package which has no Debian delta -
+ie where upstream files are have not been modified in Debian,
+so there are no patches
+
+=back
+
+(These two commands operate identically and are simply aliases.)
-This is done by generating a new anchor merge,
-converting the quilt patches as a delta queue,
+The conversion is done by generating a new anchor merge,
+converting any quilt patches as a delta queue,
and dropping the patches from the tree.
The upstream commit-ish should correspond to
-the gbp upstream branch, if there is one.
+the upstream branch or tag, if there is one.
It is a snag if it is not an ancestor of HEAD,
or if the history between the upstream and HEAD
contains commits which make changes to upstream files.
your new git-debrebase view is appropriately fast forward.
The result is a well-formed git-debrebase interchange branch.
-The result is also fast-forward from the gbp branch.
+The result is also fast-forward from the original branch.
It is a snag if the new branch looks like it will have diverged,
just as for a laundering/unstitching call to git-debrebase;
See L</Establish the current branch's ffq-prev>, below.
Note that it is dangerous not to know whether you are
-dealing with a gbp patches-unapplied branch containing quilt patches,
+dealing with a (gbp) patches-unapplied branch containing quilt patches,
or a git-debrebase interchange branch.
At worst,
using the wrong tool for the branch format might result in
This is provided mostly for the test suite
and for unusual situations.
-It should only be used with a care and
+It should only be used with care and
with a proper understanding of the underlying theory.
Be sure to not accidentally treat the result as
=back
+=item git-debrebase forget-was-ever-debrebase
+
+Deletes the ffq-prev and debrebase-last refs
+associated with this branch,
+that git-debrebase and dgit use to determine
+whether this branch is managed by git-debrebase,
+and what previous head may need to be stitched back in.
+
+This can be useful if you were just playing with git-debrebase,
+and have used git-reset --hard to go back to a commit
+before your experiments.
+
+Do not use this if you expect to run git-debrebase on the branch again.
+
=back
=head1 OPTIONS
Requests (more) debugging. May be repeated.
+=item --experimental-merge-resolution
+
+Enable experimental code for handling general merges
+(see L<git-debrebase(5)/General merges>).
+
+This option may generate lossage of various kinds,
+including misleading error messages,
+references to nonexistent documentation, and
+you being handed an incomprehensible pile of
+multidimensional merge wreckage.
+
=back
=head1 UNSTITCHING AND LAUNDERING
=head1 SEE ALSO
git-debrebase(1),
-dgit-maint-rebase(7),
+dgit-maint-debrebase(7),
dgit(1),
gitglossary(7)