Comment résoudre le message «modification locale, suppression entrante lors de la mise à jour»

Quand je fais un svn status . , J’ai compris:

 ! C auto-complete-config.elc > local edit, incoming delete upon update ! + C auto-complete.elc > local edit, incoming delete upon update ! + C popup.elc > local edit, incoming delete upon update ! + C fuzzy.elc > local edit, incoming delete upon update 

En gros, ces fichiers ne devraient pas être dans le référentiel. Un développeur les a supprimés. Ensuite, je pense que j’ai fait un svn rm ... après le fait par erreur (aurait dû faire svn update . place).

Alors maintenant, quand je suis svn status . , Je reçois ces messages de conflit d’arbres.

J’ai trouvé la doc ici mais je ne sais pas comment la “fusionner” selon le doc.

Comment se débarrasser d’eux?

Je pense que ma copie de travail est synchronisée avec le référentiel. Je ne sais pas pourquoi ces messages s’affichent. Ces fichiers doivent être supprimés et sont supprimés pour autant que je sache partout. J’ai essayé svn update . et svn revert . mais je reçois toujours ce message lorsque je fais un svn status . .

Version courte:

 $ svn st ! + C foo > local edit, incoming delete upon update ! + C bar > local edit, incoming delete upon update $ touch foo bar $ svn revert foo bar $ rm foo bar 

Si le conflit concerne des répertoires au lieu de fichiers, remplacez touch par mkdir et rm par rm -r .


Remarque: la même procédure fonctionne également dans les cas suivants:

 $ svn st ! C foo > local delete, incoming delete upon update ! C bar > local delete, incoming delete upon update 

Version longue:

Cela se produit lorsque vous éditez un fichier alors que quelqu’un d’autre a supprimé le fichier et s’est engagé en premier. En tant que bon citoyen, vous faites une mise à jour avant un commit. Maintenant, vous avez un conflit. Réaliser que la suppression du fichier est la bonne chose à faire, vous supprimez le fichier de votre copie de travail. Au lieu d’être du contenu, svn se plaint maintenant que les fichiers locaux sont manquants et qu’il y a une mise à jour en conflit qui veut finalement voir les fichiers supprimés. Bon travail svn.

Si svn resolve ne fonctionne pas, pour quelque raison que ce soit, vous pouvez procéder comme suit:

Situation initiale: les fichiers locaux sont manquants, la mise à jour est en conflit.

 $ svn st ! + C foo > local edit, incoming delete upon update ! + C bar > local edit, incoming delete upon update 

Recréez les fichiers en conflit:

 $ touch foo bar 

Si le conflit concerne les répertoires, remplacez touch par mkdir .

Nouvelle situation: Les fichiers locaux à append au référentiel (oui, à droite, svn, peu importe ce que vous dites), la mise à jour est toujours en conflit.

 $ svn st A + C foo > local edit, incoming delete upon update A + C bar > local edit, incoming delete upon update 

Revient les fichiers à l’état svn aime eux (cela signifie supprimé):

 $ svn revert foo bar 

Nouvelle situation: les fichiers locaux non connus de svn, mis à jour ne sont plus en conflit.

 $ svn st ? foo ? bar 

Maintenant, nous pouvons supprimer les fichiers:

 $ rm foo bar 

Si le conflit concerne les répertoires, remplacez rm par rm -r .

svn ne se plaint plus:

 $ svn st 

Terminé.

Essayez de résoudre le conflit en utilisant

 svn resolve --accept=working PATH 

Je viens de recevoir ce même problème et j’ai trouvé que

 $ svn revert foo bar 

résolu le problème.

svn resolve ne fonctionnait pas pour moi:

 $ svn st ! + C foo > local edit, incoming delete upon update ! + C bar > local edit, incoming delete upon update $ svn resolve --accept working svn: Try 'svn help' for more info svn: Not enough arguments provided $ svn resolve --accept working . $ svn st ! + C foo > local edit, incoming delete upon update ! + C bar > local edit, incoming delete upon update $ svn resolve --accept working foo Resolved conflicted state of 'foo' $ svn st ! + foo ! + C bar > local edit, incoming delete upon update 

Si vous n’avez pas apporté de modifications dans le répertoire en conflit, vous pouvez également rm -rf conflicts_in_here/ et ensuite rm -rf conflicts_in_here/ . Cela a fonctionné pour moi au moins.

Ainsi, vous pouvez simplement restaurer le fichier que vous avez supprimé mais n’oubliez pas que si vous travaillez sur un projet avec un fichier de projet défini (comme iOS), le retour du fichier l’appenda à la structure de votre dossier système. des étapes supplémentaires peuvent être nécessaires si vous êtes dans ce cas

Vous pouvez forcer le retour de votre répertoire local sur svn.

  svn revert -R your_local_path 

Ce problème se produit souvent lorsque nous essayons de fusionner un autre changement de twig d’un mauvais répertoire.

Ex:

 Branch2\Branch1_SubDir$ svn merge -rStart:End Branch1 ^^^^^^^^^^^^ Merging at wrong location 

Un conflit qui est lancé lors de son exécution est:

 Tree conflict on 'Branch1_SubDir' > local missing or deleted or moved away, incoming dir edit upon merge 

Et lorsque vous sélectionnez q pour quitter la résolution , vous obtenez le statut en tant que:

  M . ! C Branch1_SubDir > local missing or deleted or moved away, incoming dir edit upon merge ! C Branch1_AnotherSubDir > local missing or deleted or moved away, incoming dir edit upon merge 

ce qui signifie clairement que la fusion contient des modifications liées à Branch1_SubDir et Branch1_AnotherSubDir , et que ces dossiers sont introuvables dans Branch1_SubDir (de toute évidence, un répertoire ne peut pas être Branch1_SubDir ).

Comment éviter ce problème en premier lieu:

 Branch2$ svn merge -rStart:End Branch1 ^^^^ Merging at root location 

La solution la plus simple pour ce problème qui a fonctionné pour moi:

 svn revert -R .