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:
- Del lado del cliente: alterando las autoprops en la configuración del cliente svn
- 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:
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.
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$