svn supprimer les fichiers supprimés
J'ai une copie de travail d'un projet SVN. Les fichiers supprimés à partir de cette copie de travail par une application. Lorsque je remets la copie de travail à l'aide de la commande SVN en ligne je voudrais supprimer ces fichiers supprimés à partir du référentiel.
Si je remets la copie de travail à l'aide de svn commit
elle ne supprime pas les fichiers du projet (parce qu'ils n'ont pas été supprimés localement avec svn delete
. Est-il possible que je peux dire SVN à supprimer (à partir du référentiel) tous les fichiers qui sont manquants dans la copie de travail?
- Si une application supprime les fichiers, peut-être qu'ils ne devraient pas être dans le référentiel pour commencer? Peut-être que vous devriez être à l'exclusion de avec
svn propset svn:ignore
- non, ils ont besoin d'être dans le référentiel jusqu'à ce qu'ils soient supprimés
- Le point est pour le référentiel pour stocker de sorte que vous pouvez les récupérer si vous voulez revenir à une version précédente. Vous devez vous dire que ces fichiers doivent être marqués comme supprimés dans la nouvelle version
Vous devez vous connecter pour publier un commentaire.
utiliser un
il donnera la liste des modifications à la copie de travail. (supprimé des fichiers de démarrage avec un ! )
Ensuite, vous pouvez :
et enfin s'engager
Vous pouvez également écrire un petit extrait de code pour automatiser ce:
Et, éventuellement, l'ajout d'un alias :
Si vous avez besoin de support @ /espaces dans les noms de fichiers vous avez besoin pour compliquer le script (vous ne devez pas utiliser ces caractères dans les noms de fichiers, mais parfois c'est une décision qui a été fait par quelqu'un d'autre) - vous pouvez l'utiliser dans vos .bashrc directement:
svn commit
qui va le faire automatiquementsvn st | grep '^!' | awk '{$1=""; print " --force \""substr($0,2)"@\"" }' | xargs svn delete
Votre question ainsi libellée (Est-il un moyen que je peux dire SVN à supprimer (à partir du référentiel) tous les fichiers qui sont manquants dans la copie de travail?) est vraiment un doublon de la question relative à la commande svn pour supprimer tous les localement des fichiers manquants. En réponse à cette question, j'ai fourni une ligne de script PowerShell pour vous permettre d'identifier automatiquement et supprimer les fichiers nécessaires à partir de votre référentiel. Je reproduis ici pour plus de commodité:
Qui suppose, bien sûr, que vous êtes sur Windows. Ici est une solution analogue si vous êtes sur Linux/Unix.
Toutefois, lorsque vous ajoutez dans la deuxième partie de votre question, qui vous a révélé par inadvertance 🙂 plus tard dans un commentaire--Est-il un moyen pour que cela se produise automatiquement lors d'un commit?--votre question est unique.
Le seul moyen que je pouvais voir à répondre à la partie deux est à l'aide d'un pre-commit hook, c'est à dire un script hook exécuté lors de l'ouverture d'un commit, mais avant de le commettre lui-même fait se produit. Normalement, vous devez utiliser un pre-commit hook pour valider un ensemble de conditions et de permettre à l'engager à poursuivre ou de mettre fin. Hélas, je ne pense pas qu'il soit permis de laisser seul lieu, d'en modifier l'ensemble des fichiers d'être commises lors de la validation elle-même. Mais je n'ai pas trouvé ce point documenté de sorte que vous pouvez creuser plus loin sur ce point.
2012.06.19 Clarification par N'commentaire
N'est correcte que vous avez besoin d'un clientcôté crochet, pas un serveurcôté crochet parce que les fichiers supprimés à traiter sont sur le client. En ligne de commande svn n'a pas cette option mais TortoiseSVN offre côté client crochets. En fait, après j'ai pas lu référencé dans la page de manuel je me suis rappelé que non seulement TortoiseSVN offre un pre-commit crochet, mais il offre également une start-commit crochet, ce qui est idéal pour ce genre de situation. La différence est que le pre-commit hook fonctionne après vous ouvrez la boîte de dialogue de livraison et après vous appuyez sur la touche OK pour tentative d'exécution de la livraison. La start-commit hook, d'autre part, s'exécute avant la boîte de dialogue de validation s'affiche. Ainsi, avec le crochet de script en place, par le temps, vous verrez la liste des fichiers à valider, il va inclure les fichiers qu'il va supprimer ainsi!
Les ouvrages suivants, lorsque vous ont été remis une pile de fichiers de minerai de chemin de répertoires avec les noms de fichiers en eux. Il fonctionne sur OSX, IOS et linux