2010-09-06 14 views
15

Estoy usando el cliente de línea de comando SVN (por razones de velocidad) y tengo una lista de cambios de archivos que deseo ignorar en cada confirmación (como lo hace TortoiseSVN). ¿Hay alguna manera de confirmar todos los archivos, excepto una lista de cambios específica o tal vez simplemente comprometer todos los archivos que no estén en una lista de cambios?¿Cómo solo confirmar archivos en la lista de cambios sin nombre con SVN?

Gracias

Respuesta

6

No. La lista de cambios se destina para el revés. Simplemente envíe los archivos que están incluidos en la lista de cambios y no los excluya de la confirmación. Si desea ignorar ciertos archivos, debe ponerlos en la propiedad svn:ignore, pero solo si no están bajo control de versión.

+1

Problema es que sí, los he modificado localmente para que muestren cierta información solo para mí, pero no quiero que los demás vean esto. – Ryall

+9

Desearía poder menospreciar esta "función" de svn. Actualmente tengo una gran cantidad de cambios en mi lista de cambios predeterminada y estaba buscando una forma de evitar registrar los dos archivos que NO quiero comprometer sin tener que registrar un centenar de archivos por nombre. –

+0

Parece que Subversion 1.8 va a tener una sintaxis "--cangelist" para los archivos de destino que no pertenecen a ninguna lista de cambios. http://subversion.apache.org/docs/release-notes/1.8.html#cmdline – rlovtang

5

utilizo el siguiente de una sola línea, suponiendo que tiene una lista de cambios llamado TO_IGNORE donde puso los ficheros que no desea comprometerse:

svn st | sed -e "/^--- Changelist 'TO_IGNORE'/,/^--- Changelist/d" | grep '^[ADMR]' | awk '{print $2}' | xargs svn ci 

esto se basa en el hecho de que "svn st" primeras listas todos los archivos que no están en ninguna lista de cambios, luego todas las listas de cambios una después de la otra.

Los comandos sed eliminan todas las líneas entre la lista de cambios que desea ignorar hasta la siguiente.

grep se utiliza para limitar archivos agregados, eliminados, modificados y reemplazados a la confirmación.

El awk extrae el nombre de archivo del resultado de svn st.

+1

Esto no funciona con los archivos binarios: el El comando awk imprime el símbolo + en lugar del nombre del archivo. Lo cambié a awk '{print $ NF}' que parece funcionar bien. –

Cuestiones relacionadas