Может ли Visual Studio (должна ли она) вычислять разницу между любыми двумя наборами изменений, связанными с рабочим элементом? - PullRequest
2 голосов
/ 17 апреля 2010

Вот мой пример использования:

Я запускаю проект XYZ, для которого я создаю рабочий элемент, и делаю частые проверки, всего 10-20. ВСЕ изменения кода будут считаны и проверены.

Наборы изменений не последовательны - другие люди регистрируются между моими изменениями, хотя они вряд ли коснутся тех же файлов.

Итак ... в конце проекта меня интересует "общая разница" - как будто я прошел единственную регистрацию для завершения всего проекта. Теоретически это вычислимо. Из списка наборов изменений, связанных с рабочим элементом, вы получите список всех файлов, которые были затронуты. Затем алгоритм может объединять отдельные различия по каждому файлу и объединять их в один. Вполне возможно, что чистый общий diff не вычисляется из-за того, что кто-то еще переименовал файлы, или изменил материал очень близко, или в тех же функциях, что и я. В этом случае ... Полагаю, что полный diff может включать эти изменения не от меня, и предупредить меня об этом.

Я бы нашел это очень полезным, но я не знаю, как это сделать на практике. Может ли Visual Studio 2008/2010 (и / или TFS-сервер) это сделать? Есть ли другие системы контроля версий, способные сделать это?

Спасибо.

Ответы [ 4 ]

3 голосов
/ 25 апреля 2010

Вы должны работать над собственной веткой, если хотите легко это делать.


Возможность генерировать разностную информацию для отображения или для целей слияния - это функциональность, предоставляемая вашей системой контроля версий, как Махеш Велага прокомментировал в другом ответе. Если бы вы смогли вычислить разницу, выбрав несмежные наборы изменений, то логически вы также сможете объединить эти изменения в одну операцию. Но это не поддерживается TFS. Так что я сильно подозреваю, что построение выбранной информации о вишне также не поддерживается TFS. Другие системы контроля версий (git, mercurial, darcs приходят на ум) могут иметь больше поддержки для чего-то подобного; Я не знаю точно.

Из моего прочтения их ответов на форумах по управлению версиями TFS я думаю, что их рекомендация для этого будет заключаться в том, чтобы создать собственную ветку для выполнения этой работы, во-первых: тогда наборы изменений будут смежными в этой ветке и создание «тотальной разницы» было бы тривиально. Поскольку все равно кажется, что вы работаете с независимой функцией (в противном случае разница только с вашими изменениями будет бессмысленной), вам следует подумать о том, чтобы иметь независимую ветку для нее независимо от того, является ли ваша система контроля версий TFS или чем-то еще.

Альтернатива состоит в том, чтобы построить, как такая ветвь выглядела бы после факта, что, по сути, и предлагает ответ Джима Т. Вы можете предпочесть такой подход, если ваша команда очень заинтересована в том, чтобы все работали на одной кухне. Но, как вы уже знаете, все может стать таким грязным.

3 голосов
/ 21 апреля 2010

Вы, безусловно, можете самостоятельно вычислить 'total diff' - сделайте ветку проекта из ревизии непосредственно перед вашей первой фиксацией, а затем объедините в нее все ваши наборы изменений.

Я не думаю, что это действительно вычислимая вещь в общем случае - только смежные наборы изменений могут быть объединены автоматически, как это. Сказать, что «маловероятно», что другие дотронутся до файлов, над которыми вы работаете в чередующихся коммитах, не обрезает, вам нужны гарантии, чтобы иметь возможность автоматизировать подобные вещи.

0 голосов
/ 28 апреля 2010

звучит так, как будто вам нужен инструмент, который поддерживает наборы изменений (изменения для нескольких файлов и их фиксацию за один раз) вместо фиксации каждого файла отдельно

посмотрите на это сравнение между sourcesafe и mercurial (бесплатно, и вы можете найти инструменты для его интеграции с visual studio)

0 голосов
/ 28 апреля 2010

Создайте два рабочих пространства. Получить конкретную версию для файлов, указывающих дату или до этих двух наборов изменений в этих двух рабочих пространствах. Теперь сравните папки, используя Сравнить инструмент. Араксис слияния является лучшим.

...