Hi James,

On Wed, Dec 24, 2025 at 09:52:07AM -0500, James McCoy wrote:
> On Wed, Dec 24, 2025 at 09:23:11AM +0100, Daniel Gröber wrote:
> > Hi Sebastian,
> > 
> > just the 'notfixed' command should suffice to remove the version tracking 
> > 'fixed_version' record here. You may be thinking of 'found,notfound' which 
> > has "interesting" behaviour. In fact 'notfixed' is equivalent to this 
> > already:
> 
> Maybe you missed that the versions in each command are different? One has an
> epoch while the other does not.
> 
>      fixed 1123792 1:2.2.1-2
>   notfixed 1123792 1.2.2.1-2

Ah! Indeed uncaffeinated brain skipped this. Sadly I already wrote an
extensive reply without this insight :> Oh well.

This should fix the check being too broad:

commit 4494a9833bbda6dafb86d271f445c1cd3a581c0d
Author: Daniel Gröber <[email protected]>
Date:   Wed Dec 24 17:16:42 2025 +0100

    bts: Relax fixed/notfixed consistency check to allow fixups (Closes: 
#1123919)

diff --git a/scripts/bts.pl b/scripts/bts.pl
index c95e2f92..a7813726 100755
--- a/scripts/bts.pl
+++ b/scripts/bts.pl
@@ -2259,8 +2259,7 @@ sub bts_done {
 
     $donebugs{$bug} = $index;    # for bts_fixed, fixup_done_bugs
     if (length($version)) {
-        check_fixedbugs($bug);
-        $fixedbugs{$bug} = $version;
+        check_fixedbugs($bug, $version);
     }
 
     # Note: Manipulation of globals for mailing happens in fixup_done_bugs.
@@ -2638,7 +2637,7 @@ sub bts_fixed {
     my $version = shift or die "bts fixed: Bug#$bug fixed in which version?\n";
     opts_done(@_);
 
-    check_fixedbugs($bug);
+    check_fixedbugs($bug, $version);
 
     if (!$offlinemode && !check_versiontracking($bug, $version, 'fixed')) {
         die
@@ -2650,10 +2649,12 @@ sub bts_fixed {
 }
 
 sub check_fixedbugs {
-    my $bug = shift;
-    !exists $fixedbugs{$bug}
-      or die
-"bts $shortcmd[$index]: Preceeding command already marked Bug#$bug as fixed in 
version '$fixedbugs{$bug}'!";
+    my ($bug, $version) = @_;
+    my $prev_ver = $fixedbugs{$bug};
+    $prev_ver and $prev_ver eq $version
+      and die
+"bts $shortcmd[$index]: Preceeding command marked Bug#$bug as fixed in version 
'$prev_ver'!\n  Fixed vs. not fixed. Please decide.\n";
+    $fixedbugs{$bug} = $version;
 }
 
 =item B<notfixed> [I<bug>] [B<in>|B<by>|B<since>] 
[I<source-package>B</>]I<version>
@@ -2680,7 +2681,7 @@ sub bts_notfixed {
     my $version = shift or die "bts notfixed: which version?\n";
     opts_done(@_);
 
-    check_fixedbugs($bug);
+    check_fixedbugs($bug, $version);
     $offlinemode or check_versiontracking($bug, $version, 'notfixed');
 
     mailbts("notfixed $bug in $version", "notfixed $bug $version");

Thanks again for the report Sebastian,
--Daniel

Attachment: signature.asc
Description: PGP signature

Reply via email to