+ runcmd @git, qw(diff --exit-code), $tree;
+#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} = rev_parse('HEAD');
+ $dsc->save("../$dscfn.tmp") or die $!;
+ rename "../$dscfn.tmp","../$dscfn" or die "$dscfn $!";
+ if (!$changesfile) {
+ my $pat = "../${package}_$clogp->{Version}_*.changes";
+ my @cs = glob $pat;
+ die "$pat ?" unless @cs==1;
+ ($changesfile) = @cs;
+ }
+ my $tag = debiantag($dsc->{Version});
+ if (!check_for_git()) {
+ runcmd_ordryrun qw(ssh),$alioth_sshtestbodge->[0],
+ "set -e; cd $alioth_sshtestbodge->[1];".
+ " mkdir -p $package.git;".
+ " cd $package.git;".
+ " if ! test -d objects; then git init --bare; fi";
+ }
+ runcmd_ordryrun @git, qw(push),$remotename,"HEAD:".lref(uploadbranch());
+ if ($sign) {
+ my @tag_cmd = (@git, qw(tag -s -m),
+ "Release $dsc->{Version} for $suite [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),$remotename,"refs/tags/$tag";
+ runcmd_ordryrun @dput, $changesfile;