¿Hay alguna forma de confirmar solo una lista de archivos específicos (por ejemplo, una de la lista de archivos que SVN desea confirmar)?
Estoy trabajando en MAC OS X en Terminal, sin ninguna interfaz de usuario.
¿Hay alguna forma de confirmar solo una lista de archivos específicos (por ejemplo, una de la lista de archivos que SVN desea confirmar)?
Estoy trabajando en MAC OS X en Terminal, sin ninguna interfaz de usuario.
Respuestas:
Por supuesto. Solo enumere los archivos:
$ svn ci -m "Fixed all those horrible crashes" foo bar baz graphics/logo.png
No conozco una manera de decirle que ignore un cierto conjunto de archivos. Por supuesto, si el shell enumera fácilmente los archivos que desea confirmar, puede usar eso:
$ svn ci -m "No longer sets printer on fire" printer-driver/*.c
También puede hacer que el comando svn lea la lista de archivos para confirmar desde un archivo:
$ svn ci -m "Now works" --targets fix4711.txt
svn add
se usa para agregar archivos a repositorios.
Utiliza listas de cambios. La ventaja sobre la especificación de archivos es que puede visualizar y confirmar que todo lo que quería se incluye antes de comprometerse.
$ svn changelist fix-issue-237 foo.c
Path 'foo.c' is now a member of changelist 'fix-issue-237'.
Hecho esto, svn ahora mantiene las cosas separadas para ti. Esto ayuda cuando haces malabares con múltiples cambios
$ svn status
A bar.c
A baz.c
--- Changelist 'fix-issue-237':
A foo.c
Finalmente, dígale que cometa lo que quería cambiar.
$ svn commit --changelist fix-issue-237 -m "Issue 237"
svn changelist fix-issue-237 --recursive path/to/directory
Básicamente, coloca los archivos que desea confirmar en la línea de comando
svn ci file1 file2 dir1/file3
Debido a mi estado de subversión, tuve que ser creativo. svn st
mostró M
, A
y ~
estados. Solo quería M
y A
así ...
svn st | grep ^[A\|M] | cut -d' ' -f8- > targets.txt
Este comando dice buscar todas las líneas que salen por svn st
ese comienzo con M
o A
, cortar usando un delimitador de espacio, luego obtener las columnas 8 hasta el final. Volcar eso en targets.txt y sobrescribir.
Luego modifique blancos.txt para podar más la lista de archivos. Luego, ejecute a continuación para comprometerse:
svn ci -m "My commit message" --targets targets.txt
Probablemente no sea el caso de uso más común, pero espero que ayude a alguien.
grep -v '^~'
para poner en la lista negra lo que quieres.
Además de enumerar los archivos explícitamente como se muestra en desenrrollar y Wienczny , puede configurar listas de cambios y registrarlos. Estos le permiten administrar conjuntos disjuntos de cambios en la misma copia de trabajo.
Puede leer sobre ellos en la versión en línea del excelente libro SVN .
prueba este script ...
#!/bin/bash
NULL="_"
for f in `svn st|grep -v ^\?|sed s/.\ *//`;
do LIST="${LIST} $f $NULL on";
done
dialog --checklist "Select files to commit" 30 60 30 $LIST 2>/tmp/svnlist.txt
svn ci `cat /tmp/svnlist.txt|sed 's/"//g'`
Hago una (sub) carpeta llamada "ocultar", muevo el archivo al que no quiero comprometerme allí. Luego haga mi confirmación, ignorando la queja sobre el archivo perdido. Luego mueva el archivo oculto de ocultar de nuevo a ./
No conozco ningún inconveniente de esta táctica.