La résolution d'un conflit de fusion lorsque je fais un svn update
Je suis en train d'apprendre les notions de base du contrôle de version par Eric Évier - http://ericsink.com/vcbe/vcbe_usletter_lo.pdf
Je suis à la page 22. Je vais décrire le scénario pour vous. Deux utilisateurs sur le même ordinateur, harry et sally sont de travailler sur un fichier appelé loterie.c est stockée dans un repo appelé loterie.
1 - Harry s'engage le premier/initial code.
2 - Sally changements et s'engage.
3 - Alors que les 2 se passe, harry a fait des modifications, mais pas commis.
4 - Harry s'engage et obtient une erreur.
Transmitting file data .svn: Commit failed (details follow):
svn: File '/lottery.c' is out of date
5 - pour remédier À cela, harry va mettre à jour sa copie locale à l'aide de svn update
.
C'est là que j'ai un problème ! L'auteur dit que la sortie est:
lottery harry$ svn update
G lottery.c
Updated to revision 2.
Mais, mon résultat est :
lottery harry$ svn update
Updating '.':
C lottery.c
Updated to revision 2.
Conflict discovered in file 'lottery.c'.
Select: (p) postpone, (df) show diff, (e) edit file, (m) merge,
(mc) my side of conflict, (tc) their side of conflict,
(s) show all options:
Je suis nouveau et je ne sais pas comment répondre à ce message. Est mon livre de mal ? S'il vous plaît aider moi. Merci.
- Je suis à l'aide de tc pour l'instant. Je suppose que c'est ce que l'auteur peut avoir voulu dire.
Vous devez vous connecter pour publier un commentaire.
Lorsque vous avez plusieurs personnes qui changent le même fichier à la fois, il est très possible à la fois pour changer de la même manière. C'est ce qui s'est passé pour vous. Sally changements les mêmes lignes que Harry était en train de changer. Quand Harry n'a
svn update
, Subversion détecté cela, et c'est vous demandant quoi faire.Un mot d'avertissement: Parfois, la Subversion est seulement à la recherche de différences dans une ligne entre votre version et leur version, et pas de différences significatives. Par exemple, si l'indentation de la ligne a été modifié, ou l'espacement était différent, ou si vous avez changé de fins de ligne, Subversion peut déclarer cela comme un conflit, même s'il n'est probablement pas. Ce peut-être pourquoi le livre n'a pas trouver ce problème, mais vous l'avez fait. Ne signifie pas que vous n'avez rien fait de mal.
Quoi faire? Subversion est de vous donner un peu de choix.
C'est en vous montrant les variations de la révision rxxx (ce que Sally n') ressemblent contre les modifications (changements d'Harry). Habituellement, les changements sont assez mineurs et il est assez facile de savoir quoi faire.
increment
et Sally appelécounter
.Comme je l'ai dit, j'ai l'habitude de faire un reporter, que ma mise à jour de fin, puis de gérer les problèmes.
Une fois que vous résoudre le problème, vous faites un
svn resolved
sur ce fichier pour laisser la Subversion sais que vous l'avez résolu le conflit.Il y a d'autres choix, par exemple, vous pouvez lancer un tiers diff/merge outil pour gérer le conflit.
Pour plus d'informations, jetez un oeil à la Subversion manuel en ligne sur résoudre les conflits de fusion.
Si vous sélectionnez le
s
option, il va vous montrer:Utilisation
dc
pour afficher l'confilicts ensuite, vous pouvez décider sur la meilleure option pour utiliserLe "G" indique que le fichier a été modifié par quelqu'un d'autre, mais les modifications que personne n'a été dans une autre partie du fichier, de sorte SVN pourrait fusionner pour vous, sans avoir à demander de l'aide.
Le "C" indique que non seulement le fichier modifié par quelqu'un d'autre, mais leurs modifications ont été à la même ligne, vous avez également modifié, de sorte SVN ne sais pas quoi faire. Maintenant c'est VOTRE travail pour effectuer la fusion.
Vous n'avez probablement pas faire quelque chose de mal, et le livre n'est pas faux, ils ont juste laissé de côté le détail sur ce que les changements spécifiques ont été, apparemment.