chiark / gitweb /
changelog: start 9.14
[dgit.git] / dgit-maint-merge.7.pod
index 0040604632c655974ebc37bcc20c3372043598f6..ddf37aa54402dbde2566338467305667506407fd 100644 (file)
@@ -42,7 +42,7 @@ or which you aren't going to be able to upstream soon,
 it might be preferable to
 maintain the delta as a rebasing patch series.
 For such a workflow see for example
-dgit-maint-gbp(7).
+dgit-maint-debrebase(7) and dgit-maint-gbp(7).
 
 =head1 INITIAL DEBIANISATION
 
@@ -68,12 +68,12 @@ been tagged '1.2.2' by upstream.
 The final command detaches your master branch from the upstream remote,
 so that git doesn't try to push anything there, or merge unreleased
 upstream commits.  If you want to maintain a copy of your packaging
-branch on B<alioth.debian.org> in addition to B<dgit-repos>, you can
+branch on B<salsa.debian.org> in addition to B<dgit-repos>, you can
 do something like this:
 
 =over 4
 
-    % git remote add -f origin git.debian.org:/git/collab-maint/foo.git
+    % git remote add -f origin salsa.debian.org:Debian/foo.git
     % git push --follow-tags -u origin master
 
 =back
@@ -120,6 +120,32 @@ upstream's tarball instead of running git-deborig(1).
 
 =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
 
 We need a virtual upstream branch with virtual release tags.
@@ -140,7 +166,7 @@ Now create I<debian/gbp.conf>:
     [DEFAULT]
     upstream-branch = upstream
     debian-branch = master
-    upstream-tag = %(version)s
+    upstream-tag = upstream/%(version)s
 
     sign-tags = True
     pristine-tar = False
@@ -148,6 +174,7 @@ Now create I<debian/gbp.conf>:
 
     [import-orig]
     merge-mode = merge
+    merge = False
 
 =back
 
@@ -167,17 +194,17 @@ Then we can import the upstream version:
 
 =over 4
 
-    % gbp import-orig --merge-mode=replace ../foo_1.2.2.orig.tar.xz
+    % gbp import-orig --merge --merge-mode=replace ../foo_1.2.2.orig.tar.xz
 
 =back
 
 Our upstream branch cannot be pushed to B<dgit-repos>, but since we
 will need it whenever we import a new upstream version, we must push
-it somewhere.  The usual choice is B<alioth.debian.org>:
+it somewhere.  The usual choice is B<salsa.debian.org>:
 
 =over 4
 
-    % git remote add -f origin git.debian.org:/git/collab-maint/foo.git
+    % git remote add -f origin salsa.debian.org:Debian/foo.git
     % git push --follow-tags -u origin master upstream
 
 =back
@@ -300,24 +327,33 @@ A single combined diff, containing all the changes, follows.
 
 =back
 
-Alternatively, this text could be added to README.source. However,
-this might distract from more important information present in the
-latter file.
+If you are using the version 1.0 source package format, this text
+should be added to README.source instead.  The version 1.0 source
+package format ignores debian/source/patch-header.
+
+If you're using the version 3.0 (quilt) source package format, you
+could add this text to README.source instead of
+debian/source/patch-header, but this might distract from more
+important information present in README.source.
 
 =head1 BUILDING AND UPLOADING
 
-Use B<dgit build>, B<dgit sbuild>, B<dgit build-source>, and B<dgit
-push> as detailed in dgit(1).  If any command fails, dgit will provide
-a carefully-worded error message explaining what you should do.  If
-it's not clear, file a bug against dgit.  Remember to pass I<--new>
-for the first upload.
+Use B<dgit build>, B<dgit sbuild>, B<dgit pbuilder>, B<dgit
+cowbuilder>, B<dgit push-source>, and B<dgit push> as detailed in
+dgit(1).  If any command fails, dgit will provide a carefully-worded
+error message explaining what you should do.  If it's not clear, file
+a bug against dgit.  Remember to pass I<--new> for the first upload.
+
+If you want to upload with git-debpush(1), for the first upload you
+should pass the B<--quilt=smash> quilt mode option (see
+git-debpush(1)).
 
-As an alternative to B<dgit build> and friends, you can use a tool
-like gitpkg(1).  This works because like dgit, gitpkg(1) enforces that
-HEAD has exactly the contents of the source package.  gitpkg(1) is
-highly configurable, and one dgit user reports using it to produce and
-test multiple source packages, from different branches corresponding
-to each of the current Debian suites.
+As another alternative to B<dgit build> and friends, you can use a
+tool like gitpkg(1).  This works because like dgit, gitpkg(1) enforces
+that HEAD has exactly the contents of the source package.  gitpkg(1)
+is highly configurable, and one dgit user reports using it to produce
+and test multiple source packages, from different branches
+corresponding to each of the current Debian suites.
 
 If you want to skip dgit's checks while iterating on a problem with
 the package build (for example, you don't want to commit your changes
@@ -331,22 +367,26 @@ to git), you can just run dpkg-buildpackage(1) or debuild(1) instead.
 
 =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
 tarballs", above.  You will also need your upstream branch.  Above, we
-pushed this to B<alioth.debian.org>.  You will need to clone or fetch
+pushed this to B<salsa.debian.org>.  You will need to clone or fetch
 from there, instead of relying on B<dgit clone>/B<dgit fetch> alone.
 
 Then, either
 
 =over 4
 
-    % gbp import-orig --no-merge ../foo_1.2.3.orig.tar.xz
+    % gbp import-orig ../foo_1.2.3.orig.tar.xz
 
 =back
 
@@ -354,10 +394,12 @@ or if you have a working watch file
 
 =over 4
 
-    % gbp import-orig --no-merge --uscan
+    % gbp import-orig --uscan
 
 =back
 
+In the following, replace I<1.2.3> with I<upstream/1.2.3>.
+
 =head2 Reviewing & merging the release
 
 It's a good idea to preview the merge of the new upstream release.
@@ -366,7 +408,7 @@ accounting for in your copyright file:
 
 =over 4
 
-    % git diff --stat master..1.2.3 -- . ':!debian'
+    % git diff --name-status --diff-filter=ADR master..1.2.3 -- . ':!debian'
 
 =back