tortoise - Cambiar la profundidad en la copia de trabajo de SVN existente sin volver a descargar
tortoise svn pdf (4)
Tengo una copia de trabajo de un repositorio completo de SVN, pero quiero convertirlo en una copia de trabajo dispersa debido a problemas de espacio en el disco.
Una forma de hacer esto sería:
svn up --set-depth immediates projects
svn up --set-depth infinity projects/project1
svn up --set-depth infinity projects/project2
Sin embargo, eso primero eliminaría project1
y project2
, luego project2
descargarlos. Esto es realmente inconveniente, porque son muy grandes y la velocidad de carga del servidor es muy baja. Intenté esto (con otro, más pequeño, parte del repositorio, como experimento):
svn up --set-depth infinity projects/project1
svn up --set-depth infinity projects/project2
svn up --set-depth immediates projects
Pero luego el último comando simplemente deshace los primeros 2.
¿Cómo puedo configurar la profundidad de una copia de trabajo sin que la actualicen o cambien de manera inmediata, para que pueda tener la oportunidad de configurar correctamente los subdirectorios primero?
¿O hay otra forma de lograr lo que quiero, por ejemplo, copiando project1
y project2
a un lugar seguro primero?
No hay nada como revivir una vieja pregunta SO.
He estado trabajando con un problema muy similar donde me ramifico desde trunk para crear un paquete de lanzamiento, pero debido a limitaciones tengo que clonar archivos que solo están destinados para desarrolladores.
asset
└── js
└── some
└── directories
├── assets
│ ├── files ...
├── dev **<------------ This folder needs to be empty**
│ ├── apis
│ ├── campaign
│ ├── features
│ ├── modules
│ ├── main.js
│ └── tags
└── release
├── apis
├── data
├── features
├── modules
├── main.js
└── tags
Decidí que excluiría los archivos dev para eliminar la tentación de aplicar un parche a una corrección en la rama de publicación en el directorio incorrecto.
Hago muchos rastreos dispersos para evitar grandes carpetas en el maletero, pero nunca lo he hecho de forma retrospectiva en una copia de trabajo. Parece que esto es bastante directo.
Para modificar la copia de trabajo para que asset/js/some/directories/dev
esté vacío, simplemente puede ejecutar el comando svn co
nuevamente en la copia de trabajo.
En mi caso, los siguientes trabajos
svn co --depth empty ^/branches/releases/latest/asset/js/some/directories/dev /
asset/js/some/directories/dev
Básicamente está ejecutando un pago parcial en su copia de trabajo preexistente y esto funcionará en cualquier nivel. En el caso original, simplemente ejecutaría lo siguiente.
svn co --depth immediates ^/branches/mybranch/projects projects
svn co --depth immediates ^/branches/mybranch/project1 project1
svn co --depth immediates ^/branches/mybranch/project2 project2
Para aquellos que no conocen el cursor ^
es la abreviatura de la raíz del repositorio, por lo que funciona como una ruta relativa en su repositorio, un poco como ../some/location
.
La clave aquí es que no está creando una nueva copia de trabajo para solucionar su problema. Está ejecutando estos comandos en su copia de trabajo existente y restablece la profundidad de sus directorios elegidos.
Terminé pirateándolo:
- Edite manualmente la configuración de profundidad en "inmediatos" para
projects
*. - Hard delete (no SVN delete) todos los hijos de
projects
exceptoproject1
yproject2
-
svn up projects
[*] Para hacer esto, abre projects/.svn/entries
en un editor de texto y cambia
b125e325-6f7c-4931-9942-d1ea1ea1441a
X
dentro
b125e325-6f7c-4931-9942-d1ea1ea1441a
immediates
X
Nota: Esa línea que parece UUID probablemente sea diferente por repo, y X
es en realidad el valor hexadecimal 0x0C
que no puedo mostrar aquí en SO.
Tuve el mismo problema, pero lo que escribiste no parece ser posible en SVN 1.7, ya que el formato de los metadatos es diferente.
Esto es lo que terminé haciendo (usando los directorios en su situación). Primero, copié project1
y project2
en un lugar seguro.
svn co --depth immediates svn_url/projects
Esto verifica los projects
con los directorios vacíos project1
y project2
. Luego elimino las carpetas vacías y coloco los directorios reales en su lugar. SVN me da algunos mensajes raros, pero parece funcionar y me permite comprometerme. (No funciona con --depth empty
y luego copiando las carpetas, pero immediates
parece funcionar).
Estoy de acuerdo en que esta situación no es ideal, ¡pero es por eso que me estoy cambiando a Git para proyectos futuros! He usado SVN durante mucho tiempo, pero está yendo más allá de toda esperanza.
Woo hoo, tuve este problema, y TortoiseSVN ha admitido soluciones para agregar y eliminar un elemento de la caja dispersa. http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-checkout.html
1.Para agregar: En el explorador de Windows, haga clic con el botón derecho en la carpeta desprotegida, luego use TortoiseSVN? Repo-Browser para abrir el navegador del repositorio. Encuentre la subcarpeta que le gustaría agregar a su copia de trabajo, luego use el menú contextual? Actualizar el elemento a revisión ....
2. Para borrar; Desde su raíz, haga clic derecho / Repo-Browser / Actualizar elemento para la revisión; luego selecciona ''Excluir''.