Package: dgit Version: 9.10 Severity: important X-debbugs-cc: [email protected]
Hello,
Dgit::upstream_commitish_search() should fail, as git-deborig does, if
there is more than one of the three kinds of tags is looks for with the
same upstream version number.
How this can cause trouble:
% git clone https://salsa.debian.org/debian/ledger.git
% cd ledger
% git remote add github https://github.com/ledger/ledger
% git fetch --tags github
% git checkout 722a502e82b95cc928468142895101af91e45e0b
% git debrebase new-upstream 3.2.1
Actual result: debrebase merges the v3.2.1 tag.
Expected result: complain that both v3.2.1 and upstream/3.2.1 tags
exist, and ask user to supply more arguments to new-upstream
subcommand to indicate which they want to use.
Attached is a minimal fix.
--
Sean Whitton
From 0b881dddb050a7f0833bc37842082934492d23c6 Mon Sep 17 00:00:00 2001 From: Sean Whitton <[email protected]> Date: Wed, 27 May 2020 13:49:07 -0700 Subject: [PATCH] Dgit::upstream_commitish_search: fail if more than one tag exists We should not assume we know which the user wants to merge, as git-deborig does not. Signed-off-by: Sean Whitton <[email protected]> --- Debian/Dgit.pm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Debian/Dgit.pm b/Debian/Dgit.pm index 5d898ae5..4e196570 100644 --- a/Debian/Dgit.pm +++ b/Debian/Dgit.pm @@ -634,12 +634,14 @@ sub git_check_unmodified () { sub upstream_commitish_search ($$) { my ($upstream_version, $tried) = @_; # todo: at some point maybe use git-deborig to do this + my @found; foreach my $tagpfx ('', 'v', 'upstream/') { my $tag = $tagpfx.(dep14_version_mangle $upstream_version); my $new_upstream = git_get_ref "refs/tags/$tag"; push @$tried, $tag; - return $new_upstream if length $new_upstream; + push @found, $tag if $new_upstream; } + return $found[0] if @found == 1; } sub resolve_upstream_version ($$) { -- 2.26.2
signature.asc
Description: PGP signature

