2009-10-21 17 views
39

Tengo una copia de trabajo que se confirma automáticamente en SVN durante la noche usando un script.Agregue todos los archivos no versionados a SVN

Utilizo la línea de comando SVN para hacerlo.

Después de una frustrante batalla con Google, no he podido encontrar la manera de agregar automáticamente todos los archivos no versionados en la copia de trabajo al repositorio antes de la confirmación.

¿Alguien sabe cómo puedo hacer esto?

Bondad y gracias de antemano,

Dan

Respuesta

68
svn --force --depth infinity add . 

Tenga cuidado, sin embargo, porque esto también añadirá ningún svn:ignore 'd archivos.

+2

Después de más pruebas, parece '--depth' no es necesario, pero no hace daño tampoco. –

+0

la fuerza era lo que me faltaba ... ¡muchas gracias! –

+4

esto agregará archivos actualmente ignorados también, ¡ten cuidado! –

0

usted tiene que llamar svn add en el script para cada archivo sin versión previa a svn commit -algo así durante un script de shell:

for file in `svn st | grep '^\?' | awk '{ print $2; }'`; do 
    svn add $file 
done 
+2

Eww. El uso de '--force' en la raíz del directorio de trabajo agregará automáticamente cualquier archivo no versionado debajo de él. –

+0

Si bien su respuesta es técnicamente correcta, es muy sobredimensionada, dadas las alternativas :) –

+1

Esto falla si tiene espacios en sus nombres de archivo. –

14

Trate de éste en el tamaño - mucho más elegante que forzando a través de un SVN añadir:

$ svn add `svn status|grep '\?'|awk '{print $2}'` 
+8

O pruebe este. Acepta espacios en la ruta: 'svn st | grep '^ \?' | sed 's/^ \? * // '| xargs -I% svn add% ' – nickiaconis

+3

Utilicé la sugerencia de codefox421 y agregué un alias a ~/.bashrc:' alias svn-add-unversioned = "svn st | grep '^ \?' | sed 's/^ \? * //' | xargs -I% svn add% "' Ahora solo escribo 'svn-a' y presiono tab, intro! –

25

La solución aceptada

sVN --force agregar

también se sumarán todos los ignorados archivos sin versión. La mayoría de las personas probablemente prefiera solo para agregar todos los archivos no versionados pero no ignorados.

Para añadir todos los sin versión, pero no ignorados archivos, codefox421 respuesta es correcta:

svn st | grep '^ \?' | sed 's/^ \? * // '| xargs -I% svn agregar%

como svn st no se muestran los archivos ignorados.

0

En mi caso necesito especificar:

svn --force add dir/*/*/* 

* es el nivel del árbol que yo quiero agregar.

Comprobar el resultado con

svn status --no-ignore 
Cuestiones relacionadas