tortoise subir repositorio que proyecto español desvincular con como carpeta archivos agregar svn working-copy

subir - ¿Cómo convierto un directorio existente a una copia de trabajo(WC) de SVN sin reemplazar los archivos locales?



tortoise svn server (10)

A partir de SVN 1.7 (pero no antes) puede hacerlo fácilmente con:

svn co --force http://path/to/repo

Esto respetará la copia local como existente, y verá la "E" de existente antes de cada nombre de archivo en la salida: E some/existing/file

Si el archivo es diferente (nuevo o modificado) del repositorio, lo manejará con gracia de acuerdo con el libro :

Antes de la versión 1.7, Subversion se quejaría de forma predeterminada si intenta verificar un directorio en la parte superior de un directorio existente que contenga archivos o subdirectorios que el proceso de pago en sí mismo hubiera creado. Subversion 1.7 maneja esta situación de manera diferente, permitiendo que la verificación proceda pero marcando cualquier objeto que obstruya como conflictos de árbol. Use la opción --force para anular esta protección. Cuando verifique con la opción --force, cualquier archivo no versionado en el árbol de destino de pago que normalmente obstruya el proceso de checkout seguirá siendo versionado, pero Subversion conservará su contenido tal como está. Si esos contenidos difieren del archivo del repositorio en esa ruta (que se descargó como parte de la extracción), el archivo parecerá tener modificaciones locales: los cambios necesarios para transformar el archivo versionado que verificó en el archivo no versionado que tenía antes de revisar fuera: cuando finaliza la comprobación.

También tenga en cuenta que SVN 1.7 puede llevar a situaciones en las que este sea un problema más común (tal vez motivando la solución). Tengo este problema cuando muevo un subdirectorio a una nueva ubicación en el disco. En la .svn anterior a 1.7, habría movido el directorio .svn con él y se habría quedado solo. En 1.7 el directorio se convirtió en unversión efectiva. Pero svn co --force salvó el día.

Tengo un gran repositorio de Subversion con casi 15 GB de datos distribuidos en unos 500.000 archivos. Ahora necesito revisar este repositorio en un host remoto que tardaría días en completarse.

El host que estoy comprobando ya tiene una copia completa de los datos en el repositorio. Pero dado que los archivos no se extrajeron directamente del repositorio, no constituyen una copia de trabajo (no hay carpetas ".svn").

Me gustaría evitar copiar todos estos datos a través de la red, especialmente cuando ya existe en el host de destino. ¿Hay algún truco que pueda usar para convertir un directorio preexistente en una copia de trabajo sin reemplazar los archivos locales con copias idénticas del repositorio?


El siguiente comando es eliminar todos los directorios .svn.

chmod -R 0755 project_dir find /project_dir -type d -name .svn -exec rm -rf ''{}'' +

Si ya tiene una versión de pago, puede intentar copiar esas carpetas .svn reemplazando rm con cp . Aunque no lo intenté.


Existe el comando de reubicación: http://svnbook.red-bean.com/en/1.1/re27.html

EDITAR: Si los archivos locales no están vinculados a un repositorio, puede crear un repositorio local, importar los archivos en él y luego usar el comando relocate.

Alternativamente, si tiene acceso físico a ambas máquinas, puede revisar el repositorio localmente y luego copiar los archivos a la máquina remota a través de un HD externo.


Ninguno de los comandos svn nativos revisará los archivos existentes en busca de coincidencias y no los descargará.

¿Qué protocolo estás usando para acceder al repositorio? Si es https, ese puede ser tu problema. Pruebe el protocolo svn nativo (usando svnserve), o svn + ssh. O tal vez incluso haga una verificación a través de un archivo: // URL en el servidor que alberga el repositorio svn, y luego use rsync para transferir a través de la red.

Siempre y cuando no pague por el ancho de banda por byte, podría tener sentido dejar que "svn co --force" se ejecute correctamente ((INICIO / BAJO en Windows) y no perder su tiempo. No hará que nada en el sistema de archivos local no esté disponible durante el proceso de pago.

Por último, no puedo entender por qué su pago es tan lento ... tenemos repositorios de archivos de 500K que realizan el checkout en ~ 6 minutos a través de https en una LAN de gigabit. Concedido todos los archivos son mucho más pequeños (1 GB en total). ¿A qué distancia del servidor se encuentra en términos de latencia?


No creo que haya una solución sin transferir esos 15 GB al destino. Probablemente sería más rápido y fácil copiar el repositorio allí y hacer un pago local.


Puede intentar usar rsync si ya tiene una copia de trabajo bajo el control svn en algún otro lugar de la red.


Realice una comprobación en el servidor, creando una copia de trabajo en local (local al servidor), luego rsync esa copia de trabajo en el sistema remoto a través de la estructura de directorios existente.

Use Subversion 1.7, de esa manera no hay .svn con copias prístinas de los archivos.


Simplemente puede retirar el repositorio localmente, luego transferir solo los directorios .svn (con cuidado, contienen copias de los archivos del área de trabajo, obviamente no desea copiarlos). Eso debería funcionar, ya que tendría los archivos exactos de una copia de trabajo correcta.

Por supuesto, tendrías que escribir algún tipo de script para transferir los archivos .svn. En un sistema Unix puedes hacerlo con find y friends.


Tenía un repositorio operativo en mi computadora local que eliminó todas sus carpetas .svn cuando Eclipse se bloqueó.

La única forma en que pude conectarlo al repositorio SVN remoto fue seguir estos pasos de un blog que encontré ( Recuperar una copia de trabajo de Subversion rota ):

# Backup your project in case you run into trouble cp -Rp /path/to/project /temporary/location # Strip out the old .svn folders (if any) find /path/to/project -name .svn -print0 | xargs -0 rm -rf # Check out a clean copy svn co http://repo/location /temporary/location2 # Move the .svn folders from the clean copy into the correct relative # place in the broken copy cd /temporary/location2 find . -name .svn -print0 | xargs -0 -I {} mv ''{}'' ''/path/to/project/{}'' # Remove the clean copy rm -rf /temporary/location2


svn co --force https://PATH/TO/REPO/ .

Donde el . al final, se supone que ya está dentro del directorio que desea convertir en una copia SVN de trabajo.

Por ejemplo, si desea hacer que su directorio public_html una copia svn de trabajo de un repositorio:

cd /home/username/public_html; svn co --force https://PATH/TO/REPO/ .