Pregunta

Son especialmente molestos cuando necesito cargar en el servidor una solución web.

¿Hay alguna forma de configurar SVN para crear las carpetas _svn fuera de mi directorio de trabajo? Si no es así, ¿cuál es la mejor manera de lidiar con ellos cuando necesita copiar solo el código?

Actualizar: utilizando " svn export " El comando es problemático porque hay archivos que no están bajo el control de código fuente, pero son necesarios como .dll, archivos de datos xml o archivos de base de datos y no se exportarán. Por lo tanto, sería necesario copiarlos manualmente en los diferentes subdirectorios de la copia de trabajo cada vez.

¿Fue útil?

Solución

No es posible (actualmente) configurar SVN (o TortoiseSVN) para crear los directorios .svn (o _svn) fuera de la copia de trabajo. Creo que la hoja de ruta de SVN 1.6 incluye volver a visitar la biblioteca de copia de trabajo. La capacidad de colocar los directorios administrativos en otro lugar podría surgir de este trabajo, pero estoy especulando.

Debes usar el " svn export " comando para crear un " limpio " copia de su copia de trabajo (es decir, sin los directorios _svn). Esto funciona desde la línea de comandos del cliente.

Si está utilizando TortoiseSVN, puede hacer clic con el botón derecho en la copia de trabajo y seleccionar " Exportar ... " Esto te pedirá una carpeta para exportar los archivos a. Alternativamente, puede arrastrar con el botón derecho una copia de trabajo a una carpeta (una que no sea una copia de trabajo), y TortoiseSVN abrirá un menú contextual; entre las opciones se encuentran " SVN Exportar aquí " y " SVN Exportar todo aquí ', este último también exporta archivos que no están bajo el control de versiones .

Otros consejos

Utilice " svn export " para crear un árbol de directorios limpio.

despliegue de Robocopy ...

robocopy {source} {dest} /MIR /XD _svn /XD .svn

En TortoiseSVN, puedes a la derecha hacer clic en la copia de trabajo y arrastrarla a otra parte. Y cuando aparezca el menú emergente, seleccione " Exportar aquí SVN " ;. (Esto requiere que se haya registrado todo el código en la copia de trabajo, ya que la exportación será desde el tronco y no desde la copia de trabajo)

Vea estos recursos para más detalles:

si utiliza un script de nant para habilitar la implementación en el servidor web, tiene un _SVN y _SVN / **, ya que se excluyen automáticamente al copiar archivos. nant filtrará muchos archivos no deseados cuando copie archivos a través de su tarea de copia, incluyendo:

  • ** / * ~
  • ** / # * #
  • ** /. # *
  • ** /% *%
  • ** / CVS
  • / CVS /
  • ** /. cvsignore
  • ** /. svn
  • /.svn/
  • ** / _ svn
  • / _svn /
  • ** / SCCS
  • / SCCS /
  • ** / vssver.scc
  • / _vti_cnf /

puede leer más sobre NANT en la página de inicio del proyecto aquí: NANT Home

+1 para la solución de Isak Savo.

Y puedes hacer una XCOPY y excluir " / svn " carpetas:

XCOPY% 1% 1_deploy /EXCLUDE:C:\ExcludeSVN.txt / E / C / I / F / R / Y

Contenido de ExcludeSVN.txt:

/ _svn

De hecho, si desea subir a un servidor web, su archivo de exclusión puede contener mucho más:

  • .pdb
  • .cs
  • .resx
  • .csproj
  • .sln
  • .webinfo
  • .bak
  • .sql
  • .zip
  • .vspscc
  • .vssscc
  • .scc
  • \Web.config

Advertencia: si excluye los archivos .cs, dio la posibilidad de volver a copiar el archivo .css después

La forma realmente sucia en Windows: cree una copia de su proyecto, abra el Explorador, navegue hasta el directorio en el que se encuentra la copia y haga una Búsqueda para todo lo que termine con _svn. Una vez que la búsqueda haya terminado, seleccione todo y presione Eliminar.

¡Qué asco! Pero funciona realmente bien.

Utilizamos CruiseControl con robocopy para crear una copia limpia de su repositorio.

 <exec>
        <executable>C:\Archivos de programa\Windows Resource Kits\Tools\robocopy.exe</executable>
        <buildArgs>E:\CruiseControl\yourproject\Code\trunk\ E:\wwwroot\yourproject *.* /E /XX /XA:H /XO /NDL /NC /NS /NP /XF "*.cache" "*.designer.cs" "*.sln" "*.msbuild" "*.csproj" "*.PDB" "*.user" "*.designer" /XD .svn App_Code obj Properties</buildArgs>
        <buildTimeoutSeconds>60</buildTimeoutSeconds>
        <successExitCodes>1,0</successExitCodes>
 </exec>
Los argumentos

/ XF y / XD excluyen los archivos y los directorios que no desea cargar en producción.

Puede encontrar más información sobre robocopy aquí .

Si desea eliminar todas las subcarpetas llamadas .svn en Windows luego crea un archivo por lotes con este contenido:

for /f "tokens=* delims=" %%i in ('dir /s /b /a:d *.svn') do (
rd /s /q "%%i"
)

guárdalo en un archivo del_All_Dot_SVN_Folders.cmd . Ejecutarlo. Tu hecho.

Gracias a http: // www .axelscript.com / 2008/03/11 / delete-all-svn-files-in-windows /

Recuerde que el código anterior tiene .svn mientras que el código en el enlace solo tiene * svn, así que es mejor tener el .svn para no tener accidentalmente un efecto no deseado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top