2009-07-23 6 views
1

Ich habe eine Batch-Datei, die ich von einer Windows XP w/Service Pack 3-Arbeitsstation ausgeführt SQL-Änderungen in einer Datenbank mit sqlcmd.exe in SQL 2005 ausgeführt wird.TortoiseSVN von der Befehlszeile und "IF ERRORLEVEL"?

Ich habe einen Befehlszeileneintrag für TortoiseSVN automatisch die lokale Kopie von meinem Repository zu aktualisieren wie so:

tortoiseproc /command:update /path:"C:/SVN/My Code/Dev/2009.07.23" /closeonend:3 

nach the documentation, die /closeonend: 3 Option wird die TortoiseSVN Dialogfeld geöffnet, wenn Fehler, Konflikte oder verschmilzt verlassen treten während das Update.

Wenn dies der Fall ist und der Benutzer den Dialog schließt, ohne die Probleme zu lösen, können möglicherweise Änderungen, die auf die Testdatenbank einer bestimmten Zweigstelle angewendet werden sollen, weggelassen werden.

Wenn das TortoiseSVN Dialogfeld wird im Falle eines Fehlers, Konflikt geschlossen oder nach einem Update verschmelzen, wird die Error- zu einem gewissen ungleich Null Wert eingestellt werden, so dass ich den Rest der Batch-Datei umgehen ? Oder wird es glücklich zurückgeben um anzuzeigen, dass es seinen Job erfolgreich getan hat, auch wenn der Code nicht ganz richtig ist?

+2

Ich würde das eigentlich nur testen. Erstellen Sie ein Dummy-Repository lokal, C: \ Temp \ Svn oder etwas, überprüfen Sie es in zwei Verzeichnisse, fügen Sie eine Datei zu einem von ihnen und Commit, dann aktualisieren Sie den anderen, ändern Sie die Datei in beiden, Commit in einem, und führen Sie Ihre Batch-Datei in der anderen, um zu sehen, was passiert. –

+0

Warum benutzen Sie 'svn.exe' nicht? Fehle ich etwas? – sbi

+0

Das war mein erster Gedanke, aber ich würde eher versuchen, alles mit der ausführbaren Datei von Tortoise zu machen, anstatt die Schildkröte und den SVN fortwährend pflegen zu müssen; auch wer weiß, ob man irgendwann eine Veränderung macht, die die Funktionalität des anderen auf eine subtile oder schmerzhafte Weise torpediert. –

Antwort

0

Ich landete nur manuell aktualisieren meine lokalen SVN-Repository vor dem Ausführen der anderen Aktionen in der Batch-Datei.

1

alte Frage, aber ich begegnet die gleiche Sache heute und es gibt eine Lösung ...

TortoiseProc -1 zurück auf Fehler und 0 auf Erfolg, so Folgenden wird die das Problem für mich gelöst:

TortoiseProc /path:"%targetdir%" /command:update /closeonend:3 
IF %ERRORLEVEL% NEQ 0 goto SvnError 

:SvnSuccess 
echo It worked! 
goto Done 

:SvnError 
echo It didn't work! 

:Done