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

Quand je fais un svn status ., je reçois ceci:

!     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

Fondamentalement, 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 (j'aurais dû faire svn update . à la place).

Alors maintenant, quand je fais svn status ., je reçois ces messages de conflit d'arbre.

J'ai trouvé le doc ici mais je ne sais pas comment le "fusionner" selon le doc.

Comment s'en débarrasser?

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

278
svn
demandé sur Cœur 2010-11-30 23:03:02

7 réponses

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.


Note: la même procédure fonctionne également pour la situation suivante:

$ 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 modifiez un fichier alors que quelqu'un d'autre a supprimé le fichier et s'est engagé en premier. En tant que bon citoyen svn, 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 supprimer le fichier de votre copie de travail. Au lieu d'être content svn se plaint maintenant que les fichiers locaux sont manquants et qu'il y a une mise à jour conflictuelle qui veut finalement voir les fichiers supprimés. Bon travail svn.

Si svn resolve ne fonctionne pas, pour une raison quelconque, vous pouvez faire ce qui 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éer les fichiers en conflit:

$ touch foo bar

Si le conflit est à propos des répertoires, remplacez touch par mkdir.

Nouvelle situation: fichiers locaux à ajouter au référentiel (Oui, svn, quoi que vous disiez), mise à jour Toujours conflictuelle.

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

Retourne les fichiers à l'état svn les aime (cela signifie supprimé):

$ svn revert foo bar

Nouvelle situation: les fichiers locaux ne sont pas connus de svn, la mise à jour n'est 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

Fait.

399
répondu lesmana 2016-05-18 21:00:53

Essayez de résoudre le conflit en utilisant

svn resolve --accept=working PATH
156
répondu zellus 2011-07-04 19:33:35

Je viens d'avoir ce même problème et j'ai trouvé que

$ svn revert foo bar

Résolu le problème.

Svn resolve n'a pas fonctionné 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
19
répondu sligocki 2011-04-13 23:12:13

Si vous n'avez apporté aucune modification dans le répertoire en conflit, vous pouvez également rm -rf conflicts_in_here/ puis svn up. Cela a fonctionné pour moi au moins.

2
répondu Udo 2011-01-19 22:29:07

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

0
répondu CWineland 2015-09-02 18:14:08

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

 svn revert -R your_local_path
0
répondu Gordon Ma 2018-02-09 19:40:31

Ce problème se produit souvent lorsque nous essayons de fusionner une autre branche change 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 à quitte la résolution, vous obtenez le statut:

 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 ces dossiers n'ont pas pu être trouvés à l'intérieur de Branch1_SubDir(évidemment, un répertoire ne peut pas être à l'intérieur lui-même).

Comment éviter ce problème en premier lieu:

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

Le correctif le plus simple pour ce problème qui a fonctionné pour moi:

svn revert -R .
0
répondu Saurav Sahu 2018-04-07 03:05:31