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?
Réponses
Trop de publicités?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
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.
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.