Borre los files que faltan en SVN cuando cometa instantáneas

Me estoy moviendo de StarTeam a SVN, y he decidido tomar instantáneas de cada uno de nuestros lanzamientos. Sin embargo, tengo un problema cuando se eliminan los files que existían en la revisión 1 para la revisión 2.

¿Cómo confirmo las instantáneas cuando faltan files?

Intenté borrar por completo la carpeta trunk / src / y luego replacela con la nueva carpeta / trunk / src /, pero eso parece causar conflictos con los files que faltan. Cuando agregué svn "todo, TortoiseSVN parece detectar que los files no estaban, y cuando me comprometo parece intentar eliminar los files que faltan, pero parece fallar. Es de suponer que esto se debe a que está intentando eliminar directorys después de eliminar los files. en ese directory?

Me aparece el siguiente error:

deleting C:\trunk\src\myfile.h // this one's okay deleting C:\trunk\src\res Commit failed (details follow): Directory 'C:\trunk\src\res' is out of date Item '/trunk/src/res' is out of date You have to update your working copy first. 

¿Cuál es la solución a este problema? Seguramente no soy el primero en encontrarme con este problema, pero parece que no puedo encontrar nada en google o stackoverflow. Algunas personas sugieren ejecutar un script para hacerlo, pero todavía estoy confundido sobre el process. ¿Debo eliminar mi antigua carpeta troncal para que los files perdidos se eliminen localmente? ¿O debería diferir y eliminar con un script?

¡Gracias!

Publicación antigua (incierta): Migración a SVN, confundido sobre la eliminación de files antiguos

Editar:

Esto va de una instantánea a la siguiente. Estoy migrando desde un repository diferente (StarTeam), así que no tenía nada en el maletero. Solo quiero verificar todas las instantáneas y eliminar también los files que se eliminaron. ¿No es una mala idea labelr si no tengo nada en el maletero?

En realidad, hay un script de Subversion que hace esto por usted llamado svn-merge-repos.pl

No estoy 100% seguro de que entiendas el concepto de cómo funciona Subversion. ¿Pasaste por el libro de Subversion ?

En Subversion, no hay metadatos reales de tags/labels o branches como los que se encuentran en muchos sistemas de control de versiones. En cambio, pones tags y twigs en sus propios directorys. Para crear una twig o label, copie lo que desea ramificar o labelr en el directory:

 # Creating a branch for 2.0 development from trunk $ cp http://server/svn/module/trunk http://server/svn/module/branches/2.0 # Tagging my 2.0 development as 2.0.1 $ cp http://server/svn/module/branches/2.0 http://server/svn/module/tags/2.0.1 

En teoría, puede simplemente crear una nueva branch o directory de tag para cada versión y twig en la que esté trabajando sin necesidad de fusionar repositorys. Eso es lo que hice cuando realicé una conversión de StarTeam a Subversion. El problema es que pierdes la relación entre say revisión 2.0.1 y 2.0.2 ya que no comparten un historial común. 99% de las veces, eso no es realmente un problema, y ​​siempre puede volver al file original de StarTeam si necesita algo. En unos pocos meses, a nadie le importará.

Sin embargo, si conoce la relación entre las twigs y las tags, y desea conservar esa información, tendrá que hacer la secuencia de commands de dos pasos que describí anteriormente.

Por ejemplo, tiene una twig 2.0 que proviene de trunk , una label 2.0.1 , una label 2.0.2 y una label 2.0.3 , es posible que desee hacer esto:

  • Ponga la twig 2.0.1 en el tronco.
  • Copia el tronco en las branches/2.0 .
  • Coloque la siguiente twig en el tronco y cópiela en su twig (use el script svn-merge-repos.pl)
  • Finalmente, coloca el tronco actual.
  • Ahora vaya a ese directory branches/2.0 y cópielo a tags/2.0.1 . Con el script svn-merge-repos.pl, cree la versión 2.0.1 en branches/2.0 y cópielo en tags/2.0.2 . Continúa hasta llegar a la punta de la twig 2.0.

Eso lleva mucho más time, pero es factible. La última vez que lo hice, tardé aproximadamente una semana y media en hacer toda la conversión . Afortunadamente, primero hice el baúl y luego el lanzamiento activo que podía hacer en un día. Luego, volví a las cosas less activas.

Ciertamente no soy un experto en SVN, pero creo que debes emitir el command svn delete para los elementos que deseas eliminar en la siguiente confirmación. Se describe aquí .

Deberías crear una label en su lugar.
EDITAR:
svn estado list todos los cambios
puede imprimir todos los files eliminados de esta manera:
estado svn | grep -E '^!' | awk '{print $ 2}'> / tmp / changes
Puede hacer una svn delete en cada file con un lote;)

EDITAR: (SVN Migration How-To)

Supongamos que tiene un proyecto llamado projectA y un repository SVN en blanco.
Primero, debes crear una estructura de carpetas como esta:

 proyectoA /
 | - sucursales
 | - tags
 | - tronco

Luego importe sus files de proyecto.

 proyectoA /
 | - sucursales
 | - tags
 `- tronco
     | - README
     `- src

Después de la import, puede crear una label para "marcar" la versión inicial:

 proyectoA /
 | - sucursales
 | - tags
 |  `- release-1
 `- tronco
     | - README
     `- src

Después de este punto, debe editar sus files como lo desee. Cuando creas que todas tus ediciones son "Buenas", entonces confirma.
Después de algunas confirmaciones, si desea liberar, cree una label.

Trunk siempre debe contener la versión actualizada de su código.
Te recomiendo que uses TortoiseSVN en Windows si eres novato;)

Deberías usar svn-load-dirs.pl :

"Esta secuencia de commands de Perl está diseñada para cargar una cantidad de directorys en Subversion. Esto es útil si tiene una cantidad de files .zip o tar. {Z, gz, bz2} para un package en particular y desea cargarlos en Subversion. "

Básicamente lo que haces es:

  • exportar todas las tags cronológicamente
  • crear un repository vacío
  • use svn_load_dirs.pl para "astackr" la label después de la label en su subversión.

svn_load_dirs.pl crea una única revisión para cada label y también puede crear una label (subversión) después de cada import. Realizará un seguimiento de todos los files eliminados y agregados, y realizará las acciones de svn apropiadas. Esto significa que puede comenzar explícitamente con un tronco vacío

De su pregunta, parece que está completando el uso incorrecto de SVN. No tiene sentido eliminar toda la carpeta trunk / src y replacela por una nueva, excepto en el caso de un gran cambio en el código.

En cambio, crea una label para el lanzamiento.