2012-01-17 18 views
6

Di mi repositorio SVN se parece a:¿Cómo pago un repositorio SVN, ignorando un directorio local sin versión?

project/ 
    trunk/ 
     README 
     foo/ 
      bar.sh 

y tengo un local, no versionado directorio de este modo:

svn/ 
    project/ 
     trunk/ 
      README 
      foo/ 
       hum.sh 

si mi cwd es svn y yo svn checkout http://...project/ me sale el siguiente:

svn: Failed to add directory 'project/trunk': an unversioned directory of the same name already exists.

Lo suficientemente bueno. Entonces: svn checkout --force http://...project/hace revisa el repositorio, pero deja los archivos existentes tal como están (e informa un E para el existente).

¿Es posible verificar un repositorio, tratando el repositorio como la versión "preferida" para los archivos en conflicto? Es decir. en el ejemplo anterior, debería terminar con:

svn/ 
    project/ 
     trunk/ 
      README 
      foo/ 
       bar.sh 
       hum.sh 

donde trunk/README y trunk/foo/bar.sh son las versiones del repositorio, pero trunk/foo/hum.sh es la versión local. Yo esperaría un posterior svn status a única informe:

? trunk/foo/hum.sh 

ACTUALIZACIÓN

Consejo: Probablemente estoy acercarse a esto de la 'dirección' equivocada Estoy apostando uso razonable de tener cp revisé el repositorio "al costado" haría lo que estoy buscando, pero no puedo entender cómo funciona ...

Respuesta

5

Sí, casi está allí con su svn checkout --force. Para finalizar, haz un svn revert -R en él. Eso eliminará las modificaciones locales (pero no eliminará los archivos nuevos).

de edición: Si desea hacerlo con cp, la opción -n, --no/clobber debe hacerlo por usted:

$ svn co https://…/FOO their-foo 
$ cp -rn my-foo/* their-foo 
$ cd their-foo; svn stat 

debe mostrar sólo los archivos nuevos.

+0

Funcionó como un amuleto, pero Dan * simplemente * te ganó en los puntos de representante, me temo :) –

+0

@BobbyJack: Supongamos que no debería tomar un minuto para probarlo. Bueno, he actualizado con cómo hacerlo con 'cp', ya que parecía estar preguntándose. – derobert

4

Puede usar el comando svn revert -R para restaurar recursivamente todos los archivos en los versos del repositorio ion, donde uno existe hum.sh seguiría siendo ?, pero todos los demás archivos, ya sea que se hayan cambiado localmente o hayan sido E xisting, se restaurarán en la versión del repositorio.

También puede usar la opción svn update --accept theirs-full que también debe sobrescribir los archivos marcados como existentes.

+0

Fantástico - eso es exactamente lo que estaba buscando. Gracias. –

Cuestiones relacionadas