Почему все файлы отмечены "слиянием" в TFS?

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

Но когда я выполняю операцию слияния в TFS, он отмечает каждый отдельный файл в дереве с типом слияния 'merge'. Похоже, я должен проверять каждый файл во всем дереве исходного кода! Я действительно не хочу этого делать, потому что становится невозможно взглянуть на набор изменений и посмотреть, какие файлы я фактически изменил как часть моего проекта.

Сначала я подумал, что могу использовать команду tfpt.exe Undo Unchanged для отмены всех изменений "слияния", но это не отменяет эти изменения.

У кого-нибудь есть идеи по этому поводу? спасибо.

Ответы

Ответ 1

Существует несколько возможных причин. Это не полный список:

  • Вы выполнили операцию пространства имен (удалить, восстановить, переименовать) в родительской папке файлы с надписью "merge"
  • Вы выполнили операцию пространства имен (удалить, восстановить, переименовать), которая уже была выполнена в целевой ветке
  • Вы выполнили последовательность операций с пространством имен, которые рухнули в no-op (например, delete + undelete или переименовать a → b → a)
  • Существуют неразрешенные конфликты.
  • Вы выполняете сброс

Примечание: все они применяются в равной степени к 2005 и 2008 годам.

Ответ 2

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

Чтобы создать взаимосвязь слияния, чтобы в будущем сливалось только список файлов, которые вы фактически изменили, вам нужно сделать необоснованное слияние всех изменений вплоть до указанной версии, чтобы TFS знал, что такое общая базовая линия. Вы должны сделать это после слияния этих изменений - слишком поздно, чтобы исправить базовую линию для этой ветки.

Если вы действительно не хотите вносить какие-либо изменения из другой ветки, но просто сообщите TFS, что они логически в той же версии, вы можете выполнить слияние "предоставление кредита" для наборов изменений: tf merge /discard.

Ответ 3

В Visual Studio 2008 и TFS 2008 этого не происходит. Только файлы, которые были изменены, будут отмечены как слияние. Если вы сравниваете файл между веткой и стволом, есть ли какие-либо изменения? Такие изменения, как кодирование, все равно заставят TFS слить этот файл обратно.