tortoise subversion subir repositorio proyecto desvincular create crear carpeta branches svn properties server-side pre-commit-hook version-control-keywords

subversion - svn checkout



Agregue automáticamente propiedades de palabras clave svn para archivos nuevos(en el lado del servidor) (3)

Los documentos de Subversion dicen que es una mala idea modificar una confirmación en el lado del servidor .

En cambio, podría hacer algo así como una versión personalizada del script svn_apply_autoprops periódicamente a través de cron (o incluso en el servidor desencadenado por un commit). El script svn_apply_autoprops es un poco más general que lo que necesita, pero debe ser sencillo configurar el archivo de configuración apropiado.

A partir de esta publicación, el sitio web de subversión está migrando en apache.org y no pude encontrar los documentos para las herramientas contrib.

Deseo agregar las propiedades svn (como svn: keyword = Id Date Rev Author) a los archivos luego de la confirmación de nuevos archivos.

Para que esto funcione, puede haber dos opciones principales:

  1. Del lado del cliente: alterando las autoprops en la configuración del cliente svn
  2. Del lado del servidor: hacer algo de magia con commit-hooks

El lado del cliente no siempre es deseable, ya que se necesita control sobre la configuración del cliente. Quiero resolver esto en el servidor. ¿Cómo puede hacerse esto?


Cada vez que tienes varias personas comprometidas, es probable que tengas configuraciones inconsistentes de subversión.

Resuelva este problema dos veces, como usted dice, a nivel del cliente y del servidor:

  1. NO modifique accesorios automáticamente durante la confirmación del servidor. Es casi seguro que esto te morderá en el trasero cuando tengas una excepción a tu regla y no puedas superarla.

  2. Envíe un correo electrónico a todos los desarrolladores con instrucciones para modificar sus archivos de configuración, como en:

Attention, teammates: On ALL the boxes you work on, please modify the file: ~/.subversion/config * under the section [miscellany], uncomment the line: enable-auto-props = yes under the section [auto-props], add or uncomment lines so they read: *.py = svn:eol-style="LF";svn:executable="ON";keywords="Id"; Note: you may test this is working by doing the following in your sandbox directory: touch delete.me.py svn add delete.me.py ls -al delete.me.py # you will see: -rwxrwxr-x 1 krice4 krice4 0 Apr 19 12:05 delete.me.py svn proplist delete.me.py # you will see: Properties on ''delme.py'': svn:executable keywords svn:eol-style svn revert delete.me.py rm delete.me.py

3. Después de enviar el correo electrónico, es hora de agregar un cinturón a los tirantes, porque algunos desarrolladores se van a olvidar de hacer lo que se supone que deben hacer. Por lo tanto, cree una advertencia molesta cada vez que alguien se comprometa sin configurar los accesorios correctamente.

Aconsejaría los siguientes enganches de detección para archivos Python. Todos deberían imprimir advertencias, NO evitar la operación de subversión, como se indicó anteriormente, las excepciones lo matarán. Tenga en cuenta que las excepciones pueden enviar correos electrónicos al usuario o enviar un correo electrónico a todo el grupo de desarrollo con el asunto:

"¡El usuario estúpido Kevin acaba de enviar un archivo con pestañas!"

  • verificar svn: ejecutable ENCENDIDO
  • verificar svn: palabras clave "Id"
  • verificar svn: eol-style "LF" # linux systems
  • verifica No hay Fichas en el archivo! (estos lío con varias cosas)

Para saber cómo escribir uno de estos enganches de compromiso, consulte: http://wordaligned.org/articles/a-subversion-pre-commit-hook


Desde la versión 1.8, se puede usar una configuración dictada del repositorio de características para establecer propiedades automáticamente en el lado del servidor.

Desde la configuración automática de la propiedad :

[...] un conjunto de definiciones de propiedad que todos los clientes que se conectan automáticamente consideran cuando operan en copias de trabajo desprotegidas de un servidor determinado. Subversion 1.8 y los clientes más nuevos admiten dicha funcionalidad a través de la propiedad heredable svn:auto-props .

Tenga en cuenta que solo necesita un nuevo cliente suficiente. A continuación encontrará un ejemplo completo donde utilicé svn command line client 1.8.8. con el servidor svn 1.6.11.

se requiere svn client versión 1.8+

jani@dev:/tmp/testrepo/text-files$ svn --version --quiet 1.8.8

Archivos creados antes de la configuración de propiedad de auto-props

jani@dev:/tmp/testrepo/text-files$ file f?.txt f1.txt: UTF-8 Unicode text f2.txt: UTF-8 Unicode text, with CRLF line terminators f3.txt: ASCII text, with CRLF line terminators jani@dev:/tmp/testrepo/text-files$

Establecer accesorios automáticos

jani@dev:/tmp/testrepo/text-files$ svn propset svn:auto-props "*.txt = svn:eol-style=LF" . property ''svn:auto-props'' set on ''.'' jani@dev:/tmp/testrepo/text-files$ svn proplist -v --recursive Properties on ''.'': svn:auto-props *.txt = svn:eol-style=LF jani@dev:/tmp/testrepo/text-files$

Crear un nuevo archivo f4.txt con terminadores de línea CRLF

jani@dev:/tmp/testrepo/text-files$ file f?.txt f1.txt: UTF-8 Unicode text f2.txt: UTF-8 Unicode text, with CRLF line terminators f3.txt: ASCII text, with CRLF line terminators f4.txt: UTF-8 Unicode text, with CRLF line terminators jani@dev:/tmp/testrepo/text-files$

Los terminadores de línea de f4.txt cambian después de confirmar

jani@dev:/tmp/testrepo/text-files$ svn add f4.txt A f4.txt jani@dev:/tmp/testrepo/text-files$ svn commit -m ''just another test'' . Adding f4.txt Transmitting file data . Committed revision 5. jani@dev:/tmp/testrepo/text-files$ file f?.txt f1.txt: UTF-8 Unicode text f2.txt: UTF-8 Unicode text, with CRLF line terminators f3.txt: ASCII text, with CRLF line terminators f4.txt: UTF-8 Unicode text jani@dev:/tmp/testrepo/text-files$ svn proplist -v --recursive Properties on ''.'': svn:auto-props *.txt = svn:eol-style=LF Properties on ''text-files/f4.txt'': svn:eol-style LF jani@dev:/tmp/testrepo/text-files$