>From 0822d0e93c9676b2ea202e4c81ca387691c4d57b Mon Sep 17 00:00:00 2001
From: Richard Hartmann <richih@debian.org>
Date: Sat, 31 Aug 2013 12:40:59 +0200
Subject: [PATCH] dgit: Formatting cleanups

This commit contains no functional changes; it is purely janitorial.

* Remove trailing whitespace at EOL
* Use tabs for indentation
* Use whitespace for formatting/alignment
* Align hashes, multi-line statements, etc
---
 dgit | 1671 +++++++++++++++++++++++++++++++++---------------------------------
 1 file changed, 834 insertions(+), 837 deletions(-)

diff --git a/dgit b/dgit
index 46099d2..51834a6 100755
--- a/dgit
+++ b/dgit
@@ -55,8 +55,8 @@ our (@mergechanges) = qw(mergechanges -f);
 our (@changesopts) = ('');
 
 our %opts_opt_map = ('dget' => \@dget,
-		     'dput' => \@dput,
-		     'debsign' => \@debsign,
+                     'dput' => \@dput,
+                     'debsign' => \@debsign,
                      'sbuild' => \@sbuild,
                      'dpkg-source' => \@dpkgsource,
                      'dpkg-buildpackage' => \@dpkgbuildpackage,
@@ -79,21 +79,21 @@ my $lbranch_re = '^refs/heads/'.$branchprefix.'/([^/.]+)$';
 sub lref () { return "refs/heads/".lbranch(); }
 sub lrref () { return "refs/remotes/$remotename/$branchprefix/$csuite"; }
 sub rrref () { return "refs/$branchprefix/$csuite"; }
-sub debiantag ($) { 
-    my ($v) = @_;
-    $v =~ y/~:/_%/;
-    return "debian/$v";
+sub debiantag ($) {
+	my ($v) = @_;
+	$v =~ y/~:/_%/;
+	return "debian/$v";
 }
 
 sub stripepoch ($) {
-    my ($vsn) = @_;
-    $vsn =~ s/^\d+\://;
-    return $vsn;
+	my ($vsn) = @_;
+	$vsn =~ s/^\d+\://;
+	return $vsn;
 }
 
 sub dscfn ($) {
-    my ($vsn) = @_;
-    return "${package}_".(stripepoch $vsn).".dsc";
+	my ($vsn) = @_;
+	return "${package}_".(stripepoch $vsn).".dsc";
 }
 
 sub changesopts () { return @changesopts[1..$#changesopts]; }
@@ -105,106 +105,106 @@ sub fail { die "$us: @_\n"; }
 sub badcfg { print STDERR "$us: invalid configuration: @_\n"; exit 12; }
 
 sub no_such_package () {
-    print STDERR "$us: package $package does not exist in suite $isuite\n";
-    exit 4;
+	print STDERR "$us: package $package does not exist in suite $isuite\n";
+	exit 4;
 }
 
 sub fetchspec () {
-    local $csuite = '*';
-    return  "+".rrref().":".lrref();
+	local $csuite = '*';
+	return  "+".rrref().":".lrref();
 }
 
 our $ua;
 
 sub url_get {
-    if (!$ua) {
-	$ua = LWP::UserAgent->new();
-	$ua->env_proxy;
-    }
-    my $what = $_[$#_];
-    print "downloading $what...\n";
-    my $r = $ua->get(@_) or die $!;
-    return undef if $r->code == 404;
-    $r->is_success or fail "failed to fetch $what: ".$r->status_line;
-    return $r->decoded_content();
+	if (!$ua) {
+		$ua = LWP::UserAgent->new();
+		$ua->env_proxy;
+	}
+	my $what = $_[$#_];
+	print "downloading $what...\n";
+	my $r = $ua->get(@_) or die $!;
+	return undef if $r->code == 404;
+	$r->is_success or fail "failed to fetch $what: ".$r->status_line;
+	return $r->decoded_content();
 }
 
 our ($dscdata,$dscurl,$dsc);
 
 sub printcmd {
-    my $fh = shift @_;
-    my $intro = shift @_;
-    print $fh $intro or die $!;
-    local $_;
-    foreach my $a (@_) {
-	$_ = $a;
-	if (s{['\\]}{\\$&}g || m{\s} || m{[^-_./0-9a-z]}i) {
-	    print $fh " '$_'" or die $!;
-	} else {
-	    print $fh " $_" or die $!;
+	my $fh = shift @_;
+	my $intro = shift @_;
+	print $fh $intro or die $!;
+	local $_;
+	foreach my $a (@_) {
+		$_ = $a;
+		if (s{['\\]}{\\$&}g || m{\s} || m{[^-_./0-9a-z]}i) {
+			print $fh " '$_'" or die $!;
+		} else {
+			print $fh " $_" or die $!;
+		}
 	}
-    }
-    print $fh "\n" or die $!;
+	print $fh "\n" or die $!;
 }
 
 sub failedcmd {
-    { local ($!); printcmd \*STDERR, "$_[0]: failed command:", @_ or die $!; };
-    if ($!) {
-	fail "failed to fork/exec: $!";
-    } elsif (!($? & 0xff)) {
-	fail "subprocess failed with error exit status ".($?>>8);
-    } elsif ($?) {
-	fail "subprocess crashed (wait status $?)";
-    } else {
-	fail "subprocess produced invalid output";
-    }
+	{ local ($!); printcmd \*STDERR, "$_[0]: failed command:", @_ or die $!; };
+	if ($!) {
+		fail "failed to fork/exec: $!";
+	} elsif (!($? & 0xff)) {
+		fail "subprocess failed with error exit status ".($?>>8);
+	} elsif ($?) {
+		fail "subprocess crashed (wait status $?)";
+	} else {
+		fail "subprocess produced invalid output";
+	}
 }
 
 sub runcmd {
-    printcmd(\*DEBUG,"+",@_) if $debug>0;
-    $!=0; $?=0;
-    failedcmd @_ if system @_;
+	printcmd(\*DEBUG,"+",@_) if $debug>0;
+	$!=0; $?=0;
+	failedcmd @_ if system @_;
 }
 
 sub printdone {
-    if (!$dryrun) {
-	print "dgit ok: @_\n";
-    } else {
-	print "would be ok: @_ (but dry run only)\n";
-    }
+	if (!$dryrun) {
+		print "dgit ok: @_\n";
+	} else {
+		print "would be ok: @_ (but dry run only)\n";
+	}
 }
 
 sub cmdoutput_errok {
-    die Dumper(\@_)." ?" if grep { !defined } @_;
-    printcmd(\*DEBUG,"|",@_) if $debug>0;
-    open P, "-|", @_ or die $!;
-    my $d;
-    $!=0; $?=0;
-    { local $/ = undef; $d = <P>; }
-    die $! if P->error;
-    if (!close P) { print DEBUG "=>!$?\n" if $debug>0; return undef; }
-    chomp $d;
-    $d =~ m/^.*/;
-    print DEBUG "=> \`$&'",(length $' ? '...' : ''),"\n" if $debug>0; #';
-    return $d;
+	die Dumper(\@_)." ?" if grep { !defined } @_;
+	printcmd(\*DEBUG,"|",@_) if $debug>0;
+	open P, "-|", @_ or die $!;
+	my $d;
+	$!=0; $?=0;
+	{ local $/ = undef; $d = <P>; }
+	die $! if P->error;
+	if (!close P) { print DEBUG "=>!$?\n" if $debug>0; return undef; }
+	chomp $d;
+	$d =~ m/^.*/;
+	print DEBUG "=> \`$&'",(length $' ? '...' : ''),"\n" if $debug>0; #';
+	return $d;
 }
 
 sub cmdoutput {
-    my $d = cmdoutput_errok @_;
-    defined $d or failedcmd @_;
-    return $d;
+	my $d = cmdoutput_errok @_;
+	defined $d or failedcmd @_;
+	return $d;
 }
 
 sub dryrun_report {
-    printcmd(\*STDOUT,"#",@_);
+	printcmd(\*STDOUT,"#",@_);
 }
 
 sub runcmd_ordryrun {
-    if (!$dryrun) {
-	runcmd @_;
-    } else {
-	dryrun_report @_;
-    }
+	if (!$dryrun) {
+		runcmd @_;
+	} else {
+		dryrun_report @_;
+	}
 }
 
 our $helpmsg = <<END;
@@ -226,261 +226,258 @@ Perhaps the upload is stuck in incoming.  Using the version from git.
 END
 
 sub badusage {
-    print STDERR "$us: @_\n", $helpmsg or die $!;
-    exit 8;
+	print STDERR "$us: @_\n", $helpmsg or die $!;
+	exit 8;
 }
 
 sub helponly () {
-    print $helpmsg or die $!;
-    exit 0;
+	print $helpmsg or die $!;
+	exit 0;
 }
 
 our %defcfg = ('dgit.default.distro' => 'debian',
-	       'dgit.default.username' => '',
-	       'dgit.default.archive-query-default-component' => 'main',
-	       'dgit.default.ssh' => 'ssh',
-	       'dgit-distro.debian.git-host' => 'git.debian.org',
-	       'dgit-distro.debian.git-proto' => 'git+ssh://',
-	       'dgit-distro.debian.git-path' => '/git/dgit-repos/repos',
-	       'dgit-distro.debian.git-check' => 'ssh-cmd',
-	       'dgit-distro.debian.git-create' => 'ssh-cmd',
-	       'dgit-distro.debian.sshdakls-host' => 'coccia.debian.org',
-	       'dgit-distro.debian.sshdakls-dir' =>
-	           '/srv/ftp-master.debian.org/ftp/dists',
-	       'dgit-distro.debian.upload-host' => 'ftp-master', # for dput
-	       'dgit-distro.debian.mirror' => 'http://ftp.debian.org/debian/');
+               'dgit.default.username' => '',
+               'dgit.default.archive-query-default-component' => 'main',
+               'dgit.default.ssh' => 'ssh',
+               'dgit-distro.debian.git-host' => 'git.debian.org',
+               'dgit-distro.debian.git-proto' => 'git+ssh://',
+               'dgit-distro.debian.git-path' => '/git/dgit-repos/repos',
+               'dgit-distro.debian.git-check' => 'ssh-cmd',
+               'dgit-distro.debian.git-create' => 'ssh-cmd',
+               'dgit-distro.debian.sshdakls-host' => 'coccia.debian.org',
+               'dgit-distro.debian.sshdakls-dir' =>
+                   '/srv/ftp-master.debian.org/ftp/dists',
+               'dgit-distro.debian.upload-host' => 'ftp-master', # for dput
+               'dgit-distro.debian.mirror' => 'http://ftp.debian.org/debian/');
 
 sub cfg {
-    foreach my $c (@_) {
-	return undef if $c =~ /RETURN-UNDEF/;
-	my @cmd = (@git, qw(config --), $c);
-	my $v;
-	{
-	    local ($debug) = $debug-1;
-	    $v = cmdoutput_errok @cmd;
-	};
-	if ($?==0) {
-	    return $v;
-	} elsif ($?!=256) {
-	    failedcmd @cmd;
+	foreach my $c (@_) {
+		return undef if $c =~ /RETURN-UNDEF/;
+		my @cmd = (@git, qw(config --), $c);
+		my $v;
+		{
+			local ($debug) = $debug-1;
+			$v = cmdoutput_errok @cmd;
+		};
+		if ($?==0) {
+			return $v;
+		} elsif ($?!=256) {
+			failedcmd @cmd;
+		}
+		my $dv = $defcfg{$c};
+		return $dv if defined $dv;
 	}
-	my $dv = $defcfg{$c};
-	return $dv if defined $dv;
-    }
-    badcfg "need value for one of: @_";
+	badcfg "need value for one of: @_";
 }
 
 sub access_distro () {
-    return cfg("dgit-suite.$isuite.distro",
-	       "dgit.default.distro");
+	return cfg("dgit-suite.$isuite.distro",
+	           "dgit.default.distro");
 }
 
 sub access_cfg (@) {
-    my (@keys) = @_;
-    my $distro = $idistro || access_distro();
-    my $value = cfg(map { ("dgit-distro.$distro.$_",
-			   "dgit.default.$_") } @keys);
-    return $value;
+	my (@keys) = @_;
+	my $distro = $idistro || access_distro();
+	my $value = cfg(map { ("dgit-distro.$distro.$_",
+	                       "dgit.default.$_") } @keys);
+	return $value;
 }
 
 sub access_someuserhost ($) {
-    my ($some) = @_;
-    my $user = access_cfg("$some-user",'username');
-    my $host = access_cfg("$some-host");
-    return length($user) ? "$user\@$host" : $host;
+	my ($some) = @_;
+	my $user = access_cfg("$some-user",'username');
+	my $host = access_cfg("$some-host");
+	return length($user) ? "$user\@$host" : $host;
 }
 
 sub access_gituserhost () {
-    return access_someuserhost('git');
+	return access_someuserhost('git');
 }
 
 sub access_giturl () {
-    my $url = access_cfg('git-url','RETURN-UNDEF');
-    if (!defined $url) {
-	$url =
-	    access_cfg('git-proto').
-	    access_gituserhost().
-	    access_cfg('git-path');
-    }
-    return "$url/$package.git";
-}	       
+	my $url = access_cfg('git-url','RETURN-UNDEF');
+	if (!defined $url) {
+		$url = access_cfg('git-proto').
+		       access_gituserhost().
+		       access_cfg('git-path');
+	}
+	return "$url/$package.git";
+}
 
 sub parsecontrolfh ($$@) {
-    my ($fh, $desc, @opts) = @_;
-    my %opts = ('name' => $desc, @opts);
-    my $c = Dpkg::Control::Hash->new(%opts);
-    $c->parse($fh) or die "parsing of $desc failed";
-    return $c;
+	my ($fh, $desc, @opts) = @_;
+	my %opts = ('name' => $desc, @opts);
+	my $c = Dpkg::Control::Hash->new(%opts);
+	$c->parse($fh) or die "parsing of $desc failed";
+	return $c;
 }
 
 sub parsecontrol {
-    my ($file, $desc) = @_;
-    my $fh = new IO::Handle;
-    open $fh, '<', $file or die "$file: $!";
-    my $c = parsecontrolfh($fh,$desc);
-    $fh->error and die $!;
-    close $fh;
-    return $c;
+	my ($file, $desc) = @_;
+	my $fh = new IO::Handle;
+	open $fh, '<', $file or die "$file: $!";
+	my $c = parsecontrolfh($fh,$desc);
+	$fh->error and die $!;
+	close $fh;
+	return $c;
 }
 
 sub getfield ($$) {
-    my ($dctrl,$field) = @_;
-    my $v = $dctrl->{$field};
-    return $v if defined $v;
-    fail "missing field $field in ".$v->get_option('name');
+	my ($dctrl,$field) = @_;
+	my $v = $dctrl->{$field};
+	return $v if defined $v;
+	fail "missing field $field in ".$v->get_option('name');
 }
 
 sub parsechangelog {
-    my $c = Dpkg::Control::Hash->new();
-    my $p = new IO::Handle;
-    my @cmd = (qw(dpkg-parsechangelog));
-    open $p, '-|', @cmd or die $!;
-    $c->parse($p);
-    $?=0; $!=0; close $p or failedcmd @cmd;
-    return $c;
+	my $c = Dpkg::Control::Hash->new();
+	my $p = new IO::Handle;
+	my @cmd = (qw(dpkg-parsechangelog));
+	open $p, '-|', @cmd or die $!;
+	$c->parse($p);
+	$?=0; $!=0; close $p or failedcmd @cmd;
+	return $c;
 }
 
 our %rmad;
 
 sub archive_query ($) {
-    my ($method) = @_;
-    my $query = access_cfg('archive-query','RETURN-UNDEF');
-    if (!defined $query) {
-	my $distro = access_distro();
-	if ($distro eq 'debian') {
-	    $query = "sshdakls:".
-		access_someuserhost('sshdakls').':'.
-	        access_cfg('sshdakls-dir');
-	} else {
-	    $query = "madison:$distro";
+	my ($method) = @_;
+	my $query = access_cfg('archive-query','RETURN-UNDEF');
+	if (!defined $query) {
+		my $distro = access_distro();
+		if ($distro eq 'debian') {
+			$query = "sshdakls:".
+		             access_someuserhost('sshdakls').':'.
+		             access_cfg('sshdakls-dir');
+		} else {
+			$query = "madison:$distro";
+		}
 	}
-    }
-    $query =~ s/^(\w+):// or badcfg "invalid archive-query method \`$query'";
-    my $proto = $1;
-    my $data = $'; #';
-    { no strict qw(refs); &{"${method}_${proto}"}($proto,$data); }
+	$query =~ s/^(\w+):// or badcfg "invalid archive-query method \`$query'";
+	my $proto = $1;
+	my $data = $'; #';
+	{ no strict qw(refs); &{"${method}_${proto}"}($proto,$data); }
 }
 
 sub archive_query_madison ($$) {
-    my ($proto,$data) = @_;
-    die unless $proto eq 'madison';
-    $rmad{$package} ||= cmdoutput
+	my ($proto,$data) = @_;
+	die unless $proto eq 'madison';
+	$rmad{$package} ||= cmdoutput
 	qw(rmadison -asource),"-s$isuite","-u$data",$package;
-    my $rmad = $rmad{$package};
-    return madison_parse($rmad);
+	my $rmad = $rmad{$package};
+	return madison_parse($rmad);
 }
 
 sub archive_query_sshdakls ($$) {
-    my ($proto,$data) = @_;
-    $data =~ s/:.*// or badcfg "invalid sshdakls method string \`$data'";
-    my $dakls = cmdoutput
+	my ($proto,$data) = @_;
+	$data =~ s/:.*// or badcfg "invalid sshdakls method string \`$data'";
+	my $dakls = cmdoutput
 	access_cfg('ssh'), $data, qw(dak ls -asource),"-s$isuite",$package;
-    return madison_parse($dakls);
+	return madison_parse($dakls);
 }
 
 sub canonicalise_suite_sshdakls ($$) {
-    my ($proto,$data) = @_;
-    $data =~ m/:/ or badcfg "invalid sshdakls method string \`$data'";
-    my @cmd =
-	(access_cfg('ssh'), $`,
-	 "set -e; cd $';".
-	 " if test -h $isuite; then readlink $isuite; exit 0; fi;".
-	 " if test -d $isuite; then echo $isuite; exit 0; fi;".
-	 " exit 1");
-    my $dakls = cmdoutput @cmd;
-    failedcmd @cmd unless $dakls =~ m/^\w/;
-    return $dakls;
+	my ($proto,$data) = @_;
+	$data =~ m/:/ or badcfg "invalid sshdakls method string \`$data'";
+	my @cmd = (access_cfg('ssh'), $`,
+	          "set -e; cd $';".
+	          " if test -h $isuite; then readlink $isuite; exit 0; fi;".
+	          " if test -d $isuite; then echo $isuite; exit 0; fi;".
+	          " exit 1");
+	my $dakls = cmdoutput @cmd;
+	failedcmd @cmd unless $dakls =~ m/^\w/;
+	return $dakls;
 }
 
 sub madison_parse ($) {
-    my ($rmad) = @_;
-    my @out;
-    foreach my $l (split /\n/, $rmad) {
-	$l =~ m{^ \s*( [^ \t|]+ )\s* \|
-                  \s*( [^ \t|]+ )\s* \|
-                  \s*( [^ \t|/]+ )(?:/([^ \t|/]+))? \s* \|
-                  \s*( [^ \t|]+ )\s* }x or die "$rmad $?";
-	$1 eq $package or die "$rmad $package ?";
-	my $vsn = $2;
-	my $newsuite = $3;
-	my $component;
-	if (defined $4) {
-	    $component = $4;
-	} else {
-	    $component = access_cfg('archive-query-default-component');
+	my ($rmad) = @_;
+	my @out;
+	foreach my $l (split /\n/, $rmad) {
+		$l =~ m{^ \s*( [^ \t|]+ )\s* \|
+		          \s*( [^ \t|]+ )\s* \|
+		          \s*( [^ \t|/]+ )(?:/([^ \t|/]+))? \s* \|
+		          \s*( [^ \t|]+ )\s* }x or die "$rmad $?";
+		$1 eq $package or die "$rmad $package ?";
+		my $vsn = $2;
+		my $newsuite = $3;
+		my $component;
+		if (defined $4) {
+			$component = $4;
+		} else {
+			$component = access_cfg('archive-query-default-component');
+		}
+		$5 eq 'source' or die "$rmad ?";
+		my $prefix = substr($package, 0, $package =~ m/^l/ ? 4 : 1);
+		my $subpath = "/pool/$component/$prefix/$package/".dscfn($vsn);
+		push @out, [$vsn,$subpath,$newsuite];
 	}
-	$5 eq 'source' or die "$rmad ?";
-	my $prefix = substr($package, 0, $package =~ m/^l/ ? 4 : 1);
-	my $subpath = "/pool/$component/$prefix/$package/".dscfn($vsn);
-	push @out, [$vsn,$subpath,$newsuite];
-    }
-    return sort { -version_compare_string($a->[0],$b->[0]); } @out;
+	return sort { -version_compare_string($a->[0],$b->[0]); } @out;
 }
 
 sub canonicalise_suite_madison ($$) {
-    my @r = archive_query_madison($_[0],$_[1]);
-    @r or fail
+	my @r = archive_query_madison($_[0],$_[1]);
+	@r or fail
 	"unable to canonicalise suite using package $package".
 	" which does not appear to exist in suite $isuite;".
 	" --existing-package may help";
-    return $r[0][2];
+	return $r[0][2];
 }
 
 sub canonicalise_suite () {
-    return if defined $csuite;
-    fail "cannot operate on $isuite suite" if $isuite eq 'UNRELEASED';
-    $csuite = archive_query('canonicalise_suite');
-    if ($isuite ne $csuite) {
-	# madison canonicalises for us
-	print "canonical suite name for $isuite is $csuite\n";
-    }
+	return if defined $csuite;
+	fail "cannot operate on $isuite suite" if $isuite eq 'UNRELEASED';
+	$csuite = archive_query('canonicalise_suite');
+	if ($isuite ne $csuite) {
+		# madison canonicalises for us
+		print "canonical suite name for $isuite is $csuite\n";
+	}
 }
 
 sub get_archive_dsc () {
-    canonicalise_suite();
-    my @vsns = archive_query('archive_query');
-    foreach my $vinfo (@vsns) {
-	my ($vsn,$subpath) = @$vinfo;
-	$dscurl = access_cfg('mirror').$subpath;
-	$dscdata = url_get($dscurl);
-	next unless defined $dscdata;
-	my $dscfh = new IO::File \$dscdata, '<' or die $!;
-	print DEBUG Dumper($dscdata) if $debug>1;
-	$dsc = parsecontrolfh($dscfh,$dscurl, allow_pgp=>1);
-	print DEBUG Dumper($dsc) if $debug>1;
-	my $fmt = getfield $dsc, 'Format';
-	fail "unsupported source format $fmt, sorry" unless $format_ok{$fmt};
-	return $dsc;
-    }
-    return undef;
+	canonicalise_suite();
+	my @vsns = archive_query('archive_query');
+	foreach my $vinfo (@vsns) {
+		my ($vsn,$subpath) = @$vinfo;
+		$dscurl = access_cfg('mirror').$subpath;
+		$dscdata = url_get($dscurl);
+		next unless defined $dscdata;
+		my $dscfh = new IO::File \$dscdata, '<' or die $!;
+		print DEBUG Dumper($dscdata) if $debug>1;
+		$dsc = parsecontrolfh($dscfh,$dscurl, allow_pgp=>1);
+		print DEBUG Dumper($dsc) if $debug>1;
+		my $fmt = getfield $dsc, 'Format';
+		fail "unsupported source format $fmt, sorry" unless $format_ok{$fmt};
+		return $dsc;
+	}
+	return undef;
 }
 
 sub check_for_git () {
-    # returns 0 or 1
-    my $how = access_cfg('git-check');
-    if ($how eq 'ssh-cmd') {
-	my @cmd =
-	    (access_cfg('ssh'),access_gituserhost(),
-	     " set -e; cd ".access_cfg('git-path').";".
-	     " if test -d $package.git; then echo 1; else echo 0; fi");
-	my $r= cmdoutput @cmd;
-	failedcmd @cmd unless $r =~ m/^[01]$/;
-	return $r+0;
-    } else {
-	badcfg "unknown git-check \`$how'";
-    }
+	# returns 0 or 1
+	my $how = access_cfg('git-check');
+	if ($how eq 'ssh-cmd') {
+		my @cmd = (access_cfg('ssh'),access_gituserhost(),
+		          " set -e; cd ".access_cfg('git-path').";".
+		          " if test -d $package.git; then echo 1; else echo 0; fi");
+		my $r= cmdoutput @cmd;
+		failedcmd @cmd unless $r =~ m/^[01]$/;
+		return $r+0;
+	} else {
+		badcfg "unknown git-check \`$how'";
+	}
 }
 
 sub create_remote_git_repo () {
-    my $how = access_cfg('git-create');
-    if ($how eq 'ssh-cmd') {
-	runcmd_ordryrun
-	    (access_cfg('ssh'),access_gituserhost(),
-	     "set -e; cd ".access_cfg('git-path').";".
-	     " cp -a _template $package.git");
-    } else {
-	badcfg "unknown git-create \`$how'";
-    }
+	my $how = access_cfg('git-create');
+	if ($how eq 'ssh-cmd') {
+		runcmd_ordryrun
+		(access_cfg('ssh'),access_gituserhost(),
+		 "set -e; cd ".access_cfg('git-path').";".
+		 " cp -a _template $package.git");
+	} else {
+		badcfg "unknown git-create \`$how'";
+	}
 }
 
 our ($dsc_hash,$upload_hash);
@@ -488,100 +485,100 @@ our ($dsc_hash,$upload_hash);
 our $ud = '.git/dgit/unpack';
 
 sub prep_ud () {
-    rmtree($ud);
-    mkpath '.git/dgit';
-    mkdir $ud or die $!;
+	rmtree($ud);
+	mkpath '.git/dgit';
+	mkdir $ud or die $!;
 }
 
 sub mktree_in_ud_from_only_subdir () {
-    # changes into the subdir
-    my (@dirs) = <*/.>;
-    die unless @dirs==1;
-    $dirs[0] =~ m#^([^/]+)/\.$# or die;
-    my $dir = $1;
-    chdir $dir or die "$dir $!";
-    fail "source package contains .git directory" if stat '.git';
-    die $! unless $!==&ENOENT;
-    runcmd qw(git init -q);
-    rmtree('.git/objects');
-    symlink '../../../../objects','.git/objects' or die $!;
-    runcmd @git, qw(add -Af);
-    my $tree = cmdoutput @git, qw(write-tree);
-    $tree =~ m/^\w+$/ or die "$tree ?";
-    return ($tree,$dir);
+	# changes into the subdir
+	my (@dirs) = <*/.>;
+	die unless @dirs==1;
+	$dirs[0] =~ m#^([^/]+)/\.$# or die;
+	my $dir = $1;
+	chdir $dir or die "$dir $!";
+	fail "source package contains .git directory" if stat '.git';
+	die $! unless $!==&ENOENT;
+	runcmd qw(git init -q);
+	rmtree('.git/objects');
+	symlink '../../../../objects','.git/objects' or die $!;
+	runcmd @git, qw(add -Af);
+	my $tree = cmdoutput @git, qw(write-tree);
+	$tree =~ m/^\w+$/ or die "$tree ?";
+	return ($tree,$dir);
 }
 
 sub dsc_files_info () {
-    foreach my $csumi (['Checksums-Sha256','Digest::SHA', 'new(256)'],
-		       ['Checksums-Sha1',  'Digest::SHA', 'new(1)'],
-		       ['Files',           'Digest::MD5', 'new()']) {
-	my ($fname, $module, $method) = @$csumi;
-	my $field = $dsc->{$fname};
-	next unless defined $field;
-	eval "use $module; 1;" or die $@;
-	my @out;
-	foreach (split /\n/, $field) {
-	    next unless m/\S/;
-	    m/^(\w+) (\d+) (\S+)$/ or
-		fail "could not parse .dsc $fname line \`$_'";
-	    my $digester = eval "$module"."->$method;" or die $@;
-	    push @out, {
-		Hash => $1,
-		Bytes => $2,
-		Filename => $3,
-		Digester => $digester,
-	    };
+	foreach my $csumi (['Checksums-Sha256','Digest::SHA', 'new(256)'],
+	                   ['Checksums-Sha1',  'Digest::SHA', 'new(1)'],
+	                   ['Files',           'Digest::MD5', 'new()']) {
+		my ($fname, $module, $method) = @$csumi;
+		my $field = $dsc->{$fname};
+		next unless defined $field;
+		eval "use $module; 1;" or die $@;
+		my @out;
+		foreach (split /\n/, $field) {
+			next unless m/\S/;
+			m/^(\w+) (\d+) (\S+)$/ or
+			fail "could not parse .dsc $fname line \`$_'";
+			my $digester = eval "$module"."->$method;" or die $@;
+			push @out, {
+				Hash => $1,
+				Bytes => $2,
+				Filename => $3,
+				Digester => $digester,
+			};
+		}
+		return @out;
 	}
-	return @out;
-    }
-    fail "missing any supported Checksums-* or Files field in ".
+	fail "missing any supported Checksums-* or Files field in ".
 	$dsc->get_option('name');
 }
 
 sub dsc_files () {
-    map { $_->{Filename} } dsc_files_info();
+	map { $_->{Filename} } dsc_files_info();
 }
 
 sub is_orig_file ($) {
-    local ($_) = @_;
-    m/\.orig(?:-\w+)?\.tar\.\w+$/;
+	local ($_) = @_;
+	m/\.orig(?:-\w+)?\.tar\.\w+$/;
 }
 
 sub make_commit ($) {
-    my ($file) = @_;
-    return cmdoutput @git, qw(hash-object -w -t commit), $file;
+	my ($file) = @_;
+	return cmdoutput @git, qw(hash-object -w -t commit), $file;
 }
 
 sub generate_commit_from_dsc () {
-    prep_ud();
-    chdir $ud or die $!;
-    my @files;
-    foreach my $f (dsc_files()) {
-	die "$f ?" if $f =~ m#/|^\.|\.dsc$|\.tmp$#;
-	push @files, $f;
-	link "../../../$f", $f
-	    or $!==&ENOENT
-	    or die "$f $!";
-    }
-    runcmd @dget, qw(--), $dscurl;
-    foreach my $f (grep { is_orig_file($_) } @files) {
-	link $f, "../../../../$f"
-	    or $!==&EEXIST
-	    or die "$f $!";
-    }
-    my ($tree,$dir) = mktree_in_ud_from_only_subdir();
-    runcmd qw(sh -ec), 'dpkg-parsechangelog >../changelog.tmp';
-    my $clogp = parsecontrol('../changelog.tmp',"commit's changelog");
-    my $date = cmdoutput qw(date), '+%s %z', qw(-d), getfield($clogp,'Date');
-    my $author = getfield $clogp, 'Maintainer';
-    $author =~ s#,.*##ms;
-    my $authline = "$author $date";
-    $authline =~ m/^[^<>]+ \<\S+\> \d+ [-+]\d+$/ or
+	prep_ud();
+	chdir $ud or die $!;
+	my @files;
+	foreach my $f (dsc_files()) {
+		die "$f ?" if $f =~ m#/|^\.|\.dsc$|\.tmp$#;
+		push @files, $f;
+		link "../../../$f", $f
+			or $!==&ENOENT
+			or die "$f $!";
+	}
+	runcmd @dget, qw(--), $dscurl;
+	foreach my $f (grep { is_orig_file($_) } @files) {
+		link $f, "../../../../$f"
+			or $!==&EEXIST
+			or die "$f $!";
+	}
+	my ($tree,$dir) = mktree_in_ud_from_only_subdir();
+	runcmd qw(sh -ec), 'dpkg-parsechangelog >../changelog.tmp';
+	my $clogp = parsecontrol('../changelog.tmp',"commit's changelog");
+	my $date = cmdoutput qw(date), '+%s %z', qw(-d), getfield($clogp,'Date');
+	my $author = getfield $clogp, 'Maintainer';
+	$author =~ s#,.*##ms;
+	my $authline = "$author $date";
+	$authline =~ m/^[^<>]+ \<\S+\> \d+ [-+]\d+$/ or
 	fail "unexpected commit author line format \`$authline'".
-	    " (was generated from changelog Maintainer field)";
-    my $changes = getfield $clogp, 'Changes';
-    open C, ">../commit.tmp" or die $!;
-    print C <<END or die $!;
+	     " (was generated from changelog Maintainer field)";
+	my $changes = getfield $clogp, 'Changes';
+	open C, ">../commit.tmp" or die $!;
+	print C <<END or die $!;
 tree $tree
 author $authline
 committer $authline
@@ -590,21 +587,21 @@ $changes
 
 # imported from the archive
 END
-    close C or die $!;
-    my $outputhash = make_commit qw(../commit.tmp);
-    my $cversion = getfield $clogp, 'Version';
-    print "synthesised git commit from .dsc $cversion\n";
-    if ($upload_hash) {
-	runcmd @git, qw(reset --hard), $upload_hash;
-	runcmd qw(sh -ec), 'dpkg-parsechangelog >>../changelogold.tmp';
-	my $oldclogp = parsecontrol('../changelogold.tmp','previous changelog');
-	my $oversion = getfield $oldclogp, 'Version';
-	my $vcmp =
-	    version_compare_string($oversion, $cversion);
-	if ($vcmp < 0) {
-	    # git upload/ is earlier vsn than archive, use archive
-	    open C, ">../commit2.tmp" or die $!;
-	    print C <<END or die $!;
+	close C or die $!;
+	my $outputhash = make_commit qw(../commit.tmp);
+	my $cversion = getfield $clogp, 'Version';
+	print "synthesised git commit from .dsc $cversion\n";
+	if ($upload_hash) {
+		runcmd @git, qw(reset --hard), $upload_hash;
+		runcmd qw(sh -ec), 'dpkg-parsechangelog >>../changelogold.tmp';
+		my $oldclogp = parsecontrol('../changelogold.tmp','previous changelog');
+		my $oversion = getfield $oldclogp, 'Version';
+		my $vcmp =
+		version_compare_string($oversion, $cversion);
+		if ($vcmp < 0) {
+			# git upload/ is earlier vsn than archive, use archive
+			open C, ">../commit2.tmp" or die $!;
+			print C <<END or die $!;
 tree $tree
 parent $upload_hash
 parent $outputhash
@@ -613,45 +610,45 @@ committer $authline
 
 Record $package ($cversion) in archive suite $csuite
 END
-            $outputhash = make_commit qw(../commit2.tmp);
-	} elsif ($vcmp > 0) {
-	    print STDERR <<END or die $!;
+			$outputhash = make_commit qw(../commit2.tmp);
+		} elsif ($vcmp > 0) {
+		print STDERR <<END or die $!;
 
 Version actually in archive:    $cversion (older)
 Last allegedly pushed/uploaded: $oversion (newer or same)
 $later_warning_msg
 END
-            $outputhash = $upload_hash;
-        } else {
-	    $outputhash = $upload_hash;
+			$outputhash = $upload_hash;
+		} else {
+			$outputhash = $upload_hash;
+		}
 	}
-    }
-    chdir '../../../..' or die $!;
-    runcmd @git, qw(update-ref -m),"dgit fetch import $cversion",
-            'DGIT_ARCHIVE', $outputhash;
-    cmdoutput @git, qw(log -n2), $outputhash;
-    # ... gives git a chance to complain if our commit is malformed
-    rmtree($ud);
-    return $outputhash;
+	chdir '../../../..' or die $!;
+	runcmd @git, qw(update-ref -m),"dgit fetch import $cversion",
+	       'DGIT_ARCHIVE', $outputhash;
+	cmdoutput @git, qw(log -n2), $outputhash;
+	# ... gives git a chance to complain if our commit is malformed
+	rmtree($ud);
+	return $outputhash;
 }
 
 sub ensure_we_have_orig () {
-    foreach my $fi (dsc_files_info()) {
+	foreach my $fi (dsc_files_info()) {
 	my $f = $fi->{Filename};
 	next unless is_orig_file($f);
 	if (open F, "<", "../$f") {
-	    $fi->{Digester}->reset();
-	    $fi->{Digester}->addfile(*F);
-	    F->error and die $!;
-	    my $got = $fi->{Digester}->hexdigest();
-	    $got eq $fi->{Hash} or
+		$fi->{Digester}->reset();
+		$fi->{Digester}->addfile(*F);
+		F->error and die $!;
+		my $got = $fi->{Digester}->hexdigest();
+		$got eq $fi->{Hash} or
 		fail "existing file $f has hash $got but .dsc".
-		    " demands hash $fi->{Hash}".
-		    " (perhaps you should delete this file?)";
-	    print "using existing $f\n";
-	    next;
+		     " demands hash $fi->{Hash}".
+		     " (perhaps you should delete this file?)";
+		print "using existing $f\n";
+		next;
 	} else {
-	    die "$f $!" unless $!==&ENOENT;
+		die "$f $!" unless $!==&ENOENT;
 	}
 	my $origurl = $dscurl;
 	$origurl =~ s{/[^/]+$}{};
@@ -660,375 +657,375 @@ sub ensure_we_have_orig () {
 	die "$f ?" if $f =~ m#/#;
 	runcmd_ordryrun qw(sh -ec),'cd ..; exec "$@"','x',
 	    @dget,'--',$origurl;
-    }
+	}
 }
 
 sub rev_parse ($) {
-    return cmdoutput @git, qw(rev-parse), "$_[0]~0";
+	return cmdoutput @git, qw(rev-parse), "$_[0]~0";
 }
 
 sub is_fast_fwd ($$) {
-    my ($ancestor,$child) = @_;
-    my @cmd = (@git, qw(merge-base), $ancestor, $child);
-    my $mb = cmdoutput_errok @cmd;
-    if (defined $mb) {
-	return rev_parse($mb) eq rev_parse($ancestor);
-    } else {
-	$?==256 or failedcmd @cmd;
-	return 0;
-    }
+	my ($ancestor,$child) = @_;
+	my @cmd = (@git, qw(merge-base), $ancestor, $child);
+	my $mb = cmdoutput_errok @cmd;
+	if (defined $mb) {
+		return rev_parse($mb) eq rev_parse($ancestor);
+	} else {
+		$?==256 or failedcmd @cmd;
+		return 0;
+	}
 }
 
 sub git_fetch_us () {
-    runcmd_ordryrun @git, qw(fetch),access_giturl(),fetchspec();
+	runcmd_ordryrun @git, qw(fetch),access_giturl(),fetchspec();
 }
 
 sub fetch_from_archive () {
-    # ensures that lrref() is what is actually in the archive,
-    #  one way or another
-    get_archive_dsc() or return 0;
-    foreach my $field (@ourdscfield) {
-	$dsc_hash = $dsc->{$field};
-	last if defined $dsc_hash;
-    }
-    if (defined $dsc_hash) {
-	$dsc_hash =~ m/\w+/ or fail "invalid hash in .dsc \`$dsc_hash'";
-	$dsc_hash = $&;
-	print "last upload to archive specified git hash\n";
-    } else {
-	print "last upload to archive has NO git hash\n";
-    }
-
-    my $lrref_fn = ".git/".lrref();
-    if (open H, $lrref_fn) {
-	$upload_hash = <H>;
-	chomp $upload_hash;
-	die "$lrref_fn $upload_hash ?" unless $upload_hash =~ m/^\w+$/;
-    } elsif ($! == &ENOENT) {
-	$upload_hash = '';
-    } else {
-	die "$lrref_fn $!";
-    }
-    print DEBUG "previous reference hash=$upload_hash\n";
-    my $hash;
-    if (defined $dsc_hash) {
-	fail "missing git history even though dsc has hash -".
-	    " could not find commit $dsc_hash".
-	    " (should be in ".access_giturl()."#".rrref().")"
-	    unless $upload_hash;
-	$hash = $dsc_hash;
-	ensure_we_have_orig();
-	if ($dsc_hash eq $upload_hash) {
-	} elsif (is_fast_fwd($dsc_hash,$upload_hash)) {
-	    print STDERR <<END or die $!;
+	# ensures that lrref() is what is actually in the archive,
+	#  one way or another
+	get_archive_dsc() or return 0;
+	foreach my $field (@ourdscfield) {
+		$dsc_hash = $dsc->{$field};
+		last if defined $dsc_hash;
+	}
+	if (defined $dsc_hash) {
+		$dsc_hash =~ m/\w+/ or fail "invalid hash in .dsc \`$dsc_hash'";
+		$dsc_hash = $&;
+		print "last upload to archive specified git hash\n";
+	} else {
+		print "last upload to archive has NO git hash\n";
+	}
+
+	my $lrref_fn = ".git/".lrref();
+	if (open H, $lrref_fn) {
+		$upload_hash = <H>;
+		chomp $upload_hash;
+		die "$lrref_fn $upload_hash ?" unless $upload_hash =~ m/^\w+$/;
+	} elsif ($! == &ENOENT) {
+		$upload_hash = '';
+	} else {
+		die "$lrref_fn $!";
+	}
+	print DEBUG "previous reference hash=$upload_hash\n";
+	my $hash;
+	if (defined $dsc_hash) {
+		fail "missing git history even though dsc has hash -".
+		     " could not find commit $dsc_hash".
+		     " (should be in ".access_giturl()."#".rrref().")"
+		unless $upload_hash;
+		$hash = $dsc_hash;
+		ensure_we_have_orig();
+		if ($dsc_hash eq $upload_hash) {
+		} elsif (is_fast_fwd($dsc_hash,$upload_hash)) {
+			print STDERR <<END or die $!;
 
 Git commit in archive is behind the last version allegedly pushed/uploaded.
 Commit referred to by archive:  $dsc_hash
 Last allegedly pushed/uploaded: $upload_hash
 $later_warning_msg
 END
-	    $hash = $upload_hash;
+			$hash = $upload_hash;
+		} else {
+			fail "archive's .dsc refers to ".$dsc_hash.
+			" but this is an ancestor of ".$upload_hash;
+		}
 	} else {
-	    fail "archive's .dsc refers to ".$dsc_hash.
-		" but this is an ancestor of ".$upload_hash;
+		$hash = generate_commit_from_dsc();
 	}
-    } else {
-	$hash = generate_commit_from_dsc();
-    }
-    print DEBUG "current hash=$hash\n";
-    if ($upload_hash) {
-	fail "not fast forward on last upload branch!".
-	    " (archive's version left in DGIT_ARCHIVE)"
-	    unless is_fast_fwd($upload_hash, $hash);
-    }
-    if ($upload_hash ne $hash) {
-	my @upd_cmd = (@git, qw(update-ref -m), 'dgit fetch', lrref(), $hash);
-	if (!$dryrun) {
-	    cmdoutput @upd_cmd;
-	} else {
-	    dryrun_report @upd_cmd;
+	print DEBUG "current hash=$hash\n";
+	if ($upload_hash) {
+		fail "not fast forward on last upload branch!".
+		     " (archive's version left in DGIT_ARCHIVE)"
+		unless is_fast_fwd($upload_hash, $hash);
+	}
+	if ($upload_hash ne $hash) {
+		my @upd_cmd = (@git, qw(update-ref -m), 'dgit fetch', lrref(), $hash);
+		if (!$dryrun) {
+			cmdoutput @upd_cmd;
+		} else {
+			dryrun_report @upd_cmd;
+		}
 	}
-    }
-    return 1;
+	return 1;
 }
 
 sub clone ($) {
-    my ($dstdir) = @_;
-    canonicalise_suite();
-    badusage "dry run makes no sense with clone" if $dryrun;
-    mkdir $dstdir or die "$dstdir $!";
-    chdir "$dstdir" or die "$dstdir $!";
-    runcmd @git, qw(init -q);
-    runcmd @git, qw(config), "remote.$remotename.fetch", fetchspec();
-    open H, "> .git/HEAD" or die $!;
-    print H "ref: ".lref()."\n" or die $!;
-    close H or die $!;
-    runcmd @git, qw(remote add), 'origin', access_giturl();
-    if (check_for_git()) {
-	print "fetching existing git history\n";
-	git_fetch_us();
-	runcmd_ordryrun @git, qw(fetch origin);
-    } else {
-	print "starting new git history\n";
-    }
-    fetch_from_archive() or no_such_package;
-    runcmd @git, qw(reset --hard), lrref();
-    printdone "ready for work in $dstdir";
+	my ($dstdir) = @_;
+	canonicalise_suite();
+	badusage "dry run makes no sense with clone" if $dryrun;
+	mkdir $dstdir or die "$dstdir $!";
+	chdir "$dstdir" or die "$dstdir $!";
+	runcmd @git, qw(init -q);
+	runcmd @git, qw(config), "remote.$remotename.fetch", fetchspec();
+	open H, "> .git/HEAD" or die $!;
+	print H "ref: ".lref()."\n" or die $!;
+	close H or die $!;
+	runcmd @git, qw(remote add), 'origin', access_giturl();
+	if (check_for_git()) {
+		print "fetching existing git history\n";
+		git_fetch_us();
+		runcmd_ordryrun @git, qw(fetch origin);
+	} else {
+		print "starting new git history\n";
+	}
+	fetch_from_archive() or no_such_package;
+	runcmd @git, qw(reset --hard), lrref();
+	printdone "ready for work in $dstdir";
 }
 
 sub fetch () {
-    if (check_for_git()) {
-	git_fetch_us();
-    }
-    fetch_from_archive() or no_such_package();
-    printdone "fetched into ".lrref();
+	if (check_for_git()) {
+		git_fetch_us();
+	}
+	fetch_from_archive() or no_such_package();
+	printdone "fetched into ".lrref();
 }
 
 sub pull () {
-    fetch();
-    runcmd_ordryrun @git, qw(merge -m),"Merge from $csuite [dgit]",
-        lrref();
-    printdone "fetched to ".lrref()." and merged into HEAD";
+	fetch();
+	runcmd_ordryrun @git, qw(merge -m),"Merge from $csuite [dgit]",
+	    lrref();
+	printdone "fetched to ".lrref()." and merged into HEAD";
 }
 
 sub check_not_dirty () {
-    return if $ignoredirty;
-    my @cmd = (@git, qw(diff --quiet HEAD));
-    printcmd(\*DEBUG,"+",@cmd) if $debug>0;
-    $!=0; $?=0; system @cmd;
-    return if !$! && !$?;
-    if (!$! && $?==256) {
-	fail "working tree is dirty (does not match HEAD)";
-    } else {
-	failedcmd @cmd;
-    }
+	return if $ignoredirty;
+	my @cmd = (@git, qw(diff --quiet HEAD));
+	printcmd(\*DEBUG,"+",@cmd) if $debug>0;
+	$!=0; $?=0; system @cmd;
+	return if !$! && !$?;
+	if (!$! && $?==256) {
+		fail "working tree is dirty (does not match HEAD)";
+	} else {
+		failedcmd @cmd;
+	}
 }
 
 sub commit_quilty_patch () {
-    my $output = cmdoutput @git, qw(status --porcelain);
-    my %adds;
-    my $bad=0;
-    foreach my $l (split /\n/, $output) {
-	next unless $l =~ m/\S/;
-	if ($l =~ m{^(?:\?\?| M) (.pc|debian/patches)}) {
-	    $adds{$1}++;
-	} else {
-	    print STDERR "git status: $l\n";
-	    $bad++;
+	my $output = cmdoutput @git, qw(status --porcelain);
+	my %adds;
+	my $bad=0;
+	foreach my $l (split /\n/, $output) {
+		next unless $l =~ m/\S/;
+		if ($l =~ m{^(?:\?\?| M) (.pc|debian/patches)}) {
+			$adds{$1}++;
+		} else {
+			print STDERR "git status: $l\n";
+			$bad++;
+		}
 	}
-    }
-    fail "unexpected output from git status (is tree clean?)" if $bad;
-    if (!%adds) {
-	print "nothing quilty to commit, ok.\n";
-	return;
-    }
-    runcmd_ordryrun @git, qw(add), sort keys %adds;
-    my $m = "Commit Debian 3.0 (quilt) metadata";
-    print "$m\n";
-    runcmd_ordryrun @git, qw(commit -m), $m;
+	fail "unexpected output from git status (is tree clean?)" if $bad;
+	if (!%adds) {
+		print "nothing quilty to commit, ok.\n";
+		return;
+	}
+	runcmd_ordryrun @git, qw(add), sort keys %adds;
+	my $m = "Commit Debian 3.0 (quilt) metadata";
+	print "$m\n";
+	runcmd_ordryrun @git, qw(commit -m), $m;
 }
 
 sub madformat ($) {
-    my ($format) = @_;
-    return 0 unless $format eq '3.0 (quilt)';
-    print "Format \`$format', urgh\n";
-    if ($noquilt) {
-	print "Not doing any fixup of \`$format' due to --no-quilt-fixup";
-	return 0;
-    }
-    return 1;
+	my ($format) = @_;
+	return 0 unless $format eq '3.0 (quilt)';
+	print "Format \`$format', urgh\n";
+	if ($noquilt) {
+		print "Not doing any fixup of \`$format' due to --no-quilt-fixup";
+		return 0;
+	}
+	return 1;
 }
 
 sub dopush () {
-    print DEBUG "actually entering push\n";
-    my $clogp = parsechangelog();
-    $package = getfield $clogp, 'Source';
-    my $cversion = getfield $clogp, 'Version';
-    my $dscfn = dscfn($cversion);
-    stat "../$dscfn" or
+	print DEBUG "actually entering push\n";
+	my $clogp = parsechangelog();
+	$package = getfield $clogp, 'Source';
+	my $cversion = getfield $clogp, 'Version';
+	my $dscfn = dscfn($cversion);
+	stat "../$dscfn" or
 	fail "looked for .dsc $dscfn, but $!;".
-	    " maybe you forgot to build";
-    $dsc = parsecontrol("../$dscfn","$dscfn");
-    my $dscpackage = getfield $dsc, 'Source';
-    my $format = getfield $dsc, 'Format';
-    my $dversion = getfield $dsc, 'Version';
-    ($dscpackage eq $package && $dversion eq $cversion) or
+	     " maybe you forgot to build";
+	$dsc = parsecontrol("../$dscfn","$dscfn");
+	my $dscpackage = getfield $dsc, 'Source';
+	my $format = getfield $dsc, 'Format';
+	my $dversion = getfield $dsc, 'Version';
+	($dscpackage eq $package && $dversion eq $cversion) or
 	fail "$dsc is for $dscpackage $dversion".
-	    " but debian/changelog is for $package $cversion";
-    print DEBUG "format $format\n";
-    if (madformat($format)) {
-	commit_quilty_patch();
-    }
-    check_not_dirty();
-    prep_ud();
-    chdir $ud or die $!;
-    print "checking that $dscfn corresponds to HEAD\n";
-    runcmd qw(dpkg-source -x --), "../../../../$dscfn";
-    my ($tree,$dir) = mktree_in_ud_from_only_subdir();
-    chdir '../../../..' or die $!;
-    printcmd \*DEBUG,"+",@_;
-    my @diffcmd = (@git, qw(diff --exit-code), $tree);
-    $!=0; $?=0;
-    if (system @diffcmd) {
-	if ($! && $?==256) {
-	    fail "$dscfn specifies a different tree to your HEAD commit;".
-		" perhaps you forgot to build";
-	} else {
-	    failedcmd @diffcmd;
+	     " but debian/changelog is for $package $cversion";
+	print DEBUG "format $format\n";
+	if (madformat($format)) {
+		commit_quilty_patch();
+	}
+	check_not_dirty();
+	prep_ud();
+	chdir $ud or die $!;
+	print "checking that $dscfn corresponds to HEAD\n";
+	runcmd qw(dpkg-source -x --), "../../../../$dscfn";
+	my ($tree,$dir) = mktree_in_ud_from_only_subdir();
+	chdir '../../../..' or die $!;
+	printcmd \*DEBUG,"+",@_;
+	my @diffcmd = (@git, qw(diff --exit-code), $tree);
+	$!=0; $?=0;
+	if (system @diffcmd) {
+		if ($! && $?==256) {
+			fail "$dscfn specifies a different tree to your HEAD commit;".
+			     " perhaps you forgot to build";
+		} else {
+			failedcmd @diffcmd;
+		}
 	}
-    }
 #fetch from alioth
 #do fast forward check and maybe fake merge
 #    if (!is_fast_fwd(mainbranch
 #    runcmd @git, qw(fetch -p ), "$alioth_git/$package.git",
 #        map { lref($_).":".rref($_) }
 #        (uploadbranch());
-    $dsc->{$ourdscfield[0]} = rev_parse('HEAD');
-    $dsc->save("../$dscfn.tmp") or die $!;
-    if (!$changesfile) {
-	my $multi = "../${package}_".(stripepoch $cversion)."_multi.changes";
-	if (stat "$multi") {
-	    $changesfile = $multi;
-	} else {
-	    $!==&ENOENT or die "$multi: $!";
-	    my $pat = "${package}_".(stripepoch $cversion)."_*.changes";
-	    my @cs = glob "../$pat";
-	    fail "failed to find unique changes file".
-		" (looked for $pat in .., or $multi);".
-		" perhaps you need to use dgit -C"
-		unless @cs==1;
-	    ($changesfile) = @cs;
+	$dsc->{$ourdscfield[0]} = rev_parse('HEAD');
+	$dsc->save("../$dscfn.tmp") or die $!;
+	if (!$changesfile) {
+		my $multi = "../${package}_".(stripepoch $cversion)."_multi.changes";
+		if (stat "$multi") {
+			$changesfile = $multi;
+		} else {
+			$!==&ENOENT or die "$multi: $!";
+			my $pat = "${package}_".(stripepoch $cversion)."_*.changes";
+			my @cs = glob "../$pat";
+			fail "failed to find unique changes file".
+			     " (looked for $pat in .., or $multi);".
+			    " perhaps you need to use dgit -C"
+			unless @cs==1;
+			($changesfile) = @cs;
+		}
 	}
-    }
-    my $changes = parsecontrol($changesfile,$changesfile);
-    foreach my $field (qw(Source Distribution Version)) {
+	my $changes = parsecontrol($changesfile,$changesfile);
+	foreach my $field (qw(Source Distribution Version)) {
 	$changes->{$field} eq $clogp->{$field} or
-	    fail "changes field $field \`$changes->{$field}'".
-	        " does not match changelog \`$clogp->{$field}'";
-    }
-    my $tag = debiantag($dversion);
-    if (!check_for_git()) {
-	create_remote_git_repo();
-    }
-    runcmd_ordryrun @git, qw(push),access_giturl(),"HEAD:".rrref();
-    runcmd_ordryrun @git, qw(update-ref -m), 'dgit push', lrref(), 'HEAD';
-    if (!$dryrun) {
-	rename "../$dscfn.tmp","../$dscfn" or die "$dscfn $!";
-    } else {
-	print "[new .dsc left in $dscfn.tmp]\n";
-    }
-    if ($sign) {
-	if (!defined $keyid) {
-	    $keyid = access_cfg('keyid','RETURN-UNDEF');
+		fail "changes field $field \`$changes->{$field}'".
+		     " does not match changelog \`$clogp->{$field}'";
 	}
-	my @tag_cmd = (@git, qw(tag -s -m),
-		       "$package release $dversion for $csuite [dgit]");
-	push @tag_cmd, qw(-u),$keyid if defined $keyid;
-	push @tag_cmd, $tag;
-	runcmd_ordryrun @tag_cmd;
-	my @debsign_cmd = @debsign;
-	push @debsign_cmd, "-k$keyid" if defined $keyid;
-	push @debsign_cmd, $changesfile;
-	runcmd_ordryrun @debsign_cmd;
-    }
-    runcmd_ordryrun @git, qw(push),access_giturl(),"refs/tags/$tag";
-    my $host = access_cfg('upload-host','RETURN-UNDEF');
-    my @hostarg = defined($host) ? ($host,) : ();
-    runcmd_ordryrun @dput, @hostarg, $changesfile;
-    printdone "pushed and uploaded $dversion";
+	my $tag = debiantag($dversion);
+	if (!check_for_git()) {
+		create_remote_git_repo();
+	}
+	runcmd_ordryrun @git, qw(push),access_giturl(),"HEAD:".rrref();
+	runcmd_ordryrun @git, qw(update-ref -m), 'dgit push', lrref(), 'HEAD';
+	if (!$dryrun) {
+		rename "../$dscfn.tmp","../$dscfn" or die "$dscfn $!";
+	} else {
+		print "[new .dsc left in $dscfn.tmp]\n";
+	}
+	if ($sign) {
+		if (!defined $keyid) {
+			$keyid = access_cfg('keyid','RETURN-UNDEF');
+		}
+		my @tag_cmd = (@git, qw(tag -s -m),
+		              "$package release $dversion for $csuite [dgit]");
+		push @tag_cmd, qw(-u),$keyid if defined $keyid;
+		push @tag_cmd, $tag;
+		runcmd_ordryrun @tag_cmd;
+		my @debsign_cmd = @debsign;
+		push @debsign_cmd, "-k$keyid" if defined $keyid;
+		push @debsign_cmd, $changesfile;
+		runcmd_ordryrun @debsign_cmd;
+		}
+	runcmd_ordryrun @git, qw(push),access_giturl(),"refs/tags/$tag";
+	my $host = access_cfg('upload-host','RETURN-UNDEF');
+	my @hostarg = defined($host) ? ($host,) : ();
+	runcmd_ordryrun @dput, @hostarg, $changesfile;
+	printdone "pushed and uploaded $dversion";
 }
 
 sub cmd_clone {
-    parseopts();
-    my $dstdir;
-    badusage "-p is not allowed with clone; specify as argument instead"
+	parseopts();
+	my $dstdir;
+	badusage "-p is not allowed with clone; specify as argument instead"
 	if defined $package;
-    if (@ARGV==1) {
-	($package) = @ARGV;
-    } elsif (@ARGV==2 && $ARGV[1] =~ m#^\w#) {
-	($package,$isuite) = @ARGV;
-    } elsif (@ARGV==2 && $ARGV[1] =~ m#^[./]#) {
-	($package,$dstdir) = @ARGV;
-    } elsif (@ARGV==3) {
-	($package,$isuite,$dstdir) = @ARGV;
-    } else {
-	badusage "incorrect arguments to dgit clone";
-    }
-    $dstdir ||= "$package";
-    clone($dstdir);
+	if (@ARGV==1) {
+		($package) = @ARGV;
+	} elsif (@ARGV==2 && $ARGV[1] =~ m#^\w#) {
+		($package,$isuite) = @ARGV;
+	} elsif (@ARGV==2 && $ARGV[1] =~ m#^[./]#) {
+		($package,$dstdir) = @ARGV;
+	} elsif (@ARGV==3) {
+		($package,$isuite,$dstdir) = @ARGV;
+	} else {
+		badusage "incorrect arguments to dgit clone";
+	}
+	$dstdir ||= "$package";
+	clone($dstdir);
 }
 
 sub branchsuite () {
-    my $branch = cmdoutput_errok @git, qw(symbolic-ref HEAD);
-    if ($branch =~ m#$lbranch_re#o) {
-	return $1;
-    } else {
-	return undef;
-    }
+	my $branch = cmdoutput_errok @git, qw(symbolic-ref HEAD);
+	if ($branch =~ m#$lbranch_re#o) {
+		return $1;
+	} else {
+		return undef;
+	}
 }
 
 sub fetchpullargs () {
-    if (!defined $package) {
-	my $sourcep = parsecontrol('debian/control','debian/control');
-	$package = getfield $sourcep, 'Source';
-    }
-    if (@ARGV==0) {
-#	$isuite = branchsuite();  # this doesn't work because dak hates canons
-	if (!$isuite) {
-	    my $clogp = parsechangelog();
-	    $isuite = getfield $clogp, 'Distribution';
+	if (!defined $package) {
+		my $sourcep = parsecontrol('debian/control','debian/control');
+		$package = getfield $sourcep, 'Source';
+	}
+	if (@ARGV==0) {
+#		$isuite = branchsuite();  # this doesn't work because dak hates canons
+		if (!$isuite) {
+			my $clogp = parsechangelog();
+			$isuite = getfield $clogp, 'Distribution';
+		}
+		canonicalise_suite();
+		print "fetching from suite $csuite\n";
+	} elsif (@ARGV==1) {
+		($isuite) = @ARGV;
+		canonicalise_suite();
+	} else {
+		badusage "incorrect arguments to dgit fetch or dgit pull";
 	}
-	canonicalise_suite();
-	print "fetching from suite $csuite\n";
-    } elsif (@ARGV==1) {
-	($isuite) = @ARGV;
-	canonicalise_suite();
-    } else {
-	badusage "incorrect arguments to dgit fetch or dgit pull";
-    }
 }
 
 sub cmd_fetch {
-    parseopts();
-    fetchpullargs();
-    fetch();
+	parseopts();
+	fetchpullargs();
+	fetch();
 }
 
 sub cmd_pull {
-    parseopts();
-    fetchpullargs();
-    pull();
+	parseopts();
+	fetchpullargs();
+	pull();
 }
 
 sub cmd_push {
-    parseopts();
-    badusage "-p is not allowed with dgit push" if defined $package;
-    check_not_dirty();
-    my $clogp = parsechangelog();
-    $package = getfield $clogp, 'Source';
-    if (@ARGV==0) {
-	$isuite = getfield $clogp, 'Distribution';
-	if ($new_package) {
-	    local ($package) = $existing_package; # this is a hack
-	    canonicalise_suite();
+	parseopts();
+	badusage "-p is not allowed with dgit push" if defined $package;
+	check_not_dirty();
+	my $clogp = parsechangelog();
+	$package = getfield $clogp, 'Source';
+	if (@ARGV==0) {
+		$isuite = getfield $clogp, 'Distribution';
+			if ($new_package) {
+				local ($package) = $existing_package; # this is a hack
+				canonicalise_suite();
+			}
+		} else {
+		badusage "incorrect arguments to dgit push";
 	}
-    } else {
-	badusage "incorrect arguments to dgit push";
-    }
-    if (check_for_git()) {
-	git_fetch_us();
-    }
-    if (fetch_from_archive()) {
-	is_fast_fwd(lrref(), 'HEAD') or
-	    fail "dgit push: HEAD is not a descendant".
-	        " of the archive's version.\n".
-		"$us: To overwrite it, use git-merge -s ours ".lrref().".";
-    } else {
-	$new_package or
-	    fail "package appears to be new in this suite;".
-	        " if this is intentional, use --new";
-    }
-    dopush();
+	if (check_for_git()) {
+		git_fetch_us();
+	}
+	if (fetch_from_archive()) {
+		is_fast_fwd(lrref(), 'HEAD') or
+		fail "dgit push: HEAD is not a descendant".
+		     " of the archive's version.\n".
+		     "$us: To overwrite it, use git-merge -s ours ".lrref().".";
+	} else {
+		$new_package or
+		fail "package appears to be new in this suite;".
+		     " if this is intentional, use --new";
+	}
+	dopush();
 }
 
 our $version;
@@ -1038,28 +1035,28 @@ our $dscfn;
 our $fakeeditorenv = 'DGIT_FAKE_EDITOR_QUILT';
 
 sub build_maybe_quilt_fixup () {
-    if (!open F, "debian/source/format") {
+	if (!open F, "debian/source/format") {
 	die $! unless $!==&ENOENT;
 	return;
-    }
-    $_ = <F>;
-    F->error and die $!;
-    chomp;
-    return unless madformat($_);
-    # sigh
-    my $clogp = parsechangelog();
-    my $version = getfield $clogp, 'Version';
-    my $author = getfield $clogp, 'Maintainer';
-    my $headref = rev_parse('HEAD');
-    my $time = time;
-    my $ncommits = 3;
-    my $patchname = "auto-$version-$headref-$time";
-    my $msg = cmdoutput @git, qw(log), "-n$ncommits";
-    my $descfn = ".git/dgit/quilt-description.tmp";
-    open O, '>', $descfn or die "$descfn: $!";
-    $msg =~ s/\n/\n /g;
-    $msg =~ s/^\s+$/ ./mg;
-    print O <<END or die $!;
+	}
+	$_ = <F>;
+	F->error and die $!;
+	chomp;
+	return unless madformat($_);
+	# sigh
+	my $clogp = parsechangelog();
+	my $version = getfield $clogp, 'Version';
+	my $author = getfield $clogp, 'Maintainer';
+	my $headref = rev_parse('HEAD');
+	my $time = time;
+	my $ncommits = 3;
+	my $patchname = "auto-$version-$headref-$time";
+	my $msg = cmdoutput @git, qw(log), "-n$ncommits";
+	my $descfn = ".git/dgit/quilt-description.tmp";
+	open O, '>', $descfn or die "$descfn: $!";
+	$msg =~ s/\n/\n /g;
+	$msg =~ s/^\s+$/ ./mg;
+	print O <<END or die $!;
 Description: Automatically generated patch ($clogp->{Version})
  Last (up to) $ncommits git changes, FYI:
  .
@@ -1069,88 +1066,88 @@ Author: $author
 ---
 
 END
-    close O or die $!;
-    {
-	local $ENV{'EDITOR'} = cmdoutput qw(realpath --), $0;
-	local $ENV{'VISUAL'} = $ENV{'EDITOR'};
-	local $ENV{$fakeeditorenv} = cmdoutput qw(realpath --), $descfn;
-	runcmd_ordryrun @dpkgsource, qw(--commit .), $patchname;
-    }
+	close O or die $!;
+	{
+		local $ENV{'EDITOR'} = cmdoutput qw(realpath --), $0;
+		local $ENV{'VISUAL'} = $ENV{'EDITOR'};
+		local $ENV{$fakeeditorenv} = cmdoutput qw(realpath --), $descfn;
+		runcmd_ordryrun @dpkgsource, qw(--commit .), $patchname;
+	}
 
-    if (!open P, '>>', ".pc/applied-patches") {
-	$!==&ENOENT or die $!;
-    } else {
-	close P;
-    }
+	if (!open P, '>>', ".pc/applied-patches") {
+		$!==&ENOENT or die $!;
+	} else {
+		close P;
+	}
 
-    commit_quilty_patch();
+	commit_quilty_patch();
 }
 
 sub quilt_fixup_editor () {
-    my $descfn = $ENV{$fakeeditorenv};
-    my $editing = $ARGV[$#ARGV];
-    open I1, '<', $descfn or die "$descfn: $!";
-    open I2, '<', $editing or die "$editing: $!";
-    unlink $editing or die "$editing: $!";
-    open O, '>', $editing or die "$editing: $!";
-    while (<I1>) { print O or die $!; } I1->error and die $!;
-    my $copying = 0;
-    while (<I2>) {
-	$copying ||= m/^\-\-\- /;
-	next unless $copying;
-	print O or die $!;
-    }
-    I2->error and die $!;
-    close O or die $1;
-    exit 0;
+	my $descfn = $ENV{$fakeeditorenv};
+	my $editing = $ARGV[$#ARGV];
+	open I1, '<', $descfn or die "$descfn: $!";
+	open I2, '<', $editing or die "$editing: $!";
+	unlink $editing or die "$editing: $!";
+	open O, '>', $editing or die "$editing: $!";
+	while (<I1>) { print O or die $!; } I1->error and die $!;
+	my $copying = 0;
+	while (<I2>) {
+		$copying ||= m/^\-\-\- /;
+		next unless $copying;
+		print O or die $!;
+	}
+	I2->error and die $!;
+	close O or die $1;
+	exit 0;
 }
 
 sub build_prep () {
-    badusage "-p is not allowed when building" if defined $package;
-    check_not_dirty();
-    my $clogp = parsechangelog();
-    $isuite = getfield $clogp, 'Distribution';
-    $package = getfield $clogp, 'Source';
-    $version = getfield $clogp, 'Version';
-    build_maybe_quilt_fixup();
+	badusage "-p is not allowed when building" if defined $package;
+	check_not_dirty();
+	my $clogp = parsechangelog();
+	$isuite = getfield $clogp, 'Distribution';
+	$package = getfield $clogp, 'Source';
+	$version = getfield $clogp, 'Version';
+	build_maybe_quilt_fixup();
 }
 
 sub cmd_build {
-    badusage "dgit build implies --clean=dpkg-source"
+	badusage "dgit build implies --clean=dpkg-source"
 	if $cleanmode ne 'dpkg-source';
-    build_prep();
-    runcmd_ordryrun @dpkgbuildpackage, qw(-us -uc), changesopts(), @ARGV;
-    printdone "build successful\n";
+	build_prep();
+	runcmd_ordryrun @dpkgbuildpackage, qw(-us -uc), changesopts(), @ARGV;
+	printdone "build successful\n";
 }
 
 sub cmd_git_build {
-    badusage "dgit git-build implies --clean=dpkg-source"
+	badusage "dgit git-build implies --clean=dpkg-source"
 	if $cleanmode ne 'dpkg-source';
-    build_prep();
-    my @cmd =
+	build_prep();
+	my @cmd =
 	(qw(git-buildpackage -us -uc --git-no-sign-tags),
 	 "--git-builder=@dpkgbuildpackage");
-    unless (grep { m/^--git-debian-branch|^--git-ignore-branch/ } @ARGV) {
-	canonicalise_suite();
-	push @cmd, "--git-debian-branch=".lbranch();
-    }
-    push @cmd, changesopts();
-    runcmd_ordryrun @cmd, @ARGV;
-    printdone "build successful\n";
+	unless (grep { m/^--git-debian-branch|^--git-ignore-branch/ } @ARGV) {
+		canonicalise_suite();
+		push @cmd, "--git-debian-branch=".lbranch();
+	}
+	push @cmd, changesopts();
+	runcmd_ordryrun @cmd, @ARGV;
+	printdone "build successful\n";
 }
 
 sub build_source {
-    build_prep();
-    $sourcechanges = "${package}_".(stripepoch $version)."_source.changes";
-    $dscfn = dscfn($version);
-    if ($cleanmode eq 'dpkg-source') {
-	runcmd_ordryrun (@dpkgbuildpackage, qw(-us -uc -S)), changesopts();
-    } else {
+	build_prep();
+	$sourcechanges = "${package}_".(stripepoch $version)."_source.changes";
+	$dscfn = dscfn($version);
+	if ($cleanmode eq 'dpkg-source') {
+		runcmd_ordryrun (@dpkgbuildpackage, qw(-us -uc -S)), changesopts();
+	} else {
 	if ($cleanmode eq 'git') {
-	    runcmd_ordryrun @git, qw(clean -xdf);
+		runcmd_ordryrun @git, qw(clean -xdf);
 	} elsif ($cleanmode eq 'none') {
 	} else {
-	    die "$cleanmode ?";
+		die "$cleanmode ?";
 	}
 	my $pwd = cmdoutput qw(env - pwd);
 	my $leafdir = basename $pwd;
@@ -1161,118 +1158,118 @@ sub build_source {
 	    'exec >$1; shift; exec "$@"','x',
 	    "../$sourcechanges",
 	    @dpkggenchanges, qw(-S), changesopts();
-    }
+	}
 }
 
 sub cmd_build_source {
-    badusage "build-source takes no additional arguments" if @ARGV;
-    build_source();
-    printdone "source built, results in $dscfn and $sourcechanges";
+	badusage "build-source takes no additional arguments" if @ARGV;
+	build_source();
+	printdone "source built, results in $dscfn and $sourcechanges";
 }
 
 sub cmd_sbuild {
-    build_source();
-    chdir ".." or die $!;
-    my $pat = "${package}_".(stripepoch $version)."_*.changes";
-    if (!$dryrun) {
-	stat $dscfn or fail "$dscfn (in parent directory): $!";
-	stat $sourcechanges or fail "$sourcechanges (in parent directory): $!";
-	foreach my $cf (glob $pat) {
-	    next if $cf eq $sourcechanges;
-	    unlink $cf or fail "remove $cf: $!";
+	build_source();
+	chdir ".." or die $!;
+	my $pat = "${package}_".(stripepoch $version)."_*.changes";
+	if (!$dryrun) {
+		stat $dscfn or fail "$dscfn (in parent directory): $!";
+		stat $sourcechanges or fail "$sourcechanges (in parent directory): $!";
+		foreach my $cf (glob $pat) {
+			next if $cf eq $sourcechanges;
+			unlink $cf or fail "remove $cf: $!";
+		}
 	}
-    }
-    runcmd_ordryrun @sbuild, @ARGV, qw(-d), $isuite, $dscfn;
-    runcmd_ordryrun @mergechanges, glob $pat;
-    my $multichanges = "${package}_".(stripepoch $version)."_multi.changes";
-    if (!$dryrun) {
-	stat $multichanges or fail "$multichanges: $!";
-    }
-    printdone "build successful, results in $multichanges\n" or die $!;
-}    
+	runcmd_ordryrun @sbuild, @ARGV, qw(-d), $isuite, $dscfn;
+	runcmd_ordryrun @mergechanges, glob $pat;
+	my $multichanges = "${package}_".(stripepoch $version)."_multi.changes";
+	if (!$dryrun) {
+		stat $multichanges or fail "$multichanges: $!";
+	}
+	printdone "build successful, results in $multichanges\n" or die $!;
+}
 
 sub cmd_quilt_fixup {
-    badusage "incorrect arguments to dgit quilt-fixup" if @ARGV;
-    my $clogp = parsechangelog();
-    $version = getfield $clogp, 'Version';
-    build_maybe_quilt_fixup();
+	badusage "incorrect arguments to dgit quilt-fixup" if @ARGV;
+	my $clogp = parsechangelog();
+	$version = getfield $clogp, 'Version';
+	build_maybe_quilt_fixup();
 }
 
 sub parseopts () {
-    my $om;
-    while (@ARGV) {
-	last unless $ARGV[0] =~ m/^-/;
-	$_ = shift @ARGV;
-	last if m/^--?$/;
-	if (m/^--/) {
-	    if (m/^--dry-run$/) {
-		$dryrun=1;
-	    } elsif (m/^--no-sign$/) {
-		$sign=0;
-	    } elsif (m/^--help$/) {
-		helponly();
-	    } elsif (m/^--new$/) {
-		$new_package=1;
-	    } elsif (m/^--(\w+)=(.*)/s &&
-		     ($om = $opts_opt_map{$1}) &&
-		     length $om->[0]) {
-		$om->[0] = $2;
-	    } elsif (m/^--(\w+):(.*)/s &&
-		     ($om = $opts_opt_map{$1})) {
-		push @$om, $2;
-	    } elsif (m/^--existing-package=(.*)/s) {
-		$existing_package = $1;
-	    } elsif (m/^--distro=(.*)/s) {
-		$idistro = $1;
-	    } elsif (m/^--clean=(dpkg-source|git|none)$/s) {
-		$cleanmode = $1;
-	    } elsif (m/^--clean=(.*)$/s) {
-		badusage "unknown cleaning mode \`$1'";
-	    } elsif (m/^--ignore-dirty$/s) {
-		$ignoredirty = 1;
-	    } elsif (m/^--no-quilt-fixup$/s) {
-		$noquilt = 1;
-	    } else {
-		badusage "unknown long option \`$_'";
-	    }
-	} else {
-	    while (m/^-./s) {
-		if (s/^-n/-/) {
-		    $dryrun=1;
-		} elsif (s/^-h/-/) {
-		    helponly();
-		} elsif (s/^-D/-/) {
-		    open DEBUG, ">&STDERR" or die $!;
-		    $debug++;
-		} elsif (s/^-N/-/) {
-		    $new_package=1;
-		} elsif (m/^-[vm]/) {
-		    push @changesopts, $_;
-		    $_ = '';
-		} elsif (s/^-c(.*=.*)//s) {
-		    push @git, '-c', $1;
-		} elsif (s/^-d(.*)//s) {
-		    $idistro = $1;
-		} elsif (s/^-C(.*)//s) {
-		    $changesfile = $1;
-		} elsif (s/^-k(.*)//s) {
-		    $keyid=$1;
-		} elsif (s/^-wn//s) {
-		    $cleanmode = 'none';
-		} elsif (s/^-wg//s) {
-		    $cleanmode = 'git';
-		} elsif (s/^-wd//s) {
-		    $cleanmode = 'dpkg-source';
+	my $om;
+	while (@ARGV) {
+		last unless $ARGV[0] =~ m/^-/;
+		$_ = shift @ARGV;
+		last if m/^--?$/;
+		if (m/^--/) {
+			if (m/^--dry-run$/) {
+				$dryrun=1;
+			} elsif (m/^--no-sign$/) {
+				$sign=0;
+			} elsif (m/^--help$/) {
+				helponly();
+			} elsif (m/^--new$/) {
+				$new_package=1;
+			} elsif (m/^--(\w+)=(.*)/s &&
+					($om = $opts_opt_map{$1}) &&
+					length $om->[0]) {
+				$om->[0] = $2;
+			} elsif (m/^--(\w+):(.*)/s &&
+					($om = $opts_opt_map{$1})) {
+				push @$om, $2;
+			} elsif (m/^--existing-package=(.*)/s) {
+				$existing_package = $1;
+			} elsif (m/^--distro=(.*)/s) {
+				$idistro = $1;
+			} elsif (m/^--clean=(dpkg-source|git|none)$/s) {
+				$cleanmode = $1;
+			} elsif (m/^--clean=(.*)$/s) {
+				badusage "unknown cleaning mode \`$1'";
+			} elsif (m/^--ignore-dirty$/s) {
+				$ignoredirty = 1;
+			} elsif (m/^--no-quilt-fixup$/s) {
+				$noquilt = 1;
+			} else {
+				badusage "unknown long option \`$_'";
+			}
 		} else {
-		    badusage "unknown short option \`$_'";
+			while (m/^-./s) {
+				if (s/^-n/-/) {
+						$dryrun=1;
+					} elsif (s/^-h/-/) {
+						helponly();
+					} elsif (s/^-D/-/) {
+					open DEBUG, ">&STDERR" or die $!;
+					$debug++;
+				} elsif (s/^-N/-/) {
+					$new_package=1;
+				} elsif (m/^-[vm]/) {
+					push @changesopts, $_;
+					$_ = '';
+				} elsif (s/^-c(.*=.*)//s) {
+					push @git, '-c', $1;
+				} elsif (s/^-d(.*)//s) {
+					$idistro = $1;
+				} elsif (s/^-C(.*)//s) {
+					$changesfile = $1;
+				} elsif (s/^-k(.*)//s) {
+					$keyid=$1;
+				} elsif (s/^-wn//s) {
+					$cleanmode = 'none';
+				} elsif (s/^-wg//s) {
+					$cleanmode = 'git';
+				} elsif (s/^-wd//s) {
+					$cleanmode = 'dpkg-source';
+				} else {
+					badusage "unknown short option \`$_'";
+				}
+			}
 		}
-	    }
 	}
-    }
 }
 
 if ($ENV{$fakeeditorenv}) {
-    quilt_fixup_editor();
+	quilt_fixup_editor();
 }
 
 delete $ENV{'DGET_UNPACK'};
@@ -1280,8 +1277,8 @@ delete $ENV{'DGET_UNPACK'};
 parseopts();
 print STDERR "DRY RUN ONLY\n" if $dryrun;
 if (!@ARGV) {
-    print STDERR $helpmsg or die $!;
-    exit 8;
+	print STDERR $helpmsg or die $!;
+	exit 8;
 }
 my $cmd = shift @ARGV;
 $cmd =~ y/-/_/;
-- 
1.8.4.rc3

