X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=dgit;h=73523715f9bfc66aa2075456e297d3ffae2e818c;hb=21c8966d8c2a930f7ead1fd417b11a9606b8a859;hp=66652983bd5e54e7cff238f6f226d4caf9548801;hpb=66f4ccc0e2c6667ce720cdd74806b0397f104154;p=dgit.git diff --git a/dgit b/dgit index 66652983..73523715 100755 --- a/dgit +++ b/dgit @@ -68,7 +68,7 @@ our $debug = 0; open DEBUG, ">/dev/null" or die $!; our $remotename = 'dgit'; -our $ourdscfield = 'Vcs-Dgit-Master'; +our @ourdscfield = qw(Dgit Vcs-Dgit-Master); our $branchprefix = 'dgit'; our $csuite; @@ -488,7 +488,7 @@ sub mktree_in_ud_from_only_subdir () { $dirs[0] =~ m#^([^/]+)/\.$# or die; my $dir = $1; chdir $dir or die "$dir $!"; - die if stat '.git'; + fail "source package contains .git directory" if stat '.git'; die $! unless $!==&ENOENT; runcmd qw(git init -q); rmtree('.git/objects'); @@ -591,12 +591,9 @@ Last allegedly pushed/uploaded: $oversion (newer or same) $later_warning_msg END $outputhash = $upload_hash; - } elsif ($outputhash ne $upload_hash) { - fail "version in archive ($cversion)". - " is same as version in git". - " to-be-uploaded (upload/) branch ($oversion)". - " but archive version hash no commit hash?!"; - } + } else { + $outputhash = $upload_hash; + } } chdir '../../../..' or die $!; runcmd @git, qw(update-ref -m),"dgit fetch import $cversion", @@ -644,7 +641,10 @@ sub fetch_from_archive () { # ensures that lrref() is what is actually in the archive, # one way or another get_archive_dsc() or return 0; - $dsc_hash = $dsc->{$ourdscfield}; + 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 = $&; @@ -832,7 +832,7 @@ sub dopush () { # runcmd @git, qw(fetch -p ), "$alioth_git/$package.git", # map { lref($_).":".rref($_) } # (uploadbranch()); - $dsc->{$ourdscfield} = rev_parse('HEAD'); + $dsc->{$ourdscfield[0]} = rev_parse('HEAD'); $dsc->save("../$dscfn.tmp") or die $!; if (!$changesfile) { my $multi = "../${package}_${cversion}_multi.changes"; @@ -852,8 +852,9 @@ sub dopush () { my $changes = parsecontrol($changesfile,$changesfile); foreach my $field (qw(Source Distribution Version)) { $changes->{$field} eq $clogp->{$field} or - fail "changes field $field \`$changes->{$field}'" + fail "changes field $field \`$changes->{$field}'". " does not match changelog \`$clogp->{$field}'"; + } my $tag = debiantag($dversion); if (!check_for_git()) { create_remote_git_repo(); @@ -1015,6 +1016,13 @@ END 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; + } + commit_quilty_patch(); } @@ -1063,7 +1071,7 @@ sub build_source { check_not_dirty(); my $clogp = parsechangelog(); $package = getfield $clogp, 'Source'; - my $isuite = getfield $clogp, 'Distribution'; + $isuite = getfield $clogp, 'Distribution'; $version = getfield $clogp, 'Version'; $sourcechanges = "${package}_${version}_source.changes"; $dscfn = dscfn($version);