2010-04-17 4 views
2

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

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

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

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

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

Спасибо.

ответ

3

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

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

+0

Ну ... но проверка того, что может быть автоматизирована, не так ли? –

3

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


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

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

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

0

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

0

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

взглянуть на этой comparison между SourceSafe и ртутной (бесплатно и вы можете найти инструменты для его интеграции с визуальной студией)

+0

Visual Source Safe явно бесполезен. Как сравнить Mercurial с сервером TFS 2010? –