web-dev-qa-db-fra.com

Comment accepter «leur-conflit» pour résoudre le conflit d'arborescence: ajout local, ajout entrant lors de la fusion

J'ai rencontré le conflit d'arbre de base suivant: ajout local, ajout entrant lors de la fusion.

Je sais que nous pouvons utiliser svn resolve --accept working file pour le résoudre, mais SVN m'empêche d'utiliser accept their-conflict pour accepter la version entrante.

Quelqu'un peut-il me dire comment remplacer mon fichier local par le fichier entrant? Est-il possible d'utiliser svn resolved file de quelque manière que?

24
Elie Xu

La bonne chose à faire est de détecter ce problème dans un précédent --dry-run et de supprimer le répertoire local en conflit avec svn delete avant d'effectuer la fusion.

Premier scénario: copie de travail avec la fusion déjà effectuée. Solution: supprimez la copie de travail, extrayez une copie propre et faites ce qu'il faut.

Deuxième scénario: déjà commis un mauvais répertoire, après svn resolve --accept=working.

Vous devez svn delete le répertoire en conflit et réexécutez la fusion à partir du répertoire parent du répertoire en conflit en ignorant mergeinfo. Rétablir tous les objets sauf le répertoire en conflit précédent (maintenant il n'y a plus de conflit). Vérifiez et validez les modifications.

Ex. Copie de travail dans un dossier WC. Votre conflit dans le répertoire A/conflictDir:

cd A
svn delete conflictDir
svn merge --ignore-ancestry -rbeginRev:endRev <URLrepo/A>
svn -R revert `ls | grep -v conflictDir`
<... check ...>
svn ci -m "conflictDir fixed"
14
Diego F. Durán

J'ai eu un problème similaire, où j'ai mis à jour un fichier qui est en conflit avec mon fichier local. Je souhaite que la copie distante remplace ma copie locale. Ce que j'ai fait c'est svn delete file_name, puis svn revert file_name. Il récupère sur la copie distante. Je ne sais pas si la première suppression svn est nécessaire ou non.

8
Pengyao