Automatisches Hinzufügen svn: needs-lock
-
22-08-2019 - |
Frage
Hallo, ich habe mich gefragt, ob es einen Weg für die Server SVN ist automatisch die SVN zuweisen: needs-lock Eigenschaft auf eine beliebige Datei, die binäre und nicht textliche ist.
Wir haben eine eher kleine Entwickler-Team, sondern auf jeder ruht sich erinnern an neu erstellten Binärdateien zum Festlegen dieser Eigenschaft ist nicht sinnvoll, da es sehr einfach ist, so etwas zu vergessen.
Lösung
die SVN-config-Datei bearbeiten und einen Eintrag für Auto Requisiten oder Verwendung svn:auto-props
versioniert Eigenschaft mit SVN 1.8 und neueren Clients hinzuzufügen. SVNBook lesen !
EDIT:
Von SVN 1.8 die Sie können die svn:auto-props
Eigenschaft auf den Root-Pfad Ihres Repositorys anzuwenden. Sehen Sie diese Release-Info rel="nofollow und aktualisiert SVNBook 1.8 Kapitel .
Andere Tipps
Apache Subversion 1.8 führte die Repository Dictated Konfiguration Merkmal, das erfordert SVN 1.8 Client , aber 1.8-Server ist nicht erforderlich, da diese eine clientseitige Funktion.
Mit Subversion 1.8 können Sie auto-props-Muster in einem Repository mit der neuen Subversion svn:auto-props
geerbte Eigenschaft .
Zum Beispiel setzt svn:auto-props
Werteigenschaft auf der Wurzel Ihrer Repository *.exe = svn:needs-lock=*
(oder Repository-Pfad, die eine Wurzel eines Projektes darstellt). Dies führt in jeder neu hinzugefügten * .exe-Datei svn:needs-lock=*
Eigenschaft angewendet zu haben.
Sie können speichern mehrzeiligen Werte in Subversion Eigenschaften, so dass Sie den folgenden Standard SVN hinzufügen: needs-lock und MIME-Muster svn:auto-props
:
*.bmp = svn:mime-type=image/bmp;svn:needs-lock=*
*.gif = svn:mime-type=image/gif;svn:needs-lock=*
*.ico = svn:mime-type=image/x-icon;svn:needs-lock=*
*.jpeg = svn:mime-type=image/jpeg;svn:needs-lock=*
*.jpg = svn:mime-type=image/jpeg;svn:needs-lock=*
*.png = svn:mime-type=image/png;svn:needs-lock=*
*.tif = svn:mime-type=image/tiff;svn:needs-lock=*
*.tiff = svn:mime-type=image/tiff;svn:needs-lock=*
*.doc = svn:mime-type=application/x-msword;svn:needs-lock=*
*.docx = svn:mime-type=application/x-msword;svn:needs-lock=*
*.jar = svn:mime-type=application/octet-stream;svn:needs-lock=*
*.odc = svn:mime-type=application/vnd.oasis.opendocument.chart;svn:needs-lock=*
*.odf = svn:mime-type=application/vnd.oasis.opendocument.formula;svn:needs-lock=*
*.odg = svn:mime-type=application/vnd.oasis.opendocument.graphics;svn:needs-lock=*
*.odi = svn:mime-type=application/vnd.oasis.opendocument.image;svn:needs-lock=*
*.odp = svn:mime-type=application/vnd.oasis.opendocument.presentation;svn:needs-lock=*
*.ods = svn:mime-type=application/vnd.oasis.opendocument.spreadsheet;svn:needs-lock=*
*.odt = svn:mime-type=application/vnd.oasis.opendocument.text;svn:needs-lock=*
*.pdf = svn:mime-type=application/pdf;svn:needs-lock=*
*.ppt = svn:mime-type=application/vnd.ms-powerpoint;svn:needs-lock=*
*.ser = svn:mime-type=application/octet-stream;svn:needs-lock=*
*.swf = svn:mime-type=application/x-shockwave-flash;svn:needs-lock=*
*.vsd = svn:mime-type=application/x-visio;svn:needs-lock=*
*.xls = svn:mime-type=application/vnd.ms-excel;svn:needs-lock=*
*.zip = svn:mime-type=application/zip;svn:needs-lock=*
Es ist zu beachten, dass das Auto Requisiten Verfahren konfiguriert werden verwendet, auf jedem SVN-Client wird. Also, wenn Sie einen neuen Entwickler oder ein bereits vorhandenen Entwickler auf eine neue Maschine einrichten, müssen Sie daran denken diese Konfiguration auszuführen.
Wenn Sie alle verwenden TortoiseSVN können Sie einstellen, die tsvn: autoprops Eigenschaft auf dem Basisordner jeder Kasse und es wird von allen TortoiseSVN Kunden honoriert werden.
Wenn Sie es wirklich nageln wollen, müssen Sie ein pre-commit in jedem Repository Haken. Die Enforcer Skript könnte leicht für diese nachgerüstet werden.
Wenn Sie irgendwelche python-fu, RepoGuard (den Nachfolger SVNChecker ) sieht aus wie es auch nützlich sein könnte.
Egal was Sie wählen, gibt es keine Möglichkeit, die Immobilie an vorhandenen Dateien im Repository rückwirkend gilt, glaube ich. Sie können sich wahrscheinlich auf der nächsten Durchsetzung der Datei begehen, aber.
Es gibt eine Seite auf dieser Subversion Wiki, die die verschiedenen Möglichkeiten, wie beschrieben automatisch needs-lock hinzugefügt, und wie gewährleistet sie gesetzt wurde. Die Seite gibt auch Beispiel-Skripte und Konfigurationsdetails:
http://www.orcaware.com/svn/wiki/Automatic_lock -modify-unlock
ein pre-commit Haken
#!/bin/bash
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
ICONV=/usr/bin/iconv
SVNLOOKOK=1
# Check files for svn:needs-lock property
# Exit on all errors.
set -e
echo "`$SVNLOOK changed -t "$TXN" "$REPOS"`" | while read REPOS_PATH
do
if [[ $REPOS_PATH =~ (A|M|U)[[:blank:]]{3}(.*)\.(.*) ]]
then
if [ ${#BASH_REMATCH[*]} -ge 2 ]
then
FILENAME=${BASH_REMATCH[2]}.${BASH_REMATCH[3]};
# Make sure every file has the svn:needs-lock property set
if [ "" == "`$SVNLOOK propget -t \"$TXN\" \"$REPOS\" svn:needs-lock \"$FILENAME\" 2> /dev/null`" ]
then
ERROR=1;
echo "" >&2
echo "svn:needs-lock property has to be set on \"$FILENAME\"" >&2
echo "" >&2
fi
fi
fi
test -z $ERROR || (exit 1)
done
# All checks passed, so allow the commit.
exit 0
und ein Vorblockierzustandes Haken
#!/bin/bash
REPOS="$1"
PATH="$2"
USER="$3"
# If a lock exists and is owned by a different person, don't allow it
# to be stolen (e.g., with 'svn lock --force ...').
# (Maybe this script could send email to the lock owner?)
SVNLOOK=/usr/bin/svnlook
GREP=/bin/grep
SED=/bin/sed
LOCK_OWNER=`$SVNLOOK lock "$REPOS" "$PATH" | \
$GREP '^Owner: ' | $SED 's/Owner: //'`
# If we get no result from svnlook, there's no lock, allow the lock to
# happen:
if [ "$LOCK_OWNER" = "" ]; then
exit 0
fi
# If the person locking matches the lock's owner, allow the lock to
# happen:
if [ "$LOCK_OWNER" = "$USER" ]; then
exit 0
fi