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.

War es hilfreich?

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

Mit

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top