Your message dated Fri, 16 Oct 2026 21:12:48 +0000
with message-id <[email protected]>
and subject line Bug#1150661: fixed in stgit 2.6.1-1.3
has caused the Debian Bug report #1150661,
regarding stgit: port to gix 0.89
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
1150661: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1150661
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Source: stgit
Version: 2.6.1-1.2
Severity: important
Tags: patch
User: [email protected]
Usertags: gix-0.89
X-Debbugs-Cc: [email protected]

Dear maintainer,

I am preparing a gix transition to 0.89, which will likely be uploaded soon.

stgit build-depends on librust-gix-dev (>= 0.87) with no upper bound. The 
package does not build against gix 0.89.

I have attached a debdiff fixing this, which is simply a cherry pick of an 
upstream commit.

Best regards,
Simon Quigley
[email protected]
diff -Nru stgit-2.6.1/debian/changelog stgit-2.6.1/debian/changelog
--- stgit-2.6.1/debian/changelog        2026-09-18 14:52:28.000000000 -0500
+++ stgit-2.6.1/debian/changelog        2026-10-11 15:44:35.000000000 -0500
@@ -1,3 +1,10 @@
+stgit (2.6.1-1.3) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Cherry-pick upstream gix 0.89 update (2833a46f).
+
+ -- Simon Quigley <[email protected]>  Sun, 11 Oct 2026 15:44:35 -0500
+
 stgit (2.6.1-1.2) unstable; urgency=medium
 
   * Non-maintainer upload (Closes: #1148264).
diff -Nru stgit-2.6.1/debian/control stgit-2.6.1/debian/control
--- stgit-2.6.1/debian/control  2026-09-18 14:52:05.000000000 -0500
+++ stgit-2.6.1/debian/control  2026-10-09 22:04:51.000000000 -0500
@@ -24,7 +24,8 @@
  librust-curl-dev,
  librust-encoding-rs-dev,
  librust-flate2-dev,
- librust-gix-dev (>= 0.87),
+ librust-gix-dev (>= 0.89),
+ librust-gix-dev (<< 0.90),
  librust-indexmap-dev,
  librust-is-terminal-dev,
  librust-jiff-dev (>= 0.2.1),
diff -Nru stgit-2.6.1/debian/patches/gix-0.89.patch 
stgit-2.6.1/debian/patches/gix-0.89.patch
--- stgit-2.6.1/debian/patches/gix-0.89.patch   1969-12-31 18:00:00.000000000 
-0600
+++ stgit-2.6.1/debian/patches/gix-0.89.patch   2026-10-11 15:10:50.000000000 
-0500
@@ -0,0 +1,149 @@
+Description: chore: update gix to 0.89
+ gix-date now requires at least nine digits before reading a bare number
+ as seconds since the epoch, matching git. So `--authdate 123456` is now
+ rejected, just as git rejects GIT_AUTHOR_DATE=123456; `@123456` still
+ works.
+ .
+ gix's per-module error types are consolidated under gix::Error, so
+ not-found is detected with is_not_found() rather than by matching
+ specific error variants. That classification also catches unresolvable
+ refs, so `stg id refs/heads/nosuch` now reports "revision not found"
+ instead of "couldn't parse revision".
+ .
+ SHA-1 hashing moves from sha1-checked to sha1dc, which keeps collision
+ detection. The remaining changes are mechanical responses to gix
+ interface changes.
+Author: Peter Grayson <[email protected]>
+Origin: upstream
+Applied-Upstream: 2833a46fb266d024943586e4b171a23093e9be41
+Last-Update: 2026-10-11
+---
+--- a/Cargo.toml
++++ b/Cargo.toml
+@@ -43,7 +43,7 @@ clap = { version = "~4.6", default-featu
+ ctrlc = "3.4"
+ encoding_rs = "0.8"
+ flate2 = "1"
+-gix = { version = "0.87", default-features = false, features = [
++gix = { version = "0.89", default-features = false, features = [
+   "command",
+   "revision",
+   "sha1",
+--- a/src/ext/repository.rs
++++ b/src/ext/repository.rs
+@@ -132,12 +132,11 @@ impl RepositoryExtended for gix::Reposit
+         use gix::refs::Category;
+ 
+         let gix_name: gix::refs::PartialName = branch_name.into();
+-        let reference = self.find_reference(&gix_name).map_err(|e| match e {
+-            gix::reference::find::existing::Error::Find(inner) => {
+-                anyhow!("invalid branch name `{branch_name}`: {inner}")
+-            }
+-            gix::reference::find::existing::Error::NotFound { name } => {
+-                anyhow!("branch `{}` not found", name.as_ref().as_bstr())
++        let reference = self.find_reference(&gix_name).map_err(|e| {
++            if e.is_not_found() {
++                anyhow!("branch `{branch_name}` not found")
++            } else {
++                anyhow!("invalid branch name `{branch_name}`: {e}")
+             }
+         })?;
+ 
+@@ -270,12 +269,6 @@ impl RepositoryExtended for gix::Reposit
+     }
+ 
+     fn rev_parse_single_ex(&self, spec: &str) -> Result<gix::Id<'_>> {
+-        use gix::{
+-            object::find::existing::Error as ObjectFindError,
+-            reference::find::existing::Error as RefFindError,
+-            revision::spec::parse::single::Error as SingleError,
+-        };
+-
+         use crate::patch::revspec::Error;
+ 
+         // Catch revspec ranges early because gitoxide will only flag this as 
an error if
+@@ -288,27 +281,15 @@ impl RepositoryExtended for gix::Reposit
+             .into());
+         }
+ 
+-        self.rev_parse_single(spec)
+-            .map_err(|single_err| -> anyhow::Error {
+-                // Distinguish "the spec parsed but resolved to nothing" from 
"the spec
+-                // is malformed" by looking for a typed NotFound frame 
anywhere in the
+-                // error tree underlying SingleError::Parse.
+-                if let SingleError::Parse(ref gix_err) = single_err {
+-                    let not_found = gix_err.iter_errors().any(|src| {
+-                        matches!(
+-                            src.downcast_ref::<RefFindError>(),
+-                            Some(RefFindError::NotFound { .. })
+-                        ) || matches!(
+-                            src.downcast_ref::<ObjectFindError>(),
+-                            Some(ObjectFindError::NotFound { .. })
+-                        )
+-                    });
+-                    if not_found {
+-                        return 
Error::RevisionNotFound(spec.to_string()).into();
+-                    }
+-                }
+-                Error::InvalidRevision(spec.to_string(), 
single_err.to_string()).into()
+-            })
++        self.rev_parse_single(spec).map_err(|err| -> anyhow::Error {
++            // Distinguish "the spec parsed but resolved to nothing" from 
"the spec
++            // is malformed".
++            if err.is_not_found() {
++                Error::RevisionNotFound(spec.to_string()).into()
++            } else {
++                Error::InvalidRevision(spec.to_string(), 
err.to_string()).into()
++            }
++        })
+     }
+ 
+     fn get_comment_symbol(&self) -> String {
+--- a/src/ext/time.rs
++++ b/src/ext/time.rs
+@@ -70,7 +70,16 @@ mod tests {
+ 
+     #[test]
+     fn test_parse_raw_notz() {
+-        let time = Time::parse_time("123456").unwrap();
++        let time = Time::parse_time("1641479527").unwrap();
++        assert_eq!(time.seconds, 1641479527);
++        assert_eq!(time.offset, 0);
++    }
++
++    #[test]
++    fn test_parse_short_epoch() {
++        // Like git, a bare number needs at least 9 digits to be read as 
epoch seconds.
++        assert!(Time::parse_time("123456").is_err());
++        let time = Time::parse_time("@123456").unwrap();
+         assert_eq!(time.seconds, 123456);
+         assert_eq!(time.offset, 0);
+     }
+--- a/src/hook.rs
++++ b/src/hook.rs
+@@ -66,9 +66,10 @@ pub(crate) fn run_pre_commit_hook(repo:
+ 
+     let work_dir = repo.workdir().expect("not a bare repo");
+ 
+-    let mut hook_command = std::process::Command::from(
++    let mut hook_command = std::process::Command::try_from(
+         
gix::command::prepare(hook_path).stdout(std::process::Stdio::inherit()),
+-    );
++    )
++    .with_context(|| format!("`{hook_name}` hook"))?;
+     hook_command.current_dir(work_dir);
+     if !use_editor {
+         hook_command.env("GIT_EDITOR", ":");
+@@ -117,9 +118,10 @@ pub(crate) fn run_commit_msg_hook<'repo>
+ 
+     // TODO: when git runs this hook, it only sets GIT_INDEX_FILE and 
sometimes
+     // GIT_EDITOR. So author and committer vars are not clearly required.
+-    let mut hook_command = std::process::Command::from(
++    let mut hook_command = std::process::Command::try_from(
+         
gix::command::prepare(hook_path).stdout(std::process::Stdio::inherit()),
+-    );
++    )
++    .with_context(|| format!("`{hook_name}` hook"))?;
+     hook_command.current_dir(work_dir);
+     hook_command.env("GIT_INDEX_FILE", &index_path);
+     if !use_editor {
diff -Nru stgit-2.6.1/debian/patches/series stgit-2.6.1/debian/patches/series
--- stgit-2.6.1/debian/patches/series   2026-09-18 14:52:05.000000000 -0500
+++ stgit-2.6.1/debian/patches/series   2026-10-09 22:02:18.000000000 -0500
@@ -4,3 +4,4 @@
 use_winnow_0_7
 gix-0.87.patch
 reject-lone-at-partial-ref.patch
+gix-0.89.patch

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature


--- End Message ---
--- Begin Message ---
Source: stgit
Source-Version: 2.6.1-1.3
Done: Simon Quigley <[email protected]>

We believe that the bug you reported is fixed in the latest version of
stgit, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Simon Quigley <[email protected]> (supplier of updated stgit package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Fri, 16 Oct 2026 15:54:57 -0500
Source: stgit
Architecture: source
Version: 2.6.1-1.3
Distribution: unstable
Urgency: medium
Maintainer: Maximiliano Curia <[email protected]>
Changed-By: Simon Quigley <[email protected]>
Closes: 1150661
Changes:
 stgit (2.6.1-1.3) unstable; urgency=medium
 .
   * Non-maintainer upload (Closes: #1150661).
   * Cherry-pick upstream gix 0.89 update (2833a46f).
Checksums-Sha1:
 9c710a9b9a8bddae52211eb0db027f06752e5fb0 2514 stgit_2.6.1-1.3.dsc
 44f1735df07637c880130afd5537a92452cdf3af 16012 stgit_2.6.1-1.3.debian.tar.xz
 62d08a30792d5dd92f23d0f8973aab9fa12c7da8 8361 stgit_2.6.1-1.3_source.buildinfo
Checksums-Sha256:
 891e3e892023d75ba8ba8dcea1f9827eff3df8548e96dae19ad1f13df92825d9 2514 
stgit_2.6.1-1.3.dsc
 38433a7509f63a129bf206ca426d841797b7d15050d92b1ebdcba73df22c10e4 16012 
stgit_2.6.1-1.3.debian.tar.xz
 270ecee57118a1afa9a377dc67e5d17f8eddc31ff7d45fe47a7c5615208b31d5 8361 
stgit_2.6.1-1.3_source.buildinfo
Files:
 1a90628889be82a8388dd94e8a8e6f74 2514 vcs optional stgit_2.6.1-1.3.dsc
 73ef50ae7de664b1b5c036633b497e4b 16012 vcs optional 
stgit_2.6.1-1.3.debian.tar.xz
 f2ec5fc64cbe4894221fb0e47f83a0dd 8361 vcs optional 
stgit_2.6.1-1.3_source.buildinfo

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEXHq+og+GMEWcyMi14n8s+EWML6QFAmrSj2UACgkQ4n8s+EWM
L6Tzxg//VW26/WLMshNPKiPS8TEEiww7ktuaa5kTtR1IX0pirgECCF7kbT0DOOCW
EYsR3bwTdBY5E57Zi7pRF+OUsB04DsxYtW71owo0x06saICRSeMeKGFLiRtGuHGx
7wnP8ARd6v+sGb73hR0h2ys5FOR6nraso6OcbU5LhXE5yFOP3dMvOHXYVfj+9zCi
B6WL3vqQCrssPGKBBTYTh1s0sT5PaQpsrna+k+qKk7QaM0K/sHOA9yvbIwMCY2vj
CusBDJucVhhlDJjVP4zcuw2u/yRx3NaDGR8P2VcoSRNK5fRU7e9ccbYJyrPNpH6y
7Bhs6bpqKn3/X4/JoU5pKLNfIt/x8GF9cZIrrTfShIH0ucGqdHJyoVeLB156whfK
qOD+ju+CLZXJkuFNW9IGb2az7YnqHvVSCgSC4ZDKJ6K4/KwFjHG4YqNFNM6cnVzW
zTeqFQyAndgL5j4trFxgYnim3YJdf7Sf9vTDzkvXWZnms+XK0pxJFrC3lmuzi5Lh
4x28dq+BFqB5ullIVy6+Bztg+CuSTsCLNXW7EvatQu54i/j3plCKcul8gB3pyMig
qvdeXTt3155lhrRRhwgNXIoKjuNTdrS1XNVIXgeja004ehMEeyEk4Jl2xvMWpgws
B1ROzkfvkUCGJJHVR4cuWSV2hyTrX1WMB1ypMlNbehBNic4h7CQ=
=k+05
-----END PGP SIGNATURE-----

Attachment: pgpvXfAwFpVF4.pgp
Description: PGP signature


--- End Message ---

Reply via email to