X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=dgit-maint-debrebase.7.pod;h=b3700a467e56463c302cf0173b0673865650a694;hb=970decb0d2efce837ee25179f6307b4290119d21;hp=d75a6586d70dae40c4cdf3e353c40f84102fe50e;hpb=33ebf9c6528255913f50def49c8b3b4291609c0d;p=dgit.git
diff --git a/dgit-maint-debrebase.7.pod b/dgit-maint-debrebase.7.pod
index d75a6586..b3700a46 100644
--- a/dgit-maint-debrebase.7.pod
+++ b/dgit-maint-debrebase.7.pod
@@ -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 BI, where I is
+the upstream version you plan to put in I. The
+B 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
@@ -145,64 +171,66 @@ begin
% mkdir foo
% cd foo
% git init
+ % git checkout -b upstream
+ % gbp import-orig \
+ --upstream-branch=upstream --debian-branch=master \
+ --upstream-tag='upstream/%(version)s' \
+ --sign-tags --no-pristine-tar \
+ ../foo_1.2.2.orig.tar.xz
+ % git branch -f upstream
=back
-Now create I:
+This should leave you on the master branch. Next, our upstream branch
+cannot be pushed to B, but since we will need it whenever
+we import a new upstream version, we must push it somewhere. The
+usual choice is B:
+
+=over 4
+
+ % git remote add -f origin salsa.debian.org:Debian/foo.git
+ % git push --follow-tags -u origin master upstream
+
+=back
+
+You are now ready to proceed as above, making commits to the
+I directory and to the upstream source. As above, for
+technical reasons, B In other words, make a commit introducing I before
+patching the upstream source.
+
+A convenient way to ensure this requirement is satisfied is to start
+by creating I:
=over 4
[DEFAULT]
upstream-branch = upstream
debian-branch = master
- upstream-tag = %(version)s
+ upstream-tag = upstream/%(version)s
sign-tags = True
pristine-tar = False
pristine-tar-commit = False
[import-orig]
- merge-mode = merge
+ merge = False
=back
-gbp-import-orig(1) requires a pre-existing upstream branch:
+and commit that:
=over 4
% git add debian/gbp.conf && git commit -m "create gbp.conf"
- % git checkout --orphan upstream
- % git rm -rf .
- % git commit --allow-empty -m "initial, empty branch for upstream source"
- % git checkout -f master
=back
-Then we can import the upstream version:
-
-=over 4
-
- % gbp import-orig --merge-mode=replace ../foo_1.2.2.orig.tar.xz
-
-=back
-
-Our upstream branch cannot be pushed to B, but since we
-will need it whenever we import a new upstream version, we must push
-it somewhere. The usual choice is B:
-
-=over 4
-
- % git remote add -f origin salsa.debian.org:Debian/foo.git
- % git push --follow-tags -u origin master upstream
-
-=back
-
-You are now ready to proceed as above, making commits to the
-I directory and to the upstream source. As above, for
-technical reasons, B In other words, make a commit introducing I before
-patching the upstream source.
+Note that we couldn't create I before now for the
+same technical reasons which require our first commit to introduce
+I without patching the upstream source. That's why we had to
+pass a lot of options to our first call to gbp-import-orig(1).
=head1 CONVERTING AN EXISTING PACKAGE
@@ -327,10 +355,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 from "When upstream releases only
@@ -342,7 +374,7 @@ 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
@@ -350,7 +382,7 @@ or if you have a working watch file
=over 4
- % gbp import-orig --no-merge --uscan
+ % gbp import-orig --uscan
=back
@@ -454,6 +486,10 @@ fast-forwarding from the history on B. In such cases you
will have to pass I<--overwrite> to dgit. git-debrebase will normally
tell you if this will be needed.
+If you want to upload with git-debpush(1), for the first upload you
+should pass the B<--quilt=linear> quilt mode option (see
+git-debpush(1)).
+
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: