fix/hook-worktree-safe
Git reicht GIT_DIR, GIT_INDEX_FILE und GIT_WORK_TREE an Hooks weiter. Der
Hook ruft flutter auf, und Flutter ermittelt seine eigene Version per git in
seinem SDK-Verzeichnis - mit geerbtem GIT_DIR liest es stattdessen DIESES
Repo und erfindet daraus eine SDK-Version.
Nachgemessen (flutter --version, gleiche Maschine, nur GIT_DIR variiert):
GIT_DIR=<repo>/.git/worktrees/<name> -> 3.48.0-0.2.pre, channel
[user-branch], revision =
Commit dieses Branches
GIT_DIR=<repo>/.git -> 3.48.0-0.2.pre, channel main,
revision = Commit von main
ohne GIT_DIR -> 3.44.8, channel stable
Es betrifft also BEIDE Faelle, nicht nur verlinkte Worktrees - nur das
sichtbare Symptom unterscheidet sich:
- Aus einem verlinkten Worktree scheitert die Abhaengigkeitsaufloesung
("The current Flutter SDK version is 0.0.0-unknown") und der Commit wird
abgelehnt, obwohl mit dem Code alles in Ordnung ist.
- Aus dem Haupt-Checkout laeuft das Gate zwar durch, aber Flutter baut sein
Werkzeug bei jedem Commit neu ("Building flutter tool...", ein bis zwei
Minuten). Diesen Preis zahlt dort bisher jeder Commit unbemerkt.
Zusaetzlich gibt Flutter dabei die Remote-URL des gelesenen Repos aus. Da
der Zugriffstoken in dieser URL eingebettet ist, stand er so in jeder
Hook-Ausgabe. Der Fix schliesst auch diesen Weg. (Die Token-Ablage selbst
gehoert getrennt behandelt - Credential-Helper statt URL-Einbettung.)
Fix: Repo-Wurzel merken, dann die von git gesetzten Variablen loeschen,
bevor flutter laeuft.
Getestet: Hook mit gesetztem GIT_DIR und GIT_INDEX_FILE aus einem
verlinkten Worktree aufgerufen - analyze und test laufen beide durch,
Exit 0. Unabhaengig von der zweiten Session im Haupt-Checkout bestaetigt.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QbuWT267W8rFDsaavANuEn
melo
A new Flutter project.
Getting Started
This project is a starting point for a Flutter application.
A few resources to get you started if this is your first Flutter project:
For help getting started with Flutter development, view the online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.
Languages
Dart
85.2%
HTML
12.5%
Kotlin
1.6%
Swift
0.3%
Ruby
0.3%