tortoise - svn no es una copia de trabajo
¿Cómo elimino una lista de cambios existente de SVN? (3)
Elimine todos los archivos asociados de una lista de cambios y desaparecerá.
Manera oficial
Ver https://stackoverflow.com/a/15992735/253468
svn changelist --remove --recursive --cl my_changes .
Manera manual
es decir svn changelist --remove file.name
D:/Programming>mkdir test
D:/Programming>cd test
D:/Programming/test>svnadmin create .
D:/Programming/test>svn co file:///D:/Programming/test co
Checked out revision 0.
D:/Programming/test>cd co
D:/Programming/test/co>echo "hello" > test.file
D:/Programming/test/co>svn add test.file
A test.file
D:/Programming/test/co>svn status
A test.file
D:/Programming/test/co>svn changelist mycl test.file
A [mycl] test.file
D:/Programming/test/co>svn status
--- Changelist ''mycl'':
A test.file
D:/Programming/test/co>svn changelist --remove test.file
D [mycl] test.file
D:/Programming/test/co>svn status
A test.file
Automatización en Bash
# Remove all files from a specific CL
# Usage: svn_remove_cl my_changes
function svn_remove_cl() {
svn status |/
sed -n "/--- Changelist ''$1'':/,/--- Changelist.*/p" |/
grep -v ''^--- Changelist'' |/
awk ''{print $2}'' |/
xargs svn changelist --remove
}
Explicación:
-
svn status
: muestra todos los archivos modificados -
sed
: encuentra la lista de cambios y toma la salida después del título CL hasta la siguiente CL o el final de la salida delsvn status
-
grep
: elimina los títulos CL del búfer -
awk
: eliminar los estados del archivo, guardar solo los nombres de los archivos (es decir, la segunda columna) -
xargs
: pon cada línea como argumento parasvn changelist
(Es posible que necesite ajustes si tiene espacios o caracteres especiales en los nombres de archivo)
Ejecución de ejemplo
~/tmp/wc$ svn status
A d
--- Changelist ''cl_a'':
A a
A e
A f
--- Changelist ''cl_x'':
A b
A c
~/tmp/wc$ svn_remove_cl cl_x
Path ''b'' is no longer a member of a changelist.
Path ''c'' is no longer a member of a changelist.
~/tmp/wc$ svn status
A b
A c
A d
--- Changelist ''cl_a'':
A a
A e
A f
Creé una lista de cambios haciendo ...
$ svn changelist my_changes
... le agregó archivos, y luego confirmó la lista de cambios ...
$ svn ci --changelist my_changes --keep-changelists
... así que ahora, he "guardado" mi lista de cambios y aparece cada vez que veo el estado.
$ svn status
... modified/added/deleted files listed here...
--- Changelist ''my_changes'':
... files that are a part of this changelist listed here...
"Guardé" la lista de cambios por algún motivo, pero ya no la necesito, así que estoy listo para eliminarla. ¿Cómo elimino esta lista de cambios de SVN? Sé cómo eliminar archivos de la lista de cambios, pero no la lista de cambios propiamente dicha.
Para aquellos que se preguntan, puede hacer esto con un solo comando con svn. Simplemente navegue hasta el directorio de nivel de los archivos bajo su lista de cambios existentes y ejecute:
svn changelist --remove --recursive .
Esto recorrerá todos los archivos del directorio actual e intentará desasociarlos de la lista de cambios.
Si desea eliminar solo una lista de cambios (p. Ej. My_changes) vaya a la carpeta de nivel superior de su copia de trabajo y ejecute:
svn changelist --remove --recursive --cl my_changes .