116 votes

Existe-t-il une commande Subversion pour réinitialiser la copie de travail?

Est-il un seul de commande de Subversion qui serait "reset" une copie de travail exactement à l'état qui est stocké dans le référentiel? Quelque chose comme git reset --hard ou (ha, dur de faire un Git reset ne pas supprimer les fichiers non versionnés!!!!) rm -rf wc && svn co <url> wc.

Mise à jour: je ne suis pas après un simple revert, qui ne supprime pas les fichiers supplémentaires dans la copie de travail. Je veux vraiment quelque chose qui serait la même que la suppression de la copie de travail et la vérifier à nouveau, seul, sans avoir à les télécharger à nouveau les données. (Évidemment, je ne me dérange pas de perdre toutes les modifications non validées.)

187voto

vcsjones Points 51910

Vous pouvez récursive revenir comme ceci:

svn revert --recursive .

Il n'existe aucun moyen (sans écrire une création de script) pour enlever les choses qui ne sont pas sous contrôle de code source. Je pense que le plus proche que vous pourriez faire est de parcourir tous les fichiers, utilisez ensuite la commande grep la suite de l' svn list, et si la commande grep échec, puis de le supprimer.

EDIT: La solution pour la création de script est ici: Supprimer Automatiquement à la Subversion de Fichiers non versionnés

Vous pouvez donc créer un script qui combine un revert , quelle réponse dans la question qui vous convient le mieux.

42voto

khaije1 Points 61

pour revenir dossiers

svn revert . -R 

pour nettoyer sans traces de fichiers

svn status | rm -rf $(awk '/^?/{$1 = ""; print $0}')

l' -rf peut/doit sembler effrayant au premier abord, mais une fois compris, ne sera pas pour ces raisons:

  1. Seulement totalement-sans traces répertoires correspondent au modèle transmis rm
  2. l' -rf est nécessaire, d'autre de ces répertoires ne seront pas supprimés

pour revenir ensuite nettoyer (OP question)

svn revert . -R && svn status | rm -rf $(awk '/^?/{$1 = ""; print $0}')

constante de leur facilité d'utilisation

ajouter permanente alias à votre .bash_aliases

alias svn.HardReset='read -p "destroy all local changes?[y/N]" && [[ $REPLY =~ ^[yY] ]] && svn revert . -R && rm -rf $(awk -f <(echo "/^?/{print \$2}") <(svn status) ;)'

Cheers!

23voto

Vivek Yadav Points 116

Supprimez tout ce qui se trouve dans votre copie locale en utilisant

rm -r your_local_svn_dir_path / *

et le tout revenir récursivement en utilisant la commande ci-dessous.

svn revert -R your_local_svn_dir_path

Cela est bien plus rapide que de supprimer tout le répertoire et de procéder à une nouvelle extraction, car les fichiers sont en cours de restauration à partir de vos métadonnées svn locales. Il n'a même pas besoin d'une connexion réseau.

7voto

Abe Voelker Points 7306
 svn revert . -R
 

tout réinitialiser.

 svn revert path/to/file
 

pour un seul fichier

3voto

Andriy F. Points 714

Solution pure Windows cmd / bat:

 svn cleanup .
svn revert -R .
For /f "tokens=1,2" %%A in ('svn status --no-ignore') Do (
     If [%%A]==[?] ( Call :UniDelete %%B
     ) Else If [%%A]==[I] Call :UniDelete %%B
   )
svn update .
goto :eof

:UniDelete delete file/dir
IF EXIST "%1\*" ( 
    RD /S /Q "%1"
) Else (
    If EXIST "%1" DEL /S /F /Q "%1"
)
goto :eof
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X