Pregunta

Hola me preguntaba si hay una manera para que el servidor SVN para asignar automáticamente la propiedad svn: needs-lock propiedad en cualquier archivo que es binario y no textual.

Tenemos más bien un pequeño equipo de desarrolladores, pero apoyada en todo el mundo para recordar a establecer esta propiedad en archivos binarios de nueva creación que no tiene sentido, ya que es muy fácil olvidar una cosa así.

¿Fue útil?

Solución

Editar el archivo de configuración y SVN añadir una entrada para los apoyos de automóviles o la propiedad versionado uso svn:auto-props con SVN 1.8 y nuevos clientes. Leer SVNBook !

EDIT:

A partir de SVN 1.8 el que puede aplicar la propiedad svn:auto-props a la ruta raíz de su repositorio. Ver este nota de lanzamiento y actualizada SVNBook 1,8 capítulo.

Otros consejos

Apache Subversion 1.8 introdujo el href="http://subversion.apache.org/docs/release-notes/1.8.html#repos-dictated-config" rel="noreferrer"> depósito de configuración característica que requiere SVN 1,8 cliente , pero 1,8 servidor no es necesario ya que esta es una característica del lado del cliente.

Con Subversion 1.8, puede configurar patrones de auto-puntales dentro de un repositorio de Subversion usando el nuevo svn:auto-props propiedad heredada .

Por ejemplo, el valor se establece en svn:auto-props *.exe = svn:needs-lock=* propiedad en la raíz de su repositorio (o ruta del repositorio que representa una raíz de un proyecto). Esto resultará en cada uno que acaba de agregar * .exe después de haber aplicado la propiedad svn:needs-lock=*.

Puede almacenar valores de varias líneas en las propiedades de Subversion, por lo que puede agregar la siguiente norma svn: needs-lock y el patrón MIME para 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=*

Debe tenerse en cuenta que el método de puntales de automóviles tiene que ser configurado en cada cliente SVN que se utiliza. Así que cuando se está configurando un nuevo desarrollador, o un desarrollador existente en una máquina nueva, usted tiene que recordar para realizar esta configuración.

Si está utilizando toda TortoiseSVN , se puede establecer el tsvn: autoprops propiedad en la carpeta de base de cada caja y se serán aceptadas por todos los clientes de TortoiseSVN.

Si realmente quiere clavar, usted tendrá que poner un pre-commit gancho en cada repositorio. El guión ejecutor puede alisarse fácilmente para esto.

Si tiene cualquier python-fu, RepoGuard (el sucesor de SVNChecker ) parece que podría ser útil también.

No importa lo que usted elija, no hay manera de aplicar retroactivamente la propiedad de los archivos existentes en el repositorio, creo. Es probable que pueda hacerlo cumplir en el próximo commit del fichero, sin embargo.

Hay una página en este wiki Subversion que describe todas las diferentes opciones sobre cómo añadir automáticamente las necesidades de bloqueo y la forma de garantizar que se ha establecido. La página también proporciona scripts de ejemplo y detalles de configuración:

http://www.orcaware.com/svn/wiki/Automatic_lock -Modificar-unlock

Utilice un pre-commit gancho

#!/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

y un gancho pre-lock

#!/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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top