2011-12-27 27 views
13

edité algunos archivos en SVN, así:SVN: ¿Cómo ignorar un archivo modificado en la confirmación?

$svn st 
M a 
M b 
... 

Ahora, quiero cometer mis cambios al SVN, por alguna razón, no quiero cometer archivo b, ¿hay alguna manera rápida o comando para ignorar el archivo modificado b?


Finalmente, utilizo @yzucker Solution 1, cp, revert and commit. Las listas de cambios son demasiado pesadas, gracias a todos.

Respuesta

7

Por desgracia, muchos archivos molestos con algunos cambios molestos ignoraron el problema.

Solución 1: copiar, revertir y cometer

$cp b /tmp/ 
$svn revert b 
$svn commit -m 'commit message' 
$mv /tmp/b ./ 

Solución 2: copiar, cometer, invertir el efecto de b, recommit b

$cp b /tmp/ 
$svn commit -m 'commit message' 
$svn merge -c -{new revision} b 
$svn commit b -m 'revert message for b' 
$cp /tmp/b ./b 

El segundo enfoque es menos preferible ya que se introduce código roto en svn.

+1

Buena idea, esta debería ser una característica de Subversion. Debería haber una bandera (que llame '-X') que excluirá la confirmación de archivos. – mliebelt

3

No creo que haya una opción para excluir solo un archivo, e incluir todos los otros que fueron cambiados. En su ejemplo, puede incluir solo los archivos que desea confirmar

svn co a -m "Only commit a" 

que luego excluirán b. Vea el documentation of the command con los ejemplos al final.

Otra opción podría ser utilizar changelists, pero que es más pesada ...

+1

Uso las listas de cambios para este propósito (aunque no a través de la línea de comandos). –

+0

Si hubiera listas de cambios para definir archivos para excluir explícitamente, esa podría ser una opción. Pero a menudo, tiene muchos archivos modificados (no en la lista de cambios), y solo desea 1 * no * para confirmar ... – mliebelt

2

Si el archivo b ya ha sido añadido al repositorio, no es posible ignorar más. Tienes que eliminar este archivo, comprometerse, recrear y establecer ignorar propiedad como esta:

svn propset svn:ignore b . 

El punto final: es la carpeta actual.

Si desea ignorar los archivos sólo en esta confirmación, escriba sus nombres de forma explícita en el comando commit

svn co a c d 

Dónde a, c, d son archivos que desea comprometerse.

+0

¿Debería el último comando ser 'svn ci a c d'? Esta es una solución, gracias. – fannheyward

15

Puede utilizar el Changelist Característica de clientes nuevos Subverion como se muestra en este ejemplo de sesión corta:

$ svn st 
M  a 
M  b 

$ svn cl task1 a 
$ svn cl task2 b 

$ svn st 
--- Changelist 'task1': 
M  a 
--- Changelist 'task2': 
M  b 

$ svn ci --cl task1 -m "checking in only task 1 stuff" 
Sending  a 
Committed revision 11. 
+0

¿Qué es la versión svn? –

2

En Windows, puede utilizar el cliente GUI TortoiseSVN y acaba de elegir casillas de verificación que afectan exclusivamente.

Cuestiones relacionadas