chiark / gitweb /
dgit(1): Cover more cases of --overwrite and --deliberately
[dgit.git] / dgit-maint-debrebase.7.pod
index 675e2f3b097a31890e268a1c22a55033d55990ca..4a0b5a52a3fec3b415f31320af91eacb8788dc9a 100644 (file)
@@ -134,6 +134,32 @@ using git-diff(1) to compare the imported tarball to the release tag.
 
 =back
 
+=head3 Using untagged upstream commits
+
+=over 4
+
+Sometimes upstream does not tag their releases, or you want to package
+an unreleased git snapshot.  In such a case you can create your own
+upstream release tag, of the form B<upstream/>I<ver>, where I<ver> is
+the upstream version you plan to put in I<debian/changelog>.  The
+B<upstream/> prefix ensures that your tag will not clash with any tags
+upstream later creates.
+
+For example, suppose that the latest upstream release is 1.2.2 and you
+want to package git commit ab34c21 which was made on 2013-12-11.  A
+common convention is to use the upstream version number
+1.2.2+git20131211.ab34c21 and so you could use
+
+=over 4
+
+    % git tag -s upstream/1.2.2+git20131211.ab34c21 ab34c21
+
+=back
+
+to obtain a release tag, and then proceed as above.
+
+=back
+
 =head2 When upstream releases only tarballs
 
 Because we want to work in git, we need a virtual upstream branch with
@@ -269,6 +295,11 @@ patches applied.  Use
 
 =back
 
+If you were not previously using dgit to upload your package (i.e. you
+were not using the workflow described in dgit-maint-gbp(7)), and you
+happen to have run B<dgit fetch sid> in this clone of the repository,
+you will need to pass I<--fdiverged> to this command.
+
 =item (C) There is a delta queue, and patches are applied.
 
 Use
@@ -322,10 +353,14 @@ release, and importing that release using git-debrebase(1).
 
 =over 4
 
-    % git remote update
+    % git fetch --tags upstream
 
 =back
 
+If you want to package an untagged upstream commit (because upstream
+does not tag releases or because you want to package an upstream
+development snapshot), see "Using untagged upstream commits" above.
+
 =head3 When upstream releases only tarballs
 
 You will need the I<debian/gbp.conf> from "When upstream releases only
@@ -370,9 +405,10 @@ release:
 
 =back
 
-Pass I<--stat> just to see the list of changed files, which is useful
-to determine whether there are any new or deleted files to may need
-accounting for in your copyright file.
+Also, diff with I<--name-status> and I<--diff-filter=ADR> to see
+just the list of added or removed files, which is useful to determine
+whether there are any new or deleted files that may need accounting
+for in your copyright file.
 
 If you obtained a tarball from upstream, you are ready to try a build.
 If you merged a git tag from upstream, you will first need to generate
@@ -442,6 +478,12 @@ cowbuilder>.
 Upload with B<dgit push> or B<dgit push-source>.  Remember to pass
 I<--new> if the package is new in the target suite.
 
+In some cases where you used B<git debrebase convert-from-gbp> since
+the last upload, it is not possible for dgit to make your history
+fast-forwarding from the history on B<dgit-repos>.  In such cases you
+will have to pass I<--overwrite> to dgit.  git-debrebase will normally
+tell you if this will be needed.
+
 Right before uploading, if you did not just already do so, you might
 want to have git-debrebase(1) shuffle your branch such that the Debian
 delta queue appears right at the tip of the branch you will push:
@@ -476,7 +518,9 @@ email your archive administrators.  For Debian that is
 
 Our approach is to maintain a DFSG-clean upstream branch, and create
 tags on this branch for each release that we want to import.  We then
-import those tags per "Importing the release", above.
+import those tags per "Importing the release", above.  In the case of
+a new package, we base our initial Debianisation on our first
+DFSG-clean tag.
 
 For the first upstream release that requires DFSG filtering:
 
@@ -487,11 +531,23 @@ For the first upstream release that requires DFSG filtering:
     % git commit -m "upstream version 1.2.3 DFSG-cleaned"
     % git tag -s 1.2.3+dfsg
     % git checkout master
-    % # proceed with "Importing the release" on 1.2.3+dfsg tag
 
 =back
 
-And for subsequent releases (whether or not they require filtering):
+Now either proceed with "Importing the release" on the 1.2.3+dfsg tag,
+or in the case of a new package,
+
+=over 4
+
+    % git branch --unset-upstream
+    % git reset --hard 1.2.3+dfsg
+
+=back
+
+and proceed with "INITIAL DEBIANISATION".
+
+For subsequent releases (whether or not they require additional
+filtering):
 
 =over 4
 
@@ -534,7 +590,7 @@ In the simplest case,
 
 =back
 
-If that fails, because your branch and the NMUers work represent
+If that fails, because your branch and the NMUers' work represent
 divergent branches of development, you have a number of options.  Here
 we describe the two simplest.
 
@@ -627,25 +683,29 @@ package, but this should already be represented in your git history.)
 
 The git history made by git-debrebase can seem complicated.
 Here are some suggestions for helpful invocations of gitk and git.
-They can be adapted for other tools like tig, git log, etc.
+They can be adapted for other tools like tig(1), git-log(1), magit, etc.
 
-=over
+History of package in Debian, disregarding history from upstream:
 
-=item History of package in Debian (disregarding history from upstream):
+=over
 
     % gitk --first-parent
 
 In a laundered branch, the delta queue is at the top.
 
-=item History of the packaging (excluding the delta queue)
+=back
+
+History of the packaging, excluding the delta queue:
 
     % gitk :/debian :!/debian/patches
 
-=item Just the delta queue (ie, Debian's changes to upstream):
+Just the delta queue (i.e. Debian's changes to upstream):
 
     % gitk --first-parent -- :/ :!/debian
 
-=item Full history including old versions of the delta queue:
+Full history including old versions of the delta queue:
+
+=over
 
     % gitk --date-order
 
@@ -654,19 +714,24 @@ The "Declare fast forward" commits you see have an older history
 and a newer history as the other.
 --date-order makes gitk show the delta queues in the right order.
 
-=item Show complete diff since the last upload:
+=back
+
+Complete diff since the last upload:
+
+=over
 
     % git diff dgit/dgit/sid..HEAD -- :/ :!/debian/patches
-(Includes changes to upstream files.)
 
-=item Interdiff of delta queue since last upload, if you really want that:
+This includes changes to upstream files.
+
+=back
+
+Interdiff of delta queue since last upload, if you really want it:
 
     % git debrebase make-patches
     % git diff dgit/dgit/sid..HEAD -- debian/patches
 
-=back
-
-Also of course there is
+And of course there is:
 
     % git debrebase status