Si vous supprimez un répertoire d'une copie de travail SVN, mais que vous n'avez pas encore validé, il n'est pas évident de savoir comment le récupérer. Google suggère même que "svn undo delete before commit" soit une requête courante lorsque vous tapez "svn undo d", mais les résultats de la recherche sont inutiles.
edit: je voudrais une solution qui fonctionne dans Subversion 1.4.4
svn revert deletedDirectory
Voici la documentation pour le svn revert
commande.
Si deletedDirectory
a été supprimé en utilisant rmdir
et non svn rm
, vous devrez faire
svn update deletedDirectory
au lieu.
1) faire
svn revert . --recursive
2) analyser la sortie pour les erreurs comme
"Failed to revert 'dir1/dir2' -- try updating instead."
3) appelez svn up pour chacun des répertoires d'erreur:
svn up dir1/dir2
Ce qui a fonctionné pour moi, c'est
svn revert --depth infinity deletedDir
Effectuez une opération (récursive) d'annulation à partir du niveau supérieur au répertoire que vous avez supprimé.
Pour en faire une ligne, vous pouvez essayer quelque chose comme:
svn status | cut -d ' ' -f 8 | xargs svn revert
La solution la plus simple que j'ai trouvée consistait à supprimer le répertoire parent de la copie de travail (avec rm -rf, pas svn delete), puis à exécuter svn update chez le grand-parent. Par exemple, si vous avez supprimé a/b/c, rm -rf a/b, cd a, svn up. Cela ramène tout. Bien entendu, ce n'est une bonne solution que si vous ne souhaitez pas conserver d'autres modifications non validées dans le répertoire parent.
Espérons que cette page sera en haut des résultats la prochaine fois que j'examinerai cette question sur Google. Ce serait encore mieux si quelqu'un proposait une méthode plus propre, bien sûr.
Vous pouvez supprimer le dossier et mettre à jour le répertoire parent avant de valider:
rm -r some_dir
svn update some_dir_parent