Quelqu'un connaît-il un moyen de supprimer récursivement tous les fichiers d'une copie de travail qui ne sont pas sous contrôle de version? (J'en ai besoin pour obtenir des résultats plus fiables dans ma version automatique de VMware.)
svn
build-automation
Stefan Schultze
la source
la source
hg purge --all
dans Mercurial.Réponses:
Éditer:
Subversion 1.9.0 a introduit une option pour ce faire:
Avant cela, j'utilise ce script python pour faire cela:
Il semble bien faire le travail.
la source
svn cleanup --remove-unversioned
- dessous est meilleure. Et c'est pour Subversion 1.9.0 (cette version date de 2015). Il est stable et standard.cela fonctionne pour moi en bash:
Seth Reno est meilleur:
Il gère les dossiers et les espaces non versionnés dans les noms de fichiers
Comme indiqué ci-dessous, cela ne fonctionne que sur les fichiers que subversion ne connaît pas (status =?) Tout ce que la subversion ne sait au sujet (y compris les fichiers / dossiers Ignoré) ne seront pas supprimés.
Si vous utilisez subversion 1.9 ou supérieur, vous pouvez simplement utiliser la commande svn cleanup avec les options --remove-unversioned et --remove-ignored
la source
svn status | grep "^?" | awk '{print $2}' | xargs -d \\n rm -r
J'ai parcouru cette page en cherchant à faire la même chose, mais pas pour une construction automatisée.
Après un peu plus de recherche, j'ai découvert le « Menu contextuel étendu » dans TortoiseSVN. Maintenez la touche Maj enfoncée et faites un clic droit sur la copie de travail. Il y a maintenant des options supplémentaires dans le menu TortoiseSVN, y compris « Supprimer les éléments non versionnés ... ».
Bien que peut-être pas applicable pour cette question spécifique (c'est-à-dire dans le contexte d'une construction automatisée), j'ai pensé que cela pourrait être utile pour d'autres qui cherchent à faire la même chose.
la source
Voir: svn-clean
la source
Si vous êtes sur la ligne de commande Windows,
Version améliorée:
Si vous l'utilisez dans un fichier de commandes, vous devez doubler
%
:la source
J'ai ajouté ceci à mon profil Windows PowerShell
la source
--no-ignore
àsvn status
et-Recurse
àRemove-Item
Ligne de commande Linux:
Ou, si certains de vos fichiers appartiennent à root:
Ceci est basé sur la réponse de Ken. (La réponse de Ken ignore les fichiers ignorés; ma réponse les supprime).
la source
Faites-le simplement sur un shell unix avec:
la source
Ne pouvez-vous pas simplement effectuer une exportation vers un nouvel emplacement et créer à partir de là?
la source
Si vous avez TortoiseSVN sur votre chemin et que vous êtes dans le bon répertoire:
Les options sont décrites dans l'aide de TortoiseSVN pour
/command:cleanup
:la source
Si vous utilisez tortoise svn, il existe une commande cachée pour le faire. Maintenez la touche Maj enfoncée tout en cliquant avec le bouton droit sur un dossier pour lancer le menu contextuel dans l'explorateur Windows. Vous obtiendrez une commande "Supprimer les éléments non versionnés".
voir le bas de cette page pour plus de détails, ou la capture d'écran ci-dessous qui met en évidence les fonctionnalités étendues avec les étoiles vertes, et celle d'intérêt avec le rectangle jaune ...
la source
Subversion 1.9.0 a introduit une option pour supprimer les éléments non versionnés [1]
[1] https://subversion.apache.org/docs/release-notes/1.9.html#svn-cleanup-options
la source
Ma conversion C # du script Python de Thomas Watnedals:
la source
Il s'agit d'une commande shell unix pour supprimer tous les fichiers non sous contrôle subversion.
Remarques:
st
ensvn st
est une accumulation dans l' alias pourstatus
, soit la commande est équivalente àsvn status
--no-ignore
inclut également les fichiers non référentiels dans la sortie de statut, sinon ignore via des mécanismes comme.cvsignore
etc. - puisque le but est d'avoir un point de départ propre pour les builds, ce commutateur est indispensablegrep
filtres la sortie de telle sorte que seuls les fichiers inconnus de subversion restent - les lignes commençant par la?
liste des fichiers inconnus de subversion qui seraient ignorés sans l'--no-ignore
optionsed
xargs
commande reçoit l'instruction-r
de ne pas s'exécuterrm
, lorsque la liste d'arguments serait vide-d '\n'
option indiquexargs
d'utiliser une nouvelle ligne comme délimiteur, la commande fonctionne également pour les noms de fichiers avec des espacesrm -r
est utilisé dans le cas où des répertoires complets (qui ne font pas partie du référentiel) doivent être supprimésla source
Je ne pouvais pas faire fonctionner l'un des éléments ci-dessus sans dépendances supplémentaires que je ne voulais pas avoir à ajouter à mon système de construction automatisé sur win32. J'ai donc rassemblé les commandes Ant suivantes - notez que celles-ci nécessitent l'installation du JAR Ant-contrib (j'utilisais la version 1.0b3, la dernière, avec Ant 1.7.0).
Notez que cela supprime tous les fichiers non versionnés sans avertissement.
Pour un autre dossier, modifiez la
${basedir}
référence.la source
supprimez l'écho si vous êtes sûr de ce que vous voulez faire.
la source
/bin/sh
et nrm
processus fourchus.Puisque tout le monde le fait ...
la source
Pourrait aussi bien apporter une autre option
Le /(config|.ini)/ est pour mes propres besoins.
Et peut-être une bonne idée d'ajouter --no-ignore à la commande svn
la source
Je suis tombé sur svn-clean sur ma machine RH5. Il est situé dans / usr / bin / svn-clean
http://svn.apache.org/repos/asf/subversion/trunk/contrib/client-side/svn-clean
la source
Solution pure Windows cmd / bat:
la source
J'ai essayé la version de Seth Reno à partir de cette réponse, mais cela n'a pas fonctionné pour moi. J'ai eu 8 caractères avant le nom de fichier, pas 9 utilisés dans
cut -c9-
.Voici donc ma version avec
sed
au lieu decut
:la source
Si vous êtes cool avec PowerShell:
Retirez l'indicateur -WhatIf pour que la commande effectue réellement les suppressions. Sinon, il affichera simplement ce qu'il ferait s'il était exécuté sans l'option -WhatIf.
la source
J'ajouterais ceci en commentaire à la réponse de Thomas Watnedal , mais je ne peux pas encore.
Un problème mineur (qui n'affectera pas Windows) est qu'il ne vérifie que les fichiers ou les répertoires. Pour les systèmes de type Unix où des liens symboliques peuvent être présents, il est nécessaire de changer la ligne:
à
pour supprimer également les liens.
Pour moi, changer la dernière ligne
if match: removeall(match.group(1))
enafin qu'il affiche ce qu'il supprime était également utile.
Selon le cas d'utilisation, la
?[\?ID]
partie de l'expression régulière peut être meilleure car?[\?I]
, car leD
supprime également les fichiers supprimés, qui étaient sous contrôle de version. Je veux l'utiliser pour créer un dossier propre et archivé, il ne devrait donc y avoir aucun fichier dans unD
état.la source
@zhoufei J'ai testé votre réponse et voici la version mise à jour:
%
marques devant G et H%~1
peut être utilisé n'importe quel nom de répertoire, je l'ai utilisé comme une fonction dans un fichier chauve-souris, de même que le%~1
premier paramètre d'entréela source
Si vous ne voulez pas écrire de code, svn2.exe de svn2svn le fait, il y a aussi un article sur la façon dont il est implémenté. Les dossiers et fichiers supprimés sont placés dans la corbeille.
Exécutez "svn2.exe sync [chemin]".
la source
Pour les gens qui aiment faire cela avec perl au lieu de python, shell Unix, java, etc. Voici un petit script perl qui fait aussi le jib.
Remarque: cela supprime également tous les répertoires non versionnés
la source
En utilisant TortoiseSVN: * cliquez avec le bouton droit sur le dossier de la copie de travail, tout en maintenant la touche Maj enfoncée * choisissez "supprimer les éléments non versionnés"
Comment puis-je supprimer tous les fichiers / dossiers non versionnés / ignorés de ma copie de travail?
la source
Une manière propre de faire cela dans PERL serait:
la source
J'ai utilisé ~ 3 heures pour générer cela. Cela prendrait 5 minutes pour le faire sous Unix. Le problème principal était: les espaces dans les noms pour les dossiers Win, l'impossibilité d'éditer %% i et le problème de la définition des variables dans la boucle Win cmd.
la source
L'extrait de code C # ci-dessus n'a pas fonctionné pour moi - j'ai le client tortoise svn, et les lignes sont formatées légèrement différemment. Voici le même extrait de code que ci-dessus, réécrit uniquement pour fonctionner et utiliser regex.
la source