¿Puede SVN hacer algo como los attributes de filter git?

No estoy muy familiarizado con git, pero parece que puede usar attributes de filter para, por ejemplo, orderar files XML antes de confirmar. El manual de SVN específicamente (y fuertemente) aconseja no utilizar ganchos de precompromiso para esto. ¿Hay otra manera?

La respuesta a esto parece ser: no. Creo que rechazar la confirmación es la única opción segura con SVN.

No hay otra manera de hacerlo, y encontrarás que hacer algo así incluso cuando es compatible no te causará más que dolores de cabeza. Ni siquiera se recomienda reformatear el código usted mismo antes de registrarse, ya que sus diferencias de revisión no le darán una buena idea de lo que realmente cambió. Solo lo hago si algo tiene un formatting tan horrible que no se puede leer.

El único lugar donde desea hacer algo como eso es usar scripts clean/smudge para ocultar la cadena de connection de la database, la contraseña de un portal de comercio, etc. Esto generalmente se hace si puede tener un file de configuration y es una mezcla de datos públicos funcionales y datos de security privada.

Sección de attributes de Pro Git Book

espero que esto ayude.

Esto suena como un trabajo para su editor IDE o XML. Eclipse, por ejemplo, le permite especificar varias acciones automáticas en el guardado (pero hace un editor de XML pobre) … Estoy seguro de que hay un editor XML que orderará o reformateará su XML para usted al momento de save.

No creo que los diffs sean un motivo en contra de esto, porque una buena herramienta de diferencias tendrá opciones para ignorar el espacio en blanco y / o las diferencias sin importancia, haciendo que ver las diffs sea fácil incluso si un file ha sido reformateado.

Dependiendo del equipo con el que trabajes, y si esta "limpieza" está alterando drásticamente cada file que tocas, es posible que quieras evitarlo o que esté perfectamente bien. Yo, por ejemplo, tengo Eclipse recortar espacios en blanco al final y agregar las annotations @Override que faltan en save, pero no digo que para volver a formatear totalmente mis files .java en save.

Con Git, usted tiene una copy completa del repository para su uso personal, por lo que no es un problema interponer files durante un commit. Después de todo, solo te estás afectando a ti mismo.

Sin embargo, Subversion tiene un repository centralizado que significa que los files muting durante una confirmación son más complicados y usualmente desaconsejados.

Uno de los problemas es que este tipo de cosas tiene que ser manejado por un gancho, y los ganchos, dado que se ejecutan en el server, no tienen acceso a su copy de trabajo. Pueden examinar la confirmación mediante el command svnlook de solo lectura, pero eso es todo. Sí, hay forms de evitarlo, pero como decía el manual, no se recomienda.

Incluso con los sistemas de control de versiones como Git y ClearCase, donde es posible enviar files durante una confirmación, todavía no es una buena idea. En primer lugar, puede ralentizar el process de confirmación a medida que se ejecuta el script hook, lo que puede frustrar al usuario. En segundo lugar, ¿qué sucede si el process de munging realmente rompe el file? Los desarrolladores deben probar y verificar sus cambios antes de comprometerlos. "Romper una construcción" es un crimen aún peor que tomar la última taza de café en la sala de descanso y no hacer otra olla. Sin embargo, aquí hay un desarrollador que hizo todo lo que se supone que deben hacer, ¡y fue el estúpido guión de gancho lo que lo hizo!

Esto es algo que debe hacer el process de compilation automatizado (está utilizando un sistema de compilation incremental como CruiseControl o Hudson, ¿no?). Esto se puede hacer como parte de las testings y la construcción se puede marcar como "inestable" si el file no está formateado correctamente. De hecho, Hudson tiene ganchos que pueden hacer esto como parte del process de compilation lo que hace que esto sea muy simple. El server de compilation puede notificar al progtwigdor de su error (¡Progtwigdor malo! ¡El file está mal sangrado! ¡No hay dona para usted!) Y el responsable técnico o el administrador de compilation.

Lo que se registra es lo que el desarrollador escribió y probó. El sistema de compilation puede realizar comprobaciones para formatear, probar unidades y todo lo demás.