Subversion: comment comparer les différences entre les changements entrants?

19

J'aimerais voir les changements que mes collègues ont apportés avant d'accepter les changements entrants.

Je commence donc par obtenir le statut

svn st -u

... ce qui me dit que j'ai un changement entrant

    *     9803   incomingChanges.html
M         9803   localChanges.html
M   *     9803   localAndIncoming.html

Je peux voir ce que j'ai changé

svn diff localChanges.html

... mais comment puis-je faire la différence localAndIncoming.htmlpour montrer ce qui a été changé et en quoi il diffère de ma copie de travail?

Andrew
la source
Pas une réponse à votre question de ligne de commande, mais: à la fin, une fois que vous savez ce qui est différent de votre copie de travail, vous voudrez probablement fusionner les modifications du référentiel avec vos propres modifications. Lorsque vous utilisez une interface graphique pour ce faire, pourquoi ne pas utiliser une interface graphique pour vous aider à faire la différence initiale également? Des outils comme TortoiseSVN offrent une telle comparaison. De plus, les IDE comme Eclipse peuvent rendre l'examen des modifications entrantes (même lorsqu'il n'y a rien à fusionner - agréable d'avoir une idée de ce que vos collègues ont fait) très facilement , en évitant les fusions automatiques.
Arjan
1
Existe-t-il un moyen graphique de voir les changements entrants en utilisant TortoiseSVN?
Christian
Vous voudriez également différencier entrantChanges.html, non?
Raffi Khatchadourian du

Réponses:

21

Je crois que vous avez besoin de:

svn diff -rBASE:HEAD
joelittlejohn
la source
2

FYI svn diffdonne un diff basé sur le fichier non modifié stocké dans le .svnrépertoire, et non sur la version live repo.

Vous pouvez exécuter svn updatepour obtenir subversion pour tenter une mise à jour (et éventuellement fusionner) puis faire une svn diff, mais ce n'est pas aussi propre que je suppose que vous le souhaitez.

Enfin, la svn diffprise en charge diffère uniquement sur le repo. Exemple:

svn diff svn://svnserver/repo/localChanges.html -r REV_NO

Ce qui revient par défaut à comparer HEAD avec la révision passée.

Andy
la source
2

Avec tortoisesvn (si vous utilisez Windows)

  • Appeler l'écran du journal

  • Sélectionnez la révision de la tête

  • Faites un clic droit sur localAndIncoming.html

  • Choisissez Comparer avec la copie de travail

Ghislain Hivon
la source
0

Vous ne pouvez vraiment pas le faire tant que vous n'avez pas réellement téléchargé la nouvelle version. De telles limitations ont été l'une des principales raisons pour lesquelles un nouveau type de contrôle de source est devenu populaire ces derniers temps. C'est ce qu'on appelle le contrôle de source décentralisé.
Avec ce nouveau formulaire, vous avez votre propre référentiel local, et vous pouvez ensuite prendre les modifications du référentiel principal et exécuter un diff sur celui-ci, si vous n'aimez pas les modifications apportées, vous pouvez rétablir votre propre référentiel et partir de là.

http://mercurial.selenic.com/

Et oui, je sais que suggérer que vous changez de produit n'est pas une solution optimale, mais c'est quand même une solution.

Daisetsu
la source
0

Effectuez une autre extraction dans un nouveau dossier.

cd ..
svn checkout  /path/to/repo clean_working_copy

Si vous réutilisez clean_working_copy, n'oubliez pas de mettre à jour avant

svn update clean_working_copy

Comparez ensuite votre fichier avec celui de clean_working_copy

diff your_working_copy/localAndIncoming.html clean_working_copy/localAndIncoming.html

Ou avec votre diff 3 voies préféré (le mien est kdiff3)

kdiff3 --L1 Base --L2 theirs --L3 mine your_working_copy/.svn/text-base/localAndIncoming.html clean_working_copy/localAndIncoming.html your_working_copy/localAndIncoming.html
Ghislain Hivon
la source
Ce travail, mais une scm devrait fournir un moyen plus intégré.
2011 à 9h34
0

je pense

svn diff -r HEAD

donne presque ce que vous voulez. La seule chose est que le + et le - sont inversés par rapport à ce que vous attendez.

Confusion
la source