¿Cómo sincronizar un proyecto con el repository svn después de eliminar los files locales en xcode?

He agregado algunos files al repository svn durante las revisiones iniciales. Pero ahora, esos files se han ido y eso se hizo eliminándolos directamente en xcode 4.2. Pero todavía existen en svn y quiero actualizar el repository svn a mi versión de proyecto local. Sé que podría usar el command svn rm para eliminar todos los files, pero la idea me molesta porque tendré que search, seleccionar y eliminar cada file manualmente. ¿Alguna solución less dolorosa?

PD. también, cualquier consejo sobre cómo verificar la diferencia entre el proyecto local y el repository svn es bienvenido. Actualmente, si estoy realizando una actualización, xcode dice que mi copy local está actualizada, por lo que incluso he encontrado los files faltantes.

Si no te importa entrar en la command-line, puedes ejecutar el svn status y encontrar los files que borraste. Estos comenzarán con el signo de exclamación. Aquí hay un ejemplo de un repository con el que acabo de hablar:

 $ svn status ! subversion/pre-commit-kitchen-sink-hook.html ! subversion/svn-watch.html ! bludgen/bludgen.html ! duplicate-properties-files/fixup.html ! cvstools/group.html ! cvstools/find-branch-usage.html A cvstools/someprogram.py M cvstools/find-branch-usage.pl ! cvstools/scramble.html M cvstools/findNames.pl 

Ahora, todo lo que necesita hacer es encontrar los nombres de los progtwigs. Si no tiene espacios en los nombres de sus progtwigs, un script simple [awk] debería ser suficiente:

 $ svn status | awk '/^!/ {print $2}' subversion/pre-commit-kitchen-sink-hook.html subversion/svn-watch.html bludgen/bludgen.html duplicate-properties-files/fixup.html cvstools/group.html cvstools/find-branch-usage.html cvstools/scramble.html 

Ahora que tiene una list de progtwigs, puede ejecutar eso a través de xargs en un command svn rm :

 $ svn status | awk '/^!/ {print $2}' | xargs svn rm D subversion/pre-commit-kitchen-sink-hook.html D subversion/svn-watch.html D bludgen/bludgen.html D duplicate-properties-files/fixup.html D cvstools/group.html D cvstools/find-branch-usage.html D cvstools/scramble.html 

Afortunadamente, los Mac vienen con el cliente de la línea de command de Subversion. Esto eliminará los files que eliminó manualmente a través de Subversion y le permitirá confirmar sus cambios. Luego podrá actualizar su copy del repository con el último código. Puede haber algunos conflictos (eliminó un file que alguien en una revisión posterior actualizó), pero estos deberían ser bastante manejables.

Puede usar svn diff para search diferencias entre su copy de trabajo actual y la revisión HEAD del repository. Desafortunadamente, el parámetro --summarize solo funciona si se hace un repository a la diferencia del repository. Sin embargo, puede filtrar los files que son diferentes usando grep para search líneas que comiencen con Index: :

 $ svn diff -rHEAD | grep "^Index:" Index: windows-tools/which.pl Index: subversion/pre-commit Index: subversion/README Index: subversion/control.ini Index: subversion/pre-commit-kitchen-sink-hook.html Index: subversion/svn-watch.html Index: cvstools/findNames.pl Index: cvstools/group.html Index: cvstools/find-branch-usage.html Index: cvstools/someprogram.py Index: cvstools/find-branch-usage.pl Index: cvstools/scramble.html Index: bludgen/bludgen.html Index: duplicate-properties-files/fixup.html 

El único problema real es si el cliente de Subversion que utiliza XCode es compatible con el cliente de command-line de Subversion. Por ejemplo, el cliente de VisualStudio Subversion usa _svn como el nombre de los directorys de información de Subversion, mientras que el cliente de la command-line usa .svn .

Creo que el cliente XCode Subversion es compatible con la revisión 1.6.x del cliente de la command-line de Subversion (e incluso revisiones anteriores hasta el 1.4), pero no con la última versión 1.7 de Subversion.

Si no has manipulado la installation de Subversion de tu Mac, debería estar bien.

La única manera de la que soy consciente para hacer lo que intentas es:

  • Ir a file-> Control de fuente-> Repositorios
  • Seleccione su repository
  • Haga clic en Commit
  • Haz clic en el ícono de vista plana (a la izquierda)
  • Los files que faltan se muestran como! Y puede hacer clic con el button derecho para descartar el cambio.

EDITAR – Lo siento, he entendido mal el problema. Esto puede ayudarte a encontrar los files que faltan, pero no te ayudará a comprometerte. Estaba pensando que estabas tratando de restaurar las eliminaciones, no de cometerlas.