Cometí el error de crear un repositorio de Subversion sin los directorios habituales trunk
, branches
y tags
. Es decir, el directorio raíz del proyecto se correlaciona con el directorio raíz del repositorio. Ahora quiero crear una rama de características, pero no hay un buen lugar para ubicarla. Lo que me gustaría hacer es mover /
a /trunk
, preservando sus propiedades e historial. ¿No tengo suerte?¿Hay una forma limpia de mover/a/tronco?
Respuesta
La forma más limpia de hacer esto es utilizando svnadmin
a volcar todo el repositorio usando
svnadmin dump
A continuación, crear un nuevo repositorio con el directorio del tronco en la raíz, y volver a cargar el volcado con
svnadmin load --parent-dir trunk
Si haces un movimiento svn, eso ensuciará las cosas si alguna vez actualizas a una revisión antes de la mudanza, ya que los archivos volverán a su ubicación anterior, que probablemente no es lo que querer.
¿No puedes simplemente crear el directorio troncal y mover todo desde/hacia el tronco?
Como señalan las otras respuestas, basta con hacer un svn mv en el directorio troncal para hacer esto. Para actualizar su copia de trabajo, consulte el comando svn switch.
Esto parece m tiene el mayor sentido, desearía poder votar^3 +. No estoy seguro de qué comandos de línea de comando sucedieron debajo de las cubiertas, pero con TortoiseSVN utilicé Repo-Browser para crear un directorio "troncal" y luego arrastré y solté los contenidos versionados en el directorio troncal con "Mover a troncal" que aparece como información sobre herramientas . Todos los registros fueron retenidos. No pude usar el conmutador svn, simplemente eliminé el directorio de metadatos .svn y lo volví a verificar, pero estoy seguro de que el cambio de svn tendría más sentido. –
No basta con crear una carpeta trunk
y mover todo el contenido de la raíz a la misma. Puede hacerlo desde el explorador o mediante el navegador repo, la historia persistirá.
Necesita crear /trunk
y hacer un movimiento svn de todos los contenidos de la raíz dentro del tronco y luego confirmar.
Después de eso, switch
tendrá su copia de trabajo en /trunk
.
La manera más fácil sería crear un directorio "troncal", luego mover todo lo demás en él. Tendrás que copiar las propiedades de forma manual, pero no debería ser un gran problema. El historial es por archivo, por lo que debe permanecer.
El otro problema a considerar es si alguien más tiene el repositorio abierto. Será difícil fusionarse, así que asegúrese de que todos tengan sus cambios registrados antes de hacer esto.
+1 para considerar problemas en caso de fusión – sleske
Es la manera más fácil, pero debe tener cuidado de que si actualiza alguna vez una revisión antes de la mudanza, sucederán cosas inesperadas (su copia de trabajo se eliminará a sí misma;)) –
de acuerdo. Es un poco más complicado usar 'svnadmin' pero los resultados son mejores, y los problemas de combinación no son peores que con el método ingenuo. He votado tu respuesta. –
Ejemplo rápido de cómo lo hice.
yo quería mover a file:///svn/myRepo
file:///svn/myRepo/trunk
cd/
svnadmin dump /svn/myRepo > my.dump
killall svnserve
sudo rm -r -f /svn/myRepo
svnadmin create /svn/myRepo
svnserve -d -r /svn
svn mkdir file:///svn/myRepo/trunk -m "Created trunk dir"
svnadmin load /svn/myRepo --parent-dir trunk < my.dump
Hay algunas pifias o limitaciones con algunos de los enfoques analizados. La publicación a continuación discute otro enfoque, que implica deshacerse del repositorio y editar las rutas de archivos. Esto tiene la ventaja de que los archivos movidos también se modificarán correctamente.
http://dotslashstar.blogspot.com/2011/06/svn-hack-insert-missing-trunk-root.html
usados therefromhere's answer, que funcionaba bien, pero quería añadir los comandos incluidos los parámetros, es decir,es ejecutado en la línea de comandos del servidor SVN:
Dump su repositorio existente en un archivo:
svnadmin dump /path/to/myrepo/ > /some/dir/myproject.svndump
Create un nuevo repositorio:
svnadmin create /path/to/mynewrepo/
Add la
trunk/
carpeta y commit que, en el directorio de copia de trabajo:mkdir trunk; svn add trunk; svn commit trunk -m "Add: trunk folder"
Load el volcado en el nuevo repositorio usando
trunk
comoparent-dir
:svnadmin load --parent-dir trunk /path/to/mynewrepo/ < /some/dir/myproject.svndump
Es fácil pasar por alto las instrucciones, pero esto debe ejecutarse en el * servidor *, no en la copia de trabajo. De lo contrario, obtendrá "No se puede abrir el archivo '/ ruta/a/myrepo/format': no existe dicho archivo o directorio". – DavGarcia
- 1. ¿Hay una forma HTML limpia de relacionar una pulsación de tecla con un elemento desplegable
- 2. Una forma limpia de convertir objetos a un tipo real
- 3. PHP: ¿La forma más limpia de modificar una matriz multidimensional?
- 4. Analizando una cadena en C#; ¿hay una manera más limpia?
- 5. Hay una manera limpia de mostrar un guión con haml
- 6. ¿Cuál es la forma limpia de probar FileField en django?
- 7. ¿Cuál es la forma más limpia de obtener una suma de comprobación de una matriz multidimensional?
- 8. forma más limpia de combinar dos cortos a un int
- 9. ¿Cuál es una forma (o patrón) limpia para hacer la verificación de parámetros de funciones?
- 10. ¿Hay una manera limpia para recuperar el evento AWT hilo de despacho
- 11. Integre JavaScript en el componente compuesto JSF, la forma limpia
- 12. DD anomalía y limpieza de los recursos de la base de datos: ¿hay una solución limpia?
- 13. Buffering doble para objetos de juego, ¿qué es una buena forma genérica y limpia de C++?
- 14. ¿Cuál es una forma mejor y más limpia de usar List <T>
- 15. ¿Hay una API limpia para restablecer las variables de instancia en 'volver a cargar' en ActiveRecord?
- 16. ¿Una forma más limpia de llamar automáticamente a un método después de otro?
- 17. ¿Una forma más limpia de seleccionar por múltiples valores de atributo posibles?
- 18. ¿Hay una manera limpia de * omitir * un índice de matriz usando `` list() `de PHP?
- 19. ¿Cuál es una forma limpia de detener a mongod en Mac OS X?
- 20. Encuadernar/desvincular de forma limpia a un servicio en una aplicación
- 21. ¿Cuál es la forma más limpia de escribir una cadena multilínea en JavaScript?
- 22. ¿Cuál es una forma limpia/SECA de mostrar las operaciones disponibles en el contenido del usuario?
- 23. ¿Hay una manera más limpia de "durar" condicionalmente este bucle de Perl?
- 24. ¿Cuál es la forma más limpia de hacer una clasificación más uniq en una lista de Python?
- 25. Herencia/jerarquías de interfaz en .Net: ¿hay una forma mejor?
- 26. Manera más limpia de encontrar una coincidencia en una lista
- 27. "heroku ejecutar activos rastrillo: limpia" no limpia nada
- 28. ¿Hay una forma abreviada de denulificar una cadena en C#?
- 29. ¿Cuál es una forma limpia de que el servidor devuelva una función de JavaScript que luego se invocaría?
- 30. ¿Hay una sintaxis más limpia para WHERE id! = 1 AND id! = 2 AND id! = 7
-1 No es necesario llegar a tales longitudes: simplemente mueva todo el árbol. – sleske
@sleske - He manejado exactamente este problema antes - vea mi nota sobre los problemas de hacer un movimiento svn. Esta es la forma correcta de hacerlo. –
No he tenido la oportunidad de probar esto, pero parece exactamente la solución que estoy buscando. – Metaphile