diff options
-rwxr-xr-x | git-debrebase | 55 | ||||
-rwxr-xr-x | tests/tests/gdr-newupstream | 1 |
2 files changed, 33 insertions, 23 deletions
diff --git a/git-debrebase b/git-debrebase index 4756748..3d1f2a8 100755 --- a/git-debrebase +++ b/git-debrebase @@ -2170,30 +2170,39 @@ sub cmd_new_upstream () { "[git-debrebase anchor: new upstream $new_upstream_version, merge]", ]; - my $clogsignoff = cmdoutput qw(git show), - '--pretty=format:%an <%ae> %aD', - $new_bw; - # Now we have to add a changelog stanza so the Debian version - # is right. - die if unlink "debian"; - die $! unless $!==ENOENT or $!==ENOTEMPTY; - unlink "debian/changelog" or $!==ENOENT or die $!; - mkdir "debian" or die $!; - open CN, ">", "debian/changelog" or die $!; - my $oldclog = git_cat_file ":debian/changelog"; - $oldclog =~ m/^($package_re) \(\S+\) / or - fail "cannot parse old changelog to get package name"; - my $p = $1; - print CN <<END, $oldclog or die $!; -$p ($new_version) UNRELEASED; urgency=medium - - * Update to new upstream version $new_upstream_version. - - -- $clogsignoff - -END - close CN or die $!; + # is right. We use debchange to do this. Invoking debchange + # here is a bit fiddly because it has a lot of optional + # exciting behaviours, some of which will break stuff, and + # some of which won't work in a playtree. + + # Make debchange use git's idea of the user's identity. + # That way, if the user never uses debchange et al, configuring + # git is enough. + my $usetup = sub { + my ($e, $k) = @_; + my $v = cfg $k, 1; + defined $v or return; + $ENV{$e} = $v; + }; + $usetup->('DEBEMAIL', 'user.email'); + $usetup->('DEBFULLNAME', 'user.name'); + +sleep 2; + + my @dch = (qw(debchange + --allow-lower-version .* + --no-auto-nmu + --preserve + --vendor=Unknown-Vendor + --changelog debian/changelog + --check-dirname-level 0 + --release-heuristic=changelog + -v), $new_version, + "Update to new upstream version $new_upstream_version."); + + runcmd @git, qw(checkout -q debian/changelog); + runcmd @dch; runcmd @git, qw(update-index --add --replace), 'debian/changelog'; # Now we have the final new breakwater branch in the index diff --git a/tests/tests/gdr-newupstream b/tests/tests/gdr-newupstream index b45a0bf..300d434 100755 --- a/tests/tests/gdr-newupstream +++ b/tests/tests/gdr-newupstream @@ -31,6 +31,7 @@ git branch before-new-upstream clog-check-1 () { before=$1 date=$(git log --format=%aD -n1 debian/changelog) + date=$(date -R -d "$date") git show $before:debian/changelog >../clog.before m=" * Update to new upstream version ${v%-*}." e="dgit test git user <dgit-test@debian.example.net> $date" |