78 votes

Tortoise SVN : Résoudre les conflits en utilisant 'theirs'. Qu'est-ce que cela signifie ?

Quelqu'un peut-il expliquer la différence entre les deux options suivantes de Tortoise SVN sur les fichiers en conflit :

  • Résoudre les conflits en utilisant le "leur".
  • Résolvez les conflits en utilisant le mot "mien".

En passant. Pourquoi diable personne n'a jamais signalé cette utilisation confuse de la terminologie comme un bogue ?

4 votes

La confusion vient probablement du fait que l'on ne comprend pas le contexte de "leurs" et "mes".

18 votes

Je suis arrivé ici à cause de cette confusion, bien que ce ne soit pas dans Tortise SVN mais en ligne de commande. Lors de la mise à jour en ligne de commande, l'option est donnée comme "theirs-conflict", ce qui est ambigu quant à savoir si le fait de la sélectionner la maintiendra dans un état de conflit, ou la résoudra.

0 votes

@pohl oui j'ai récemment découvert que l'option en ligne de commande est pire.

57voto

Brandon Points 35624

Résoudre les conflits en utilisant 'leurs' signifie que lorsque vous essayez d'archiver deux fichiers qui ont des modifications conflictuelles, SVN va ignorer vos modifications et utiliser celles de l'autre personne à la place.

Résoudre un conflit en utilisant "le mien" signifie que vous allez ignorer leurs modifications et utiliser votre version du fichier à la place.

4 votes

Consultez l'image qui explique beaucoup de choses à ce sujet : tortoisesvn.net/docs/release/TortoiseMerge_fr/

3 votes

Cette réponse n'aborde pas du tout l'ambiguïté entre la leur et la mienne. On vient de me demander de fusionner les changements d'une branche sur laquelle j'ai travaillé avec une branche sur laquelle quelqu'un d'autre a travaillé. Dans ce cas, les changements que je considère comme "les miens" sont ceux de ma branche. Cependant, si j'accepte "mes" modifications, je vais en fait supprimer des modifications de ma branche.

0 votes

Je ne vois pas "Résoudre le conflit en utilisant". mine " n'importe où dans le menu. N'y a-t-il aucun moyen de s'assurer que mes modifications sont fusionnées avec les leurs ?

42voto

nerkn Points 1052

Je voulais ajouter la liste complète pour référence ultérieure :

(e)  edit             - change merged file in an editor
(df) diff-full        - show all changes made to merged file
(r)  resolved         - accept merged version of file

(dc) display-conflict - show all conflicts (ignoring merged version)
(mc) mine-conflict    - accept my version for all conflicts (same)
(tc) theirs-conflict  - accept their version for all conflicts (same)

(mf) mine-full        - accept my version of entire file (even non-conflicts)
(tf) theirs-full      - accept their version of entire file (same)

(p)  postpone         - mark the conflict to be resolved later
(l)  launch           - launch external tool to resolve conflict
(s)  show all         - show this list

34voto

james2code Points 378

Je suis d'accord.

Il me semble que ce serait plus clair si ça disait :

  • Résoudre en utilisant le référentiel (le leur)
  • Résoudre en utilisant la copie de travail (la mienne)

3 votes

À mon avis, ce sont les meilleures réponses car des conflits peuvent survenir sans qu'une deuxième personne soit impliquée (par exemple, lors de l'utilisation du flux git avec des branches multiples).

0 votes

Maintenant, que fait "marquer comme résolu" ? est-ce qu'il utilise le mien ou le leur ?!

2 votes

Il supprime simplement l'indicateur de conflit et utilise l'état actuel du fichier fusionné. Normalement, vous devriez afficher les conflits et corriger les problèmes, puis marquer le fichier comme résolu. Les deux options discutées dans cette question sont des options de raccourci pour résoudre les conflits en utilisant uniquement votre version ou la version du dépôt. En procédant ainsi, le conflit est automatiquement considéré comme résolu, alors que lorsque vous corrigez manuellement un conflit, vous devez le "marquer comme résolu".

7voto

K Kimble Points 128

La ligne de commande de fusion SVN est déroutante, surtout lorsqu'il s'agit de fusionner une branche avec le tronc. "Mes modifications" sont celles que j'ai faites dans la branche, mais ce serait une erreur selon le SVN . Pour compliquer les choses, SVN fait référence aux chemins SOURCE, TARGET et HEAD dans l'aide de la ligne de commande.

Voici le réponse simple si vous exécutez cette instruction de fusion à partir du répertoire C:\Project1\Trunk

svn merge -r 60:68 C:\Project1\branches\UpdatesToProject1

"Mine" est le répertoire à partir duquel le SVN est exécuté ( C:\Project1\Trunk ).

"Theirs" est le répertoire dans lequel vous fusionnez et que vous avez spécifié sur la ligne de commande ( C:\Project1\branches\UpdatesToProject1 )

Ce serait vraiment très bien si SVN donnait les chemins auxquels MINE et THEIRS font référence.

2 votes

Cette réponse devrait être plus élevée. Nous utilisons les termes branche et tronc et cela devient très confus.

6voto

Dave Sieving Points 42

BuzzAnn a raison. le mien et le leur est ambiguë, puisque ce qui est dans le référentiel peut aussi être à moi. La distinction sans ambiguïté est Dépôt ou copie locale .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X