summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2013-08-17 17:22:37 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2013-08-17 17:22:37 +0100
commit42a4e12f8b0511c915d1f3e174ce724642605c81 (patch)
tree45f2e8e14537f06d5915f5dcc7be5f082b9c2eb3
parent916da427127794108f20f80d5018493002b81876 (diff)
deprecate 3.0 (quilt)
-rwxr-xr-xdgit13
-rw-r--r--dgit.122
2 files changed, 29 insertions, 6 deletions
diff --git a/dgit b/dgit
index 487c1be..9573adf 100755
--- a/dgit
+++ b/dgit
@@ -555,9 +555,9 @@ sub check_not_dirty () {
runcmd @git, qw(diff --quiet);
}
-sub commit_quilty_patch () {
+sub commit_quilty_patch ($) {
+ my ($vsn) = @_;
my $output = cmdoutput @git, qw(status --porcelain);
- my $vsn = $dsc->{Version};
my %fixups = map {$_=>1}
(".pc/debian-changes-$vsn/","debian/patches/debian-changes-$vsn");
my @files;
@@ -585,7 +585,7 @@ sub dopush () {
print DEBUG "format $dsc->{Format}\n";
if ($dsc->{Format} eq '3.0 (quilt)') {
print "Format \`$dsc->{Format}', urgh\n";
- commit_quilty_patch();
+ commit_quilty_patch($dsc->{Version});
}
check_not_dirty();
prep_ud();
@@ -735,6 +735,11 @@ sub cmd_build {
@ARGV;
}
+sub cmd_quilt_fixup {
+ my $clogp = parsechangelog();
+ commit_quilty_patch($clogp->{Version});
+}
+
sub parseopts () {
my $om;
while (@ARGV) {
@@ -784,5 +789,5 @@ parseopts();
print STDERR "DRY RUN ONLY\n" if $dryrun;
die unless @ARGV;
my $cmd = shift @ARGV;
-
+$cmd =~ y/-/_/;
{ no strict qw(refs); &{"cmd_$cmd"}(); }
diff --git a/dgit.1 b/dgit.1
index 8d4d201..c9705c7 100644
--- a/dgit.1
+++ b/dgit.1
@@ -55,7 +55,14 @@ making a signed git tag, and signing the files to be uploaded to the
archive. (For a format `3.0 (quilt)' source package, dgit push
may also have to make a commit on your current branch to contain
quilt metadata. It will do this automatically.)
-.BR "debian/rules clean" .
+
+.B dgit quilt-fixup
+looks to see if there is quilt patch metadata left over by dpkg-source
+-b, and if so makes a git commit of it. This is normally done
+automatically by dgit push. dgit quilt-fixup takes no additional
+arguments. Note that it will only process a patch generated by
+dpkg-source for the most recent version (according to the
+debia/changelog).
.SH WORKFLOW - SIMPLE
It is always possible with dgit to clone or fetch a package, make
changes in git (using git-commit) on the suite branch
@@ -180,7 +187,9 @@ represented in the single Debian patch.
Secondly, you can regard your quiltish patch stack in the archive as
primary. You will have to use other tools besides dgit to import and
-export this patch stack. See also the BUGS section.
+export this patch stack. For `3.0 (quilt)' packages, dgit has to do
+more work to work around quilt braindamage. See also the BUGS
+section. We recommend against the use of `3.0 (quilt)'.
.SH OPTIONS
.TP
.BR --dry-run | -n
@@ -318,6 +327,15 @@ the .orig.tar.gz could be transported via the git repo as git tags.
Doing this is made more complicated by the possibility of a `3.0
(quilt)' package with multiple .orig tarballs.
+`3.0 (quilt)' packages have an additional difficulty: if these are
+edited in the most normal way, and then fed to dpkg-buildpackage,
+dpkg-source will add extra quilt patch metadata to the source tree
+during the source package build. This extra metadata is then of
+course not included in the git history. So dgit push needs to commit
+it for you, to make sure that the git history and archive contents are
+identical. That this is necessary is a bug in the `3.0 (quilt)'
+format.
+
The error messages are often unhelpfully terse and tend to refer to
line numbers in dgit.