web-dev-qa-db-fra.com

SVN Synchroniser vs mise à jour à la tête (sous-ligne)

Je suis assez nouveau à la sous-version et à la sous-classe et je vois des problèmes qui me conduisent à croire qu'il existe une différence entre la mise à jour de la tête et la synchronisation. Spécifiquement, je trouve que lorsque j'essaie de revenir (à l'aide de l'historique des sous-clavips), j'ai souvent un message indiquant "Impossible d'inverser de fusionner une gamme d'une future histoire d'un chemin, essayez de mettre à jour en premier". Ma synchronisation devrait s'assurer que j'ai la version "Head" de tous les fichiers de ma succursale sur le Repo, mais effectuez une "mise à jour de la tête" résolue le problème ... alors qu'est-ce qui donne? J'ai essayé de vérifier la console SVN pour voir ce qui change, mais ce n'est pas très verbeux.

Idées?

J'ai une deuxième question, mais je suppose que la réponse à la première allume-t-elle. Si vous êtes curieux et que vous avez le temps de lire, je vais aussi le taper aussi. Voici le scénario ... J'ai ramifié tous mes fichiers d'une balise "production" et ont commencé à travailler sur mon projet. Après quelques commits, je vérifie l'historique du fichier modifié et remarquez que la version "en gras" (selon la documentation, cela devrait être la tête) est inférieure à tous mes engagements. C'est comme si ce que je n'ai pas de tête. Mais la tête est juste la dernière version du projet non? Alors qu'est-ce que je manque?.

Merci pour votre réponse et prenez le temps de lire ceci!

22
gergesi

Il y a une différence. Lorsque vous utilisez la vue Synchroniser, seuls les éléments de la vue sont mis à jour. Avec Subversion, les dossiers ont également une révision qui est heurtée à chaque fois qu'un enfant est modifié. Cependant, étant donné que ceux-ci n'apparaissent pas dans la vue, ils ne sont jamais mis à jour. Lorsque vous faites équipe> Mise à jour sur le projet, tous les dossiers et fichiers sont mis à jour à une seule révision uniforme. J'ai quelques poteaux de blog qui expliquent ceci:

Celui-ci explique le concept Core SVN d'une copie de travail à révision mixte et est essentielle pour comprendre ceci:

http://markphip.blogspot.com/2006/12/Mixed-Revision-working-Copies.html

La seconde montre une caractéristique de la sous-classe pour faire face à ceci:

http://markphip.blogspot.com/2006/12/subclipse-synchronize-synchronize-feature-show-out.html

Étant donné que le deuxième blog a été écrit, la plupart des utilisateurs de sous-clipse ont trouvé qu'ils n'aiment pas cette fonctionnalité, même si cela aide à ce problème. Il est donc maintenant désactivé par défaut dans les versions actuelles. Je ne pense pas que quelqu'un l'utilise plus.

L'essentiel est juste d'utiliser occasionnellement une équipe> Mise à jour sur votre projet pour que tout soit une révision uniforme unique.

Marque

28
Mark Phippard

Je pense que votre hypothèse que la synchronisation est la même que la mise à jour de HEAD est false. Si, dans le langage de sous-classe, "Synchroniser" signifie "COMMIS", il est certainement faux parce que l'engagement ne met pas à jour votre Copie de travail. Vous devez mettre à jour explicitement après que vous vous engagiez à être à la tête.

Ce qui m'amène à votre deuxième question: je pense que la raison de la ligne en gras est inférieure à d'autres engagements est à cause de la raison ci-dessus - commettant ne pas mettre à jour. Cela signifie que vous pouvez commettre une modification à un fichier, puis consultez un autre fichier et le voir comme étant plus ancien que la tête, car ces autres fichiers n'ont pas également été amenés à la tête.

Cet article peut aider à préciser ce concept de révisions mixtes: http://markphip.blogspot.com/2006/12/mixed-revision-working-copies.html

Je vous encourage également à vous familiariser avec la Documentation SVN , car le fonctionnement avec les plugins et les extensions de Subversion devient toujours plus facile lorsque vous comprenez comment fonctionne le système SVN sous-jacent.

2
Michael Hackner