Comment puis-je supprimer tous les sans version/ignorés des fichiers/dossiers dans ma copie de travail?
Si j'ai une copie de travail d'un dépôt Subversion, est-il un moyen de supprimer tous les sans version ou les fichiers ignorés dans cette copie de travail avec une seule commande ou de l'outil? Essentiellement, je suis à la recherche pour le SVN analogique à git propre
.
D'une ligne de commande ou l'interface utilisateur de la solution (pour TortoiseSVN) serait acceptable.
- Double Possible de supprimer Automatiquement à la Subversion de fichiers non versionnés
Vous devez vous connecter pour publier un commentaire.
En Utilisant TortoiseSVN:
svn cleanup --remove-unversioned --remove-ignored .
Ce a les caractéristiques suivantes:
--xml
option et parser le xml résultant de sortie)svn status
imprime d'autres le statut de caractères avant le nom de fichier (ce qui ne devrait pas parce que les fichiers ne sont pas suivies, mais juste au cas où...)J'utilise un script shell nommé
svnclean
qui contient les éléments suivants:IFS
à ce qu'il était avant. Lorsque vous neVARNAME=value command
, la cession devalue
àVARNAME
s'applique uniquement lors de l'exécution decommand
(avec certaines exceptions qui ne s'appliquent pas àread
). Voir la spécification POSIX et ce POSIX rapport de bug pour plus de détails.Je sais que c'est vieux, mais au cas où quelqu'un d'autre tombe sur elle, des versions plus récentes (1.9 ou plus tard) de svn soutien
--remove-unversioned
, par exemplesvn cleanup . --remove-unversioned
.https://subversion.apache.org/docs/release-notes/1.9.html#svn-cleanup-options
svn cleanup . --remove-ignored
svn status --depth=infinity -v --xml
et analyse ce que, pour déterminer les fichiers à supprimer. Il fallait être prudent d'ignorer l' .svn dossier.svn cleanup --remove-unversioned --remove-ignored .
Ce oneliner pourrait vous aider:
À utiliser avec précaution!
svn status --no-ignore
pour capturer les fichiers ignorés d'un bien.La modification de Yanal-Yves Fargialla et gimpf réponses à l'aide de Powershell (mais n'étant pas autorisés à commenter sur le post original par Stackoverflow):
Ce qui ajoute le carat ("^") pour indiquer le début de la ligne, en évitant de répondre à l'ensemble des fichiers qui contiennent la lettre "i". Également ajouter les drapeaux pour -recurse et la force à rm pour faire cette commande non interactive, et donc utilisable dans un script.
Beaucoup de choses dans SVN peut être fait de différentes façons, comme en témoigne la variété de la ligne de commande réponses données ici. Avec l'avènement de la version 1.7, il y a encore une autre technique pour TortoiseSVN qui, en fait, donne un grain plus fin de la résolution de Stefan de la réponse fournie, vous permettant de sélectionner des fichiers non gérés séparément des fichiers ignorés. Il suffit de sélectionner
TortoiseSvn >> Clean up...
pour ouvrir cette boîte de dialogue.Avec powershell:
En ligne de commande:
-match '[\?i]' -replace '^.{8}'
au lieu de cela, ce qui fonctionne correctement même si un nom de fichier démarre avec un espace, et supprime également les fichiers ignorés.code
@(svn status --no-ignorer) -match '[\?i]' remplacer '^.{8}' | rm `. Compris avec l'aide de ce postpowershell -Command "&{(svn status --no-ignore) -match '[\?i]' -replace '^.{8}' | remove-item -force -recurse}"
Ce oneliner fonctionne pour moi (basé sur Richard Hansen réponse, qui étonnamment n'a pas de travail pour les fichiers contenant des espaces):
-fr
àrm
commande: svn status --no-ignorer | grep '^[I?]' | cut-c 9- | xargs -d"\n" -I{} rm-rf {}En Utilisant TortoiseSVN:
Pas vraiment une belle et propre solution, mais la manière la plus rapide que je connaisse (sur Windows).
Grâce à pkh pour l'astuce avec les fichiers ignorés.
Ceci est similaire à d'autres réponses, mais en fait, est ignorée des fichiers (notez le " I " dans le REs):
Quelqu'un a dit que vous ne pouvez pas le faire à partir de la ligne de commande de Windows.
Bull.
T-il dans une ligne et ne nécessite pas un simple outil GNU. 🙂
for /f "tokens=2 delims= " %%I IN ('svn st --no-ignore ^| findstr /R "^[I?]"') DO (DEL /S /F /Q /A:H "%%I" & rmdir /S /Q "%%I")
%%
sur%
vous ne pouvez pas les supprimer avec juste SVN en ligne de commande (pas sûr au sujet de outils d'interface graphique si vous êtes sous un système linux, ce qui pourrait aider:
http://www.guyrutenberg.com/2008/01/18/delete-unversioned-files-under-svn/
L'autre (brutal) méthode consiste à valider les modifications, supprimez l'ensemble du dossier et de la caisse de nouveau.