2009-12-31 26 views
9

Intentamos mantener la propiedad 'svn: mergeinfo' solo en la carpeta de la raíz. Sin embargo, seguimos viendo que se arrastra en subcarpetas. Hemos sido capaces de identificar algunas de las posibles causas:Cómo evitar svn: mergeinfos en subcarpetas?

  1. Movimiento de una carpeta en el Navegador de repositorios
  2. en movimiento y/o paquetes de cambio de nombre en IntelliJ
  3. Utilizando viejos clientes SVN

Puede ¿alguien proporciona una lista de cosas que no debemos hacer para evitar crear estas propiedades por accidente?

Las herramientas que estamos utilizando son IntelliJ 8 (pronto 9), Ankh, TortoiseSVN y SlikSvn.

Respuesta

1

Escribimos un enganche/desencadenador SVN que simplemente rechaza confirmaciones a svn: propiedades en no troncal. Nunca miramos hacia atrás.

+0

¿Podría compartir el script hook? –

+0

@ WinstonSmith: ya no trabajo en la misma empresa, por lo que no tengo acceso al enganche. Si es realmente importante para usted, puedo intentarlo y preguntar, pero debe ser muy trivial de implementar (si no, simplemente haga una pregunta aquí sobre cómo hacerlo). – ripper234

0

No puedo proporcionar una lista. Le recomendaría que use svn hook que hará acción de usuario de registro que conduce a la propiedad de la carpeta cambie y emita una advertencia o rechace esa confirmación, lo que sea apropiado de acuerdo con su flujo de trabajo.

11

Desafortunadamente, los clientes de svn antiguos solo hacen esto, y las herramientas que se basan en estas versiones antiguas de svn también se rompen. La única forma de resolver este problema es eliminar las entradas de svn: mergeinfo creadas antes de que se hayan confirmado. Como la mayoría de las personas no son conscientes de que están creados, entonces la única manera real de hacer cumplir que es un gancho pre-commit, o simplemente hacer:

svn propdel --recursive svn:mergeinfo $ROOT/* 

a limpiarlos de vez en cuando. Tenga cuidado al hacer esto, ya que destruirá cualquier registro de fusiones parciales que tenga hecho, por lo que realmente debería hacer esto si realmente no realiza fusiones parciales. El que pregunta no lo hace, y nosotros tampoco en nuestro entorno.

El problema se corrigió en los nuevos clientes svn, por lo que el problema debería desaparecer lentamente, pero eso podría llevar algún tiempo antes de que se reemplacen todas las herramientas en su flujo de trabajo.

Basado en otra respuesta a esta pregunta, una explicación rápida de las causas del problema. Cuando haces una copia de trabajo, mueve o elimina los clientes svn anteriores a 1.5.5 creando una entrada de svn: mergeinfo espuria. Esto es resolved in svn 1.5.5.

+0

¿Esto no destruye la información de fusión existente, o es la información de fusión redundante allí? –

+1

En nuestro caso, mergeinfo fue redundante. Pero tienes razón, destruirá la información parcial de fusión de hormigas que has hecho. –

+0

respuesta actualizada para mencionar este problema y para describir el problema y cuándo se resolvió. –

0

Realizar fusiones en subcarpetas o archivos individuales hace que esto ocurra, y debería provocarlo, porque tiene que registrar la información de fusión.

La mejor manera es llevar a cabo sus fusiones en el nivel principal, y cuando sea necesario para aplicarlo de manera selectiva, revertir los cambios que no desea combinados, y luego confirmar.

+0

Obtengo esta propiedad incluso sin realizar ninguna combinación en subcarpetas. – ripper234

+0

A quien haya votado negativamente, por favor proporcione una razón para eso? No fusionarse en subniveles es vital si solo quieres tu información de combinación en el nivel principal. –

+1

No te recomendé, sin embargo, mientras que lo que dices es correcto, el problema es que las copias también estaban generando estas entradas. Esto se corrigió en 1.5.5 (* no cree mergeinfo para wc-wc moves o copies (r34184, -585)) –

Cuestiones relacionadas