SVN Locks auslesen und als Tabelle im Web darstellen

In Subversion kann man via

svnadmin lslocks /srv/svn-parent/$REP_NAME/

die jeweils in einem Repository befindlichen Locks auf Dateien auslesen.

Das würde auf der Konsole dann so aussehen:

Pfad: /trunk/scaling.tdms_index
UUID-Marke: opaquelocktoken:a956dfad-8b20-43a1-84c0-789290b1c611
Eigentümer: USERNAME
Erstellt: 2016-08-17 20:10:56 +0200 (Mi, 17. Aug 2016)
Läuft ab:
Kommentar (1 Zeile):

...

Das ist weder übersichtlich, noch informativ, wenn man sich einen Überblick verschaffen möchte.

Daher gibt es hier zum Download eine kleine Webapplikation, die die Informationen schöner und übersichtlicher darstellt. Der Inhalt muss auf dem Subversion Server selbst in ein neues Verzeichnis des Apache Servers gelegt werden.

2016-08-30 15_45_01-Subversion Server - Locks

In der Anwendung kann man die Einträge über die Suche oben rechts filtern.

Das enthaltene PHP-Skript greift auf eine Datei zu, die die Ausgabe des o.g. Befehls enthält.

Um das Ausgabeformat anzupassen, muss folgendes Shell Skript als Cronjob regelmäßig laufen und die Ausgabe in das root Verzeichnis der Applikation legen:

[fusion_builder_container hundred_percent=”yes” overflow=”visible”][fusion_builder_row][fusion_builder_column type=”1_1″ background_position=”left top” background_color=”” border_size=”” border_color=”” border_style=”solid” spacing=”yes” background_image=”” background_repeat=”no-repeat” padding=”” margin_top=”0px” margin_bottom=”0px” class=”” id=”” animation_type=”” animation_speed=”0.3″ animation_direction=”left” hide_on_mobile=”no” center_content=”no” min_height=”none”]


#!/bin/bash
# Das Programm dient dazu alle Locks mehrerer Repos auszugeben

# Deklarationen
SVN_SOURCE_DIR="/srv/svn-parent/"

# Alle Repositories auflisten und in LIST_REPS zwischenspeichern
find $SVN_SOURCE_DIR -maxdepth 1 -type d | sort > LIST_REPS

# 1 Zeile löschen (srv/svn-parent ist kein Repo)
sed -i 1D /root/LIST_REPS

# Schleife um Locks im jeweiligen Repostiory zu finden
for line in `cat /root/LIST_REPS`;do
REP=$line
REP_NAME=$(basename $REP)
# Locks ausgeben
echo [repository:$REP_NAME]
svnadmin lslocks /srv/svn-parent/$REP_NAME/
done

In der Crontab folgendes hinzufügen:

*/5 * * * * /root/show_locks > /var/www/locks/svn/locks_unsorted

Diese Lösung ist nicht unbedingt “sauber” programmiert, aber funktional…[/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s