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


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

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

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

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

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

Спасибо.

4 2

4 ответа:

Вы, конечно, можете вычислить "общее различие" самостоятельно - сделайте ветвь проекта из ревизии непосредственно перед вашим первым коммитом, а затем объедините в нее все ваши наборы изменений.

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

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


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

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

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

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

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

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