Subversion: pre-lock CMD Script für Windows

Mal was zum Thema Subversion und Visual Studio.
Leider Zeigt das Visual Studio in verwendung mit SVN nicht an, wer gerade einen exklusiven lock auf eine Datei hat.
Das Problem gibts beim Visual SourceSafe 2005 übrigens auch.
Er Zeigt zwar an das eine Datei schon von jmd anderen Ausgecheckt wurde, er zeigt jedoch nicht an von wem das passiert ist.

Für Subversion kann man sich hier ein Hook-Script bauen, welches im Idealfall den Namen und Sperr-Kommentar des Users ausgibt, welcher die Datei gesperrt hat, an der wir gerade arbeiten wollen.

Die Hook-Scripte werden in das Unterverzeichnis „\hooks\“ des SVN-Repositorys abgelegt.
Für das oben beschriebene Problem eignet sich am besten das pre-lock Script (wird vor dem Sperren ausgeführt).

Hier ist mein frisch zusammen gebautes Pre-Lock Script:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@echo off
 
set SVN_REPOS=%1
set SVN_PATH=%2
set SVN_USER=%3
set SVNLOOK="C:\Programme\TortoiseSVN\svn\svnlook.exe"
 
set lock_owner=""
set lock_message=""
 
REM Skip one row of output, take second token, and delimiter is " "
for /f "skip=1 tokens=2" %%U in ('%SVNLOOK% lock %SVN_REPOS% %SVN_PATH%') do (
  set lock_owner=%%U
  goto :check_owner
)
 
:check_owner
if "%lock_owner%" == """" exit 0
if "%lock_owner%" == "%SVN_USER%" exit 0
 
for /f "skip=5 tokens=*" %%U in ('%SVNLOOK% lock %SVN_REPOS% %SVN_PATH%') do (
  set lock_message=%%U
)
 
@echo on
if not "%lock_message%" == """" (
echo -------------------------------------------------------------- 1>&2
echo Sorry %SVN_USER%... 1>&2
echo Fehler: Es konnte kein Lock auf die Datei erstellt werden! 1>&2
echo -------------------------------------------------------------- 1>&2
echo Die Datei: %SVN_PATH% 1>&2
echo Ist gesperrt von:  %lock_owner%. 1>&2
echo Lock message: %lock_message% 1>&2
 
exit 1 
)

Möchte man nun im Visual Studio einen Lock auf eine Datei holen, auf der es bereits einen Lock gibt, erscheint folgene ausgabe:
pre-lock

leave your comment

*

Unterstütze den Frickelblog!