212 votes

Comment puis-je supprimer tous mes changements dans mon répertoire de travail SVN

J'ai un répertoire de travail svn. J'ai apporté quelques modifications à ce répertoire et cela apparaît dans «svn status». Mais y a-t-il un moyen pour moi de supprimer tous mes changements et de tout obtenir depuis la ligne de commande en utilisant la ligne de commande?

306voto

Mike McQuaid Points 4675
 svn revert -R .
svn up
 

Cela annulera récursivement le répertoire en cours et tout ce qui se trouve en dessous, puis mettra à jour la dernière version.

91voto

Shaize Points 201

Utilisé une combinaison de réponses d'autres personnes pour trouver cette solution

annuler les modifications normales de svn locales

 svn revert -R .
 

supprimer tout autre changement et prend en charge la suppression de fichiers / dossiers avec des espaces, etc.

 svn status --no-ignore | grep -E '(^\?)|(^\I)' | sed -e 's/^. *//' | sed -e 's/\(.*\)/"\1"/' | xargs rm -rf
 

N'oubliez pas de récupérer les derniers fichiers de svn

 svn update --force
 

14voto

bbum Points 124887

Si vous n'avez pas de changements, vous pouvez toujours être très complète et/ou paresseux et ne...

rm -rf *
svn update

Mais, non, vraiment, ne pas le faire sauf si vous êtes vraiment sûr que le nuke-de-l'espace option est ce que vous voulez!! Cela a l'avantage de la destruction construire tous les fichiers inutiles, les fichiers temporaires, et les choses que SVN ignore.

La plus bonne solution est d'utiliser la commande:

svn revert -R .

Le -R les causes de la subversion répéter et de revenir le tout dans le répertoire de travail courant.

9voto

Mike Points 6080

Aucune des réponses ici étaient tout à fait ce que je voulais. Voici ce que j'ai trouvé:

# Recursively revert any locally-changed files
svn revert -R .

# Delete any other files in the sandbox (including ignored files),
# being careful to handle files with spaces in the name
svn status --no-ignore | grep '^\?' | \
    perl -ne 'print "$1\n" if $_ =~ /^\S+\s+(.*)$/' | \
    tr '\n' '\0' | xargs -0 rm -rf

Testé sur Linux; peut travailler dans Cygwin, mais s'appuie sur (je crois) un GNU spécifiques extension qui permet de xargs pour diviser basé sur '\0' au lieu de blanc.

L'avantage de la commande ci-dessus est qu'il ne nécessite pas une activité de réseau pour réinitialiser le bac à sable. Vous obtenez exactement ce que vous aviez avant, et vous perdez toutes vos modifications. (avertissement avant que quelqu'un accuse-moi pour ce code de la destruction de leur travail) ;-)

J'utilise ce script sur un système d'intégration continue là où je veux assurez-vous qu'une nouvelle version est effectuée après l'exécution de certains tests.

Edit: je ne suis pas sûr que cela fonctionne avec toutes les versions de Subversion. Il n'est pas clair si l' svn status commande est toujours formatées de manière uniforme. Utilisez à vos propres risques, comme avec toute commande qui utilise une telle couverture en rm commande.

7voto

Sean Points 22088

svn revert annulera tous les changements locaux que vous avez faits

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