2010-04-17 4 views
2

Voici mon cas d'utilisation:Can Visual Studio (devrait-il être capable de) calculer un diff entre deux changesets associés à un élément de travail?

Je commence un projet XYZ, pour lequel je crée un travail, et je fais des check-ins fréquents, facilement 10-20 au total. TOUTES les modifications de code seront lues en code et révisées par code.

Les ensembles de modifications ne sont pas consécutifs - d'autres personnes enregistrent entre mes modifications, bien qu'il soit très improbable qu'elles touchent exactement les mêmes fichiers. Donc, à la fin du projet, je suis intéressé par un "total diff" - comme s'il y avait un seul enregistrement par moi pour terminer le projet entier. En théorie, c'est calculable. Dans la liste des ensembles de modifications associés à l'élément de travail, vous obtenez la liste de tous les fichiers affectés. Ensuite, l'algorithme peut agréger les diffs individuels sur chaque fichier et les combiner en un seul. Il est possible qu'un diff total pur ne soit pas calculable en raison du fait que quelqu'un d'autre a renommé des fichiers, ou a changé des choses de très près, ou dans les mêmes fonctions que moi. Dans ce cas ... je suppose qu'un différentiel total peut inclure ces changements non-moi aussi, et m'avertir du fait.

Je trouverais cela très utile, mais je ne sais pas comment le faire en pratique. Est-ce que Visual Studio 2008/2010 (et/ou le serveur TFS) peut le faire? Existe-t-il d'autres systèmes de contrôle de source capables de faire cela?

Merci.

Répondre

3

Vous pouvez certainement calculer vous-même le 'total diff' - faites une branche du projet à partir de la révision juste avant votre première validation, puis fusionnez tous vos changesets dans celui-ci.

Je ne pense pas que ce soit vraiment une chose calculable dans le cas général - seuls les changesets contigus peuvent être fusionnés automatiquement comme ceci. Dire qu'il est «improbable» que d'autres personnes aient touché les fichiers sur lesquels vous travaillez dans les commits intercalaires ne le coupe pas, vous avez besoin de garanties pour pouvoir automatiser ce genre de chose.

+0

Eh bien ... mais vérifier cela pourrait être automatisé, non? –

3

Vous devriez travailler sur une branche de votre choix si vous voulez être capable de le faire facilement.


La capacité de générer des informations diff pour l'affichage ou à des fins de fusion est une fonctionnalité fournie par votre système de contrôle de version, comme Mahesh Velaga a commenté une autre réponse. Si vous étiez en mesure de calculer le diff par cer- taine sélection de changesets non contigus, alors vous seriez logiquement capable de fusionner ces changements en une seule opération. But this is not supported by TFS. Donc, je soupçonne fortement que la construction de l'information diff cherry-cueillie n'est pas non plus supportée par TFS. D'autres systèmes de contrôle de version (git, mercurial, darcs viennent à l'esprit) pourraient avoir plus de support pour quelque chose comme ça; Je ne sais pas avec certitude. De la lecture de leurs réponses sur les forums de contrôle de version de TFS, je pense que leur recommandation serait de créer votre propre branche pour faire ce travail en premier lieu: alors les changesets seraient contigus sur ce forum. branche et créer le "total diff" serait trivial. Comme il semblerait que vous travailliez sur une fonctionnalité indépendante de toute façon (sinon un diff de vos changements n'aurait aucun sens), vous devriez envisager d'avoir une branche indépendante indépendamment du fait que votre système de contrôle de version soit TFS ou autre.

L'alternative est de construire à quoi ressemblerait une telle branche après le fait, ce qui est essentiellement ce que la réponse de Jim T propose. Vous pourriez préférer cette approche si votre équipe est très intéressée par tous ceux qui travaillent dans la même cuisine, pour ainsi dire. Mais comme vous le savez déjà, les choses peuvent devenir désordonnées de cette façon.

0

Créez deux espaces de travail. Obtenir une version spécifique pour les fichiers spécifiant la date ou jusqu'à ces deux changeset sur ces deux espaces de travail. Maintenant, comparez les dossiers en utilisant un outil compare. La fusion d'Araxis est la meilleure.

0

sonne comme vous avez besoin d'un outil qui prend en charge changesets (modifications sur plusieurs fichiers et les engageant à la fois) au lieu de commettre chaque fichier seul

un coup d'oeil à ce comparison entre sourcesafe et Mercurial (gratuit et vous pouvez trouver des outils pour l'intégrer avec Visual Studio)

+0

Visual Source Safe est évidemment inutile. Comment se compare mercurial avec le serveur TFS 2010? –

Questions connexes