SVN Confirma archivos específicos


219

¿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:


331

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

1
entonces, básicamente, ¿debería nombrar los archivos explícitamente? No puedo decir que no toque este archivo en particular.
0100110010101

16
usted podría hacer: svn st | corte -c 9-> destinos.txt, luego edite el archivo objetivos.txt para eliminar el archivo específico y use el parámetro --targets para especificar la lista de archivos.
rienda

17
Creo que mi nuevo desafío es crear un error que prende fuego a la impresora.
James Webster

3
Es patético y ridículo por igual. Sin área de espera. svn addse usa para agregar archivos a repositorios.
Kandinski

68

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"

+1 por respuesta puntual. ¡Las listas de cambios son realmente el camino a seguir!
Miro Markaravanes

1
Si desea agregar nuevos directorios a una lista de cambios, no olvide usar svn add primero, luego usesvn changelist fix-issue-237 --recursive path/to/directory
Fabian Schmengler

En realidad, las
listas de cambios

1
@fschmengler: SVN es una herramienta horrible. Solo estaba tratando de sacar lo mejor del mal trabajo que hace. Cambia a git. : P
jcwenger

10
Me cambié a Git hace muchos años y nunca miré hacia atrás. Se vio obligado a usar svn nuevamente para un cliente, se siente como correr con la pelota y la cadena en ambas piernas
Fabian Schmengler

38

Básicamente, coloca los archivos que desea confirmar en la línea de comando

svn ci file1 file2 dir1/file3

1
entonces, básicamente, ¿debería nombrar los archivos explícitamente? No puedo decir que no toque este archivo en particular.
0100110010101

2
Si plazo sin argumentos SVN compromete a todos los archivos modificados si carrera con un archivo como argumento de este archivo está comprometida si carrera con un directorio de todos los archivos modificados en el directorio comprometidos
Wienczny

22

Debido a mi estado de subversión, tuve que ser creativo. svn stmostró M, Ay ~estados. Solo quería My Aasí ...

svn st | grep ^[A\|M] | cut -d' ' -f8- > targets.txt

Este comando dice buscar todas las líneas que salen por svn stese comienzo con Mo 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.


2
También puedes usar grep -v '^~'para poner en la lista negra lo que quieres.
Martin Konecny


7

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'`

1

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.