174 votes

Annuler l'ajout svn sans annuler les modifications locales

J'ai accidentellement exécuté svn add * et a ajouté un tas de fichiers qui ne devraient pas se trouver dans le référentiel. J'ai aussi des modifications locales dans certains fichiers que je veux garder. Existe-t-il un moyen simple d'annuler l'ajout de fichiers dans le référentiel ? svn add sans annuler les modifications locales ? La principale suggestion que je trouve sur Google est la suivante svn revert qui est censé annuler les modifications locales.

307voto

Nostradamus1935 Points 1678

Ce serait le cas :

svn rm --keep-local

La même chose m'est arrivée :-P

De nombreuses personnes ont fait remarquer que vous devriez utiliser :

svn rm --keep-local FILENAME

pour appliquer la commande à un ou plusieurs fichiers. (La première commande s'appliquerait à tous les fichiers, ce qui peut avoir des effets secondaires indésirables).

1 votes

Cela n'a eu aucun effet sur moi. J'ai exécuté le code comme indiqué ci-dessus (y compris le point final) à partir du dossier de base. Je ne sais pas si quelque chose m'échappe.

0 votes

Je suis d'accord - c'est la réponse qui devrait être acceptée. Je viens de l'essayer et cela a parfaitement fonctionné.

8 votes

Notez que vous devez ajouter le nom du fichier à la commande. svn rm --keep-local FILENAME . Les FILENAME peut utiliser * pour faire correspondre plusieurs fichiers (si vous avez la chance d'avoir un modèle).

35voto

Juampy Points 767

Si ces fichiers se trouvent dans un répertoire qui n'a pas encore été validé, vous pouvez supprimer tout le contenu du répertoire de la prochaine validation en faisant :

svn delete --keep-local /path/to/directory

Cependant, si ces fichiers sont déjà dans le référentiel et contiennent maintenant des modifications que vous ne voulez pas livrer, vous pouvez livrer le reste des fichiers en utilisant les listes de modifications :

svn changelist somename /file/to/be/committed
svn commit --changelist somename

12voto

Jeremy Whitlock Points 2540

Cette question ayant été initialement acceptée comme réponse, même si ce n'était pas la meilleure façon de procéder, j'ai mis à jour la réponse pour qu'elle soit exacte, puisque je ne peux pas la supprimer. En tant que Nostradamus1935 l'a souligné, la --keep-local pour les svn delete est la meilleure façon de procéder. Nostradamus1935 aurait dû obtenir la bonne réponse puisque la réponse fournie était meilleure que la mienne :)

8voto

James T. Huggett Points 350

Vous pouvez régler votre caisse de la manière suivante :

  1. Sauvegarde de vos fichiers locaux
  2. Inverser le checkout SVN
  3. Restaurer les fichiers

-

rsync -av --exclude .svn/ YOURDIR/ YOURDIR.bak
svn revert -R YOURDIR
rsync -av YOURDIR.bak/ YOURDIR

0 votes

La dernière commande crée toujours un niveau de répertoire supplémentaire, c'est-à-dire qu'elle aboutit à YOURDIR/YOURDIR/ Je pense que le problème se situe au niveau de la création de la commande de sauvegarde initiale. YOURDIR.bak/YOURDIR/ .

0 votes

Pour éviter cela, rsync exige une barre oblique à la fin du répertoire source. J'ai modifié la réponse.

3voto

pushya Points 656

J'ai eu le même problème, j'ai accidentellement ajouté un /directory via svn add qui contient les binaires et le fichier compilé. Cette commande supprime en fait le répertoire.

svn rm --force <directory-name>

Dans mon cas, je n'ai pas besoin de ce répertoire et je peux donc le supprimer en toute sécurité. Si vous souhaitez conserver les fichiers/répertoires, sauvegardez-les dans un endroit avant d'appliquer la commande, puis copiez-les à nouveau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X