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?
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"
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.