tortoise tag subir repositorio proyecto excluir español desvincular crear carpeta borrar archivo svn

tag - tortoise svn



¿Cómo puedo hacer una única confirmación SVN en múltiples externos en la línea de comandos? (6)

Con el último SVN puedes hacer: --include-externals

Esto puede ser imposible, pero voy a preguntar de todos modos.

Sin entrar en los detalles de por qué es así, tengo dos comprobaciones principales en las que trabajo, una para la rama de lanzamiento de producción y otra para el troncal. Cada uno de ellos es una pequeña colección de referencias svn: externals a subproyectos, sin contenido directo en el directorio svn desprotegido.

Es decir, las cuatro directivas svn: externals agregan todo el contenido en cada uno de los directorios de pago.

Cuando hago una confirmación a través de Eclipse (/ Subclipse) puedo realizar cambios en todos los proyectos externos de una sola vez, lo cual es bueno porque son solo subproyectos separados en el mismo repositorio y esto me permite evitar hacer 4 tareas separadas. Se compromete en una fila al mismo repositorio.

¿No es posible hacer lo mismo desde la línea de comandos? Los compromisos para cada uno de los aspectos externos podrían, sin duda, tener un script y un alias para un comando, pero preferiría evitar saturar el registro de confirmación con confirmaciones separadas para los cambios relacionados si es posible.


Desafortunadamente, tu suposición era correcta. La herramienta de línea de comandos de Subversion actual no se convertirá en copias externas de trabajo inconexas durante una confirmación. Eclipse probablemente se da cuenta de que todo está enraizado de la misma manera y ajusta todo para que solo realice una transacción de confirmación.

Este inconveniente del cliente aparece realmente como uno de los problemas a tener en cuenta al definir aspectos externos en su proyecto. A partir del cliente 1.6.1, esta limitación aún existe.


Puede especificar todos los archivos y carpetas que desee confirmar en el cliente de la línea de comandos, incluidos los externos. Dado que el CL no se recurre a los externos, debe especificarlos en su comando de confirmación por separado:

svn ci working_copy externals1 externals2 -m "log message"

Aunque no he intentado esto. Si no funciona, debe especificar todos los archivos y carpetas modificados por separado, no solo las carpetas ''raíz'' de los elementos externos.


Repito en todos los aspectos externos y ejecuto "svn commit" en cada uno, como por ejemplo:

for dir in $(svn propget svn:externals . | awk ''{print $2}''); do svn commit $dir; done


Si solo tiene contenido y no tiene modificaciones de atributos, puede hacer algo a lo largo:

svn st | egrep "^M" | awk ''{print $2}'' | xargs svn ci -m ''your message''

Si ha agregado / eliminado archivos ..., puede modificar la egrep regular de egrep para que se ajuste a sus necesidades.


Tu puedes hacer:

svn ci -m"my comment" *