SVN- Cómo comprometer varios archivos en una sola toma

104

Intenté enviar varios archivos en diferentes directorios en una sola toma como se muestra a continuación,

svn commit –m”log msg” mydir/dir1/file1.c mydir/dir2/myfile1.h mydir/dir3/myfile3.c etc etc

Desde entonces, quería excluir algunos archivos de la lista de confirmación, así que coloqué cada nombre de archivo en la línea de comando como se muestra arriba. Lo puse junto en el bloc de notas y salieron unos 25 archivos. Cuando lo copio y pego en la línea de comando, faltan los últimos archivos y supongo que esto podría ser una limitación del búfer de la línea de comando (?). ¿Existe alguna opción para aumentar la longitud del búfer?

¿Hay alguna opción para poner todos los archivos en un archivo de texto y darlo como argumento para svn commit?

Thi
fuente
8
@Thi - Aquellos que no usan una GUI para subversión son masoquistas. Obtenga Tortoise SVN o su equivalente en Linux.
tpow
1
Si hay una restricción en la longitud del búfer, no estará en SVN, estará en cualquier shell que esté usando.
Colin Fine
20
@cinquTimo: es posible que prefiera usar una GUI para todo. Otras personas no lo hacen.
Colin Fine
@ Colin, creo que sí, ¿cómo aumentar la longitud del búfer de shell en ese caso?
Jueves
3
"Aquellos que no usan una GUI para subversión son masoquistas". - El masoquismo es usar la subversión, pero algunos de nosotros no tenemos otra opción.
Daniel

Respuestas:

157

Puede usar una lista de cambios svn para realizar un seguimiento de un conjunto de archivos que desea enviar juntos.

La página vinculada entra en muchos detalles, pero aquí hay un ejemplo de resumen ejecutivo:

$ svn changelist my-changelist mydir/dir1/file1.c mydir/dir2/myfile1.h
$ svn changelist my-changelist mydir/dir3/myfile3.c etc.
... (add all the files you want to commit together at your own rate)
$ svn commit -m"log msg" --changelist my-changelist
Mark Pim
fuente
30

Puede usar la --targets ARGopción donde ARG es el nombre del archivo de texto que contiene los destinos para confirmar.

svn ci --targets myfiles.txt -m "another commit"
Dmitry Yudakov
fuente
Funciona para mí en este comando bash:find . -name \*my.mask | xargs svn ci -m"message" --targets -
ASten
28

No he tenido problemas para enviar algunos archivos como este:

svn commit fileDir1/ fileDir2/ -m "updated!"
psy
fuente
Esto no me está funcionando. Obtener el error "svn: '/' no es una copia de trabajo". Aquí he publicado mi pregunta, puedes mirar. askubuntu.com/questions/442742/how-to-update-dir-on-svn-server/…
Sí funcionó bien. También dentro de la raíz de mi documento, podría confirmar todos los cambios dentro de la estructura de árbol de la copia de trabajo con esto:> svn commit. -m 'mensaje de compromiso masivo'
Grigoreas P.
3

Utilice un conjunto de cambios. Puede agregar tantos archivos como desee al conjunto de cambios, todos a la vez o sobre varios comandos; y luego cometerlos todos de una vez.

Colin bien
fuente
1
svnbook.red-bean.com/en/1.6/svn.advanced.changelists.html - La palabra clave svn es "lista de cambios", que se aborda en la primera respuesta y la más votada.
John W. Clark