2011-05-12 28 views
32

Si svn: ignorar una carpeta realmente grande ¿mejorará el rendimiento durante las actualizaciones de SVN?Ignorar una carpeta durante las actualizaciones SVN

Tengo esta carpeta realmente masiva (> 600MB) en mi proyecto. Los archivos en esta carpeta no deberían estar cambiando en absoluto. El problema es que cada vez que llamo "svn update" tarda una eternidad. ¿Hay alguna forma de ignorar esta carpeta durante las actualizaciones para acelerar el proceso de actualización?

+0

Similar a esta SO publicación http://stackoverflow.com/questions/116074/how-to-ignore-a-directory-with-svn –

+3

svn: ignorar solo se puede utilizar para ignorar * archivos no versionados *. Todavía puede agregar archivos que coincidan con svn: ignorar, y se tratarán como cualquier otro archivo en el repositorio. –

+0

Puedes intentarlo y ver si te ayuda. – MichaelHouse

Respuesta

44

El svn:ignore es sólo para archivos que no se encuentren en el repositorio Subversion. Esta carpeta ya esta.

Puede utilizar el svn update --set-depth excludefolderName eliminar esta carpeta desde el directorio de trabajo:

$ svn update --set-depth exclude bigFolder #Removes "bigFolder" from workdir 
D bigFolder 

$ 

La próxima vez que se realiza una actualización, bigFolder no se mostrará en el directorio de trabajo. Si quieres de vuelta, que tendrá que restablecer la profundidad:

$ svn update --set-depth infinity 
U bigFolder 
U bigFolder/File1 
U bigFolder/File2 
... 
+8

No me gusta lo que elimina la carpeta. Me gustaría simplemente no actualizar el existente. –

9

Puede hacer una actualización de svn y mencionar específicamente cualquier otro directorio, p.

svn update dir1 dir2 dir3 

O, grep -v fuera lo que no desea.

svn update `ls | grep -v big_dir` 

O svn mv la big_dir arriba en otra carpeta y cambiar su sistema de construcción para obtener el contenido desde el otro directorio.

+2

No actualizará las carpetas nuevas, solo existentes. –

3

Además de lo que dijo @Bill Brasky, una sugerencia es mover la enorme carpeta a una externa. De esa manera usted puede hacer svn up --ignore-externals

Si no desea que la carpeta muy importante en su copia de trabajo, se puede echar un vistazo a obtenciones parciales:

svn checkout repo . --depth empty 
svn up other dirs 
8

Sólo hacer:

svn up `svn ls | grep -v big_dir` 

El uso de "svn ls" Se podría actualización no sólo a nivel local directorios y archivos existentes, pero los nuevos archivos del repositorio. Entonces, la actualización es más completa que simplemente excluir. Y no necesita borrar archivos ya existentes, como "--set-depth exclude" aparentemente no.

+0

Analizar la salida 'ls' suele ser una mala idea [http://mywiki.wooledge.org/ParsingLs](http://mywiki.wooledge.org/ParsingLs) – Doppelganger

+1

@Doppelganger En el artículo se trata de' ls'. En el código de respuesta 'svn ls'. Es un poco diferente. –

+2

Estás en lo correcto. El error común con el análisis 'ls' es que no maneja bien los nombres de los archivos con líneas nuevas en sus nombres. 'svn ls' evita este problema porque svn no le permitirá agregar archivos con nuevas líneas en su nombre.'svn add 'a b' svn: E160005: Carácter de control inválido '0x0a' en la ruta '/ svn-test/a \ 012b'' – Doppelganger

Cuestiones relacionadas