From 72e488eea477daa5bc4ba68f10489e083b7a92fc Mon Sep 17 00:00:00 2001 From: Schalli Date: Wed, 16 Sep 2026 17:43:48 +0200 Subject: [PATCH] fix(desktop): Commit-Stempel aus TESSERA_COMMIT (Pipeline) statt nur git rev-parse; build.rs laeuft bei Aenderung neu Mit dem Cargo-Zwischenspeicher wuerde ein einmal einkompilierter Stempel sonst veralten und der Beta-Update-Hinweis dauerhaft erscheinen. Co-Authored-By: Claude Opus 5 (1M context) --- .gitea/workflows/ci.yml | 4 ++++ apps/desktop/src-tauri/build.rs | 25 +++++++++++++++++++------ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 16d4092..bdca1d4 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -62,6 +62,10 @@ jobs: desktop: name: Desktop-Pakete bauen runs-on: ubuntu-latest + env: + # Commit-Stempel fuer build.rs (WR-02): mit Cargo-Zwischenspeicher wuerde + # `git rev-parse` im Build-Skript sonst nicht neu ausgewertet. + TESSERA_COMMIT: ${{ gitea.sha }} needs: test if: gitea.ref == 'refs/heads/main' || startsWith(gitea.ref, 'refs/tags/v') steps: diff --git a/apps/desktop/src-tauri/build.rs b/apps/desktop/src-tauri/build.rs index e683c5e..e70ba5d 100644 --- a/apps/desktop/src-tauri/build.rs +++ b/apps/desktop/src-tauri/build.rs @@ -8,13 +8,26 @@ fn main() { // `desktop-collect.sh` fuer manifest.json schreibt. Fehlt `git` (z. B. // Quell-Tarball ohne .git-Ordner), bleibt der Wert leer -- dann greift // nur noch der reine Versionsvergleich. - let commit = std::process::Command::new("git") - .args(["rev-parse", "--short=7", "HEAD"]) - .output() + // + // Vorrang hat die Umgebungsvariable TESSERA_COMMIT (die Pipeline setzt sie + // auf den vollen Commit-Hash): der Cargo-Zwischenspeicher wuerde ein + // `git rev-parse` sonst nicht neu auswerten, und ein alter Stempel im + // Programm liesse den Beta-Update-Hinweis dauerhaft erscheinen. + println!("cargo:rerun-if-env-changed=TESSERA_COMMIT"); + println!("cargo:rerun-if-changed=../../../.git/HEAD"); + let commit = std::env::var("TESSERA_COMMIT") .ok() - .filter(|output| output.status.success()) - .and_then(|output| String::from_utf8(output.stdout).ok()) - .map(|s| s.trim().to_string()) + .map(|s| s.trim().chars().take(7).collect::()) + .filter(|s| !s.is_empty()) + .or_else(|| { + std::process::Command::new("git") + .args(["rev-parse", "--short=7", "HEAD"]) + .output() + .ok() + .filter(|output| output.status.success()) + .and_then(|output| String::from_utf8(output.stdout).ok()) + .map(|s| s.trim().to_string()) + }) .unwrap_or_default(); println!("cargo:rustc-env=APP_COMMIT={commit}");