Okay, obwohl die Frage (noch) nicht vollständig beantwortet wurde, starte ich hier jetzt eine Antwort und werde sie mit neuen Erkenntnissen füllen ...
Umgehen
Um das Problem zu umgehen, übergeben Sie einfach das übergeordnete Verzeichnis des Switch-Pfads und nicht den Switched-Pfad selbst oder ein untergeordnetes Element davon.
Nur um es erwähnt zu haben: Es ändert sich nicht das Verhalten, wenn die Hook-Skript-Eigenschaft rekursiv angewendet wird.
Syntax für Hook Script Path (Eigenschaften tsvn:*hook
)
Wenn Sie den Pfad zu einem Hook-Skript angeben, ist es sehr wichtig, dass Sie, sobald Sie einen der Platzhalter verwenden, %REPOROOT%
oder %REPOROOT+%
den Schrägstrich /
als Pfadtrennzeichen verwenden. Ich glaube, das hängt mit der Tatsache zusammen, dass diese Variablen intern die URL zum Repository-Stamm enthalten, gemäß der Dokumentation, nicht jedoch einen lokalen Arbeitskopienpfad (WC). Bei festen lokalen Pfaden werden sowohl Schrägstriche /
als auch umgekehrte Schrägstriche \
akzeptiert.
Falls der Pfad enthält SPACEs, müssen Sie ihn in Anführungszeichen setzen. Sie können Zitate im Allgemeinen verwenden, da es sowieso nicht schadet.
Normaler oder vermittelter Pfad, Verzeichnisebenen
Nehmen wir an, wir haben ein Repository, D:\TEST\repo
enthält /trunk
, /branches
, /tags
und /hooks
auf der obersten Ebene, ein Skript script.bat
in /hooks
mit dem Inhalt exit 0
, eine Datei mit dem Namen file.txt
in /trunk
, einem Zweig /trunk
an /branches/test
und einen anderen Zweig der /trunk
an /branch
; Das WC ist zwar ausgecheckt D:\TEST\wc
, aber wir haben eine spärliche Kasse, so dass nur /trunk
und da /hooks
sind (beide voll rekursiv).
Richten Sie dann eine neue Eigenschaft tsvn:startcommithook
im WC-Stammverzeichnis ein:
Versuchen Sie jetzt, irgendetwas an einem beliebigen WC-Speicherplatz (root /trunk
, usw.) festzulegen. Das Dialogfeld zum Bestätigen / Ablehnen des Hook-Skripts wird angezeigt. Es enthält den folgenden Pfad für das Hook-Skript. Dies ist der richtige Pfad. Das Skript wird also ausgeführt, wenn Sie auf "Ausführen" klicken:
Wechseln Sie jetzt den lokalen WC-Pfad D:\TEST\wc\trunk
zu /branches/test
und versuchen Sie, die lokale WC-Datei festzuschreiben file.txt
. Im Dialogfeld "Genehmigen / Ablehnen" wird diesmal der folgende falsche Pfad angezeigt:
Wenn Sie auf "Ausführen" klicken, kann das Skript offensichtlich nicht ausgeführt werden:
Aber wenn der lokalen WC Weg Umschalten D:\TEST\wc\trunk
auf /branch
jetzt und versuchen, die lokale WC - Datei zu begehen file.txt
, genehmigen das / ablehnt Dialog zeigt den richtigen Weg wieder wie oben, und das Skript ist in der Lage zu laufen.
Offensichtlich scheinen unterschiedliche Tiefen in der Verzeichnishierarchieebene von normalen und umgeschalteten Pfaden die richtige Erweiterung des Platzhalters zu beeinträchtigen %REPOROOT%
.
Dieses Verhalten ist genau das gleiche, wenn das Hook-Skript festgeschrieben wurde oder nicht.