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 .
.
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é.
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 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
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.
Vous pouvez forcer à retourner votre répertoire local à svn.
svn revert -R your_local_path
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
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 .