Fuerza svn: eol-style = native en el server?

Actualmente, para asegurarnos de que la propiedad de subversión eol-style esté configurada como native para cada nuevo file agregado a nuestro proyecto, debemos agregar esto al file ~/.subversion/config en cada una de nuestras máquinas de desarrollo:

 [miscellany] enable-auto-props = yes [auto-props] *.java = svn:eol-style=native 

¿Hay alguna manera de hacer el equivalente en el server svn?

No no hay.

Puede usar scripts de gancho para search la propiedad que se establecerá o no, pero aparte de eso no es posible. Subversion, de manera diferente que CVS, no puede cambiar el contenido del código proveniente de una confirmación.

El libro de SVN incluye una nota sobre esta pregunta :

Advertencia

No intente modificar la transacción utilizando scripts hook. Un ejemplo común de esto sería establecer properties automáticamente como svn:eol-style o svn:mime-type durante la confirmación. Si bien esto puede parecer una buena idea, causa problemas. El principal problema es que el cliente no sabe sobre el cambio realizado por el script hook, y no hay forma de informar al cliente que está desactualizado. Esta incoinheritance puede llevar a un comportamiento sorprendente e inesperado.

En lugar de intentar modificar la transacción, es mucho mejor verificar la transacción en el enlace precompromiso y rechazar la confirmación si no cumple con los requisitos deseados.

Solo porque la respuesta de Fausto ahora está desactualizada después del lanzamiento de Subversion 1.8


En el caso de Subversion 1.8 o posterior, puede usar en el repository (no globalmente para todos los repositorys en el server) la configuration dictada del repository (vea también el tema en el blog de Collab ), a saber – svn: auto-props en la raíz del tronco de cada repository

No pude encontrar un ejemplo de cómo comprobar la propiedad svn: eol-style para el código fuente en el script de enlace precompra directamente. El más cercano es el check-mime-type.pl que utiliza properties tipo mime para determinar si un file es un file de text.

La siguiente secuencia de commands insertada en el file de secuencia de commands previa a la confirmación comprobará que todos los files .cpp / .h agregados en una confirmación tengan establecida la propiedad svn: eol-style. (Se puede extender fácilmente para verificar extensiones de file adicionales). También proporcionará posts para indicar qué files faltan a la propiedad svn: eol-style.

 REPOS="$1" TXN="$2" # Get new cpp/h files ADDFILES=$(${SVNLOOK} changed "$REPOS" -t "$TXN" | sed -n -e '/^A.*\(\.cpp\|\.h\)$/s/^A *//p') #echo "ADDFILES=$ADDFILES" >&2 # Check files for svn:eol-style property ESMISSING='' for f in ${ADDFILES} do if [[ "$(${SVNLOOK} pl ${REPOS} -t ${TXN} ${f})" != *svn:eol-style* ]] then # output to stderr to include message in svn commit ouput echo "No svn:eol-style property set on file $f" >&2 ESMISSING=1 fi done if [[ -n "$ESMISSING" ]] then exit 1 fi