War es hilfreich?

Lösung

Grundsätzlich benötigen Sie einen SVN pre-commit Haken. Zunächst aber, lesen Sie Haken im allgemeinen .

Sie wollen wahrscheinlich mit dem Kopieren der Pre-commit.tmpl Datei pre-commit und implementieren die Logik drin.

starten

Sie wollen wahrscheinlich wie die diff der gerade ausgeführten Transaktion für Linien untersuchen:     Hinzugefügt: svn: mergeinfo

Da die Informationen über die Datei dies hinzugefügt wurde auf einer andere Linie, müssen Sie möglicherweise ein komplexere Bearbeitungswerkzeug als grep -. Vielleicht einen einfachen Perl-Skript

Wenn Sie feststellen, dass eine Transaktion eine zusätzliche Eigenschaft hat, dass Sie nicht möchten, können Sie die COMMIT-Block; oder, wenn Sie besonders gewagte sind, könnten Sie versuchen, die Transaktion zu ändern und weiter.

Andere Tipps

In der folgenden sollte funktionieren. Ihr Repository hat bereits die svn: mergeinfo auf den Stamm, so dass Sie wollen nie jemand ein wieder hinzuzufügen.

Durch die Art und Weise, unsere eigentliche Haken stellt auch sicher, dass jeder von einer Protokollmeldung begleitet begehen wird, und schützt auch gegen die Streichung von einigen unserer wichtigen Top-Level-Verzeichnisse über Repo-Browser.

@echo off

set logfile=%TEMP%\%2.txt

"c:\program files\subversion\svnlook" log -t %2 %1 > %logfile%

for /f "tokens=1,2*" %%i in (%logfile%) do (
    if %%i==UU goto checkmergetracking
)

for /f "tokens=1,2*" %%i in (%logfile%) do (
    if %%i==_U goto checkmergetracking
)

del %logfile%
exit 0

:checkmergetracking
"c:\program files\subversion\svnlook" diff -t %2 %1 > %logfile%
find "Added: svn:mergeinfo" %logfile%
if ERRORLEVEL 1 goto nomergeinfo

del %logfile%
echo "Addition of Merge Info Not Allowed" >&2
exit 1

:nomergeinfo
del %logfile%
exit 0
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top