web-dev-qa-db-fra.com

Comment résoudre le message "édition locale, suppression entrante après 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 doivent 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û plutôt faire svn update .).

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

J'ai trouvé le doc ici mais je ne sais pas comment le "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 montre. 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 quand même ce message quand je fais svn status ..

283
Xah Lee

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 modifiez un fichier alors que quelqu'un d'autre l'a supprimé et validé en premier. En tant que bon citoyen, vous effectuez une mise à jour avant un commit. Maintenant vous avez un conflit. En réalisant que la suppression du fichier est la bonne chose à faire, supprimez-le de votre copie de travail. Au lieu d'être content, svn se plaint maintenant que les fichiers locaux sont manquants et qu'il existe une mise à jour conflictuelle 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 des répertoires, remplacez touch par mkdir.

Nouvelle situation: les fichiers locaux à ajouter au référentiel (oui, svn, quoi que vous disiez), mise à jour toujours en conflit.

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

Remettre les fichiers à l'état svn les aime (cela signifie qu'ils sont supprimés):

$ svn revert foo bar

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

$ svn st
?       foo
?       bar

Maintenant nous pouvons supprimer les fichiers:

$ rm foo bar

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

svn ne se plaint plus:

$ svn st

Terminé.

405
lesmana

Essayez de résoudre le conflit en utilisant

svn resolve --accept=working PATH
157
zellus

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

$ svn revert foo bar

résolu le problème.

svn resolution 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
sligocki

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

2
Udo

Vous pouvez forcer à retourner votre répertoire local à svn.

 svn revert -R your_local_path
0
Gordon Ma

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

0
CWineland

Ce problème se produit souvent lorsque nous essayons de fusionner une autre branche change d’un répertoire incorrect.

Ex:

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

Un conflit qui se produit 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 suivant:

 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, aucun répertoire ne peut être à l'intérieur de celui-ci).

Comment éviter ce problème en premier lieu:

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

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

svn revert -R .
0
Saurav Sahu