Comment faire pour supprimer tous les fichiers supprimés à partir du référentiel?
J'ai un script dans lequel j'ai ajouter de nouveaux fichiers avant de consacrer mon travail de copie de mon dépôt de cette ligne:
svn status | grep ^\? | awk '{print $2}' | xargs svn add
Je veux maintenant ajouter une ligne de supprimer du répertoire tous les fichiers supprimés dans ma copie de travail. En d'autres termes, je ne peut pas spécifier un par un, et j'ai besoin de les détecter avec svn status et ensuite automatiquement supprimer. Cependant, la ligne ne fonctionne pas.
svn status | grep ^\! | awk '{print $2}' | xargs svn --force delete
Comme vous pouvez le voir j'ai remplacé
"?
" avec "!
" et
"add
" avec "--force delete
"
Pourriez-vous me dire pourquoi cela ne fonctionne pas ?
ps. Je sais que c'est une procédure risquée. J'ai déjà discuté de tout ça.
grâce
grâce
- Avez-vous essayé? Pourquoi ne pas le faire vous-même au lieu d'attendre une réponse?
- Je l'ai juste essayé, ça ne fonctionne pas
- Le problème, c'est que vous essayez de supprimer les fichiers qui sont marqués avec un point d'exclamation qui signifie quelque chose est faux. Cela signifie que vous avez supprimé ce fichier par le système d'exploitation de commande au lieu de svn SVN delete qui n'aime pas...... Le problème que je ne comprends pas...comment avez-vous fait de supprimer les fichiers que vous souhaitez rendre permanente par svn rm --force ?
- Je fais toujours le faire avec un script php. Je suis aujourd'hui, ça sonne faux et sans doute que je ne vais pas l'utiliser. Je veux juste faire le script shell de travail.
- Avez-vous un message d'erreur?
- J'espère que je ne suis pas compliquer les choses, mais, vous savez, avec ce que vous allez supprimer de la tête, à droite? Ils sont encore récupérables par la vérification d'une révision antérieure. Si vous faites de code standard de gestion des versions, c'est exactement ce que vous voulez! Si vous mettez le mal de choses dans le svn (par exemple confidentiel des trucs dans un établissement public de pensions de titres) alors ce que vous avez besoin est quelque chose d'autre
Vous devez vous connecter pour publier un commentaire.
J'ai juste essayé et il fonctionne parfaitement.
Vos fichiers d'avoir des espaces dans leur nom?
ATTENDEZ UNE SECONDE!! Je vois le problème. Vous avez:
et non pas:
La
--force
est un paramètre de ladelete
commande et pas lasvn
commande.J'ai trouvé une autre solution, trop.
Je l'ai vu sur http://donunix.blogspot.de/2009/02/svn-remove-all-deleted-files.html
La solution fonctionne pour les noms de fichiers avec des espaces et des caractères spéciaux.
svn status
- liste de tous les changements, les fichiers supprimés sont marqués comme!
grep '^!'
- extraits des lignes qui commence par!
(c'est à dire des fichiers supprimés)sed 's/! *//'
- supprime!
-char au début et à des espaces après ilxargs -d '\n'
- traite chaque ligne d'entrée (y compris les espaces et caractères spéciaux) comme argument séparé et les transmet àsvn delete --force
-d
option dexargs
n'est pas pris en charge sur mac OS X semble ne fonctionne que pour Linux (ou alors j'ai loupé quelque chose?)-d '\n'
option!ce propos en ajoutant que vous pouvez simplement utiliser
ou
il ferait la même chose: ajouter tous les fichiers non versionnés à l'exception de ceux correspondant svn:ignore les modèles
une approche utilisant perl oneliner serait:
cela devrait également travailler avec les caractères d'espace dans les noms de fichier.
edit: amélioration de la regexp