TFS2010 объединяет ветку и ствол никогда не сходится - PullRequest
1 голос
/ 30 июня 2011

У нас есть основной ствол TFS2010 и несколько ответвлений.

Я пытаюсь привести транк и ветвь1 в состояние, когда больше нет изменений, путем объединения из транка в ветвь1, регистрации, а затем слияния с ветки1 в транк и регистрации.

Однако после этого, если я попытаюсь увидеть, есть ли еще что-то, что можно объединить, так или иначе, TFS продолжает показывать мне тот же самый набор приблизительно из 15 файлов, которые требуют объединения. После выполнения слияния в файловой системе файлов не будет, но TFS по-прежнему уверен, что эти 15 файлов должны быть объединены.

Я много раз зацикливался на слиянии одного с другим, и наоборот, но, кажется, ничто не могло это исправить. И я не первый в нашей команде, кто испытал эту ошибку / функцию.

Может быть, я упускаю что-то очевидное? У кого-нибудь есть идеи, почему TFS ведет себя так странно? Есть ли способ положить конец этой анархии бесконечных бессмысленных слияний?

Ответы [ 3 ]

1 голос
/ 30 июня 2011

Я могу придумать несколько вариантов:

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

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

Если вы объединяетесь в одно рабочее пространство, объединенные файлы появятся только в ожидающих изменениях для этого рабочего пространства. Обратите внимание, что в окне «Обозреватель исходного кода» и в окнах «Ожидающие изменения» имеется собственное раскрывающееся меню «Рабочая область», и если вы переключите рабочие области в своем обозревателе SC (чтобы выполнить слияние), ожидающие изменения не будут переключаться, и поэтому будут выглядеть в другом рабочем пространстве. Это несколько раз поймало меня («Я сделал слияние, но TFS не изменила ни один из файлов. Что происходит?!»)

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

0 голосов
/ 06 августа 2012

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

Чтобы исправить эту проблему, я всегда просто выполняю слияние и выбираю «Взять исходную ветвь» для конфликтов, как только я узнаю, что исходная и целевая ветви уже совпадают.хорошее объяснение, почему это происходит, я был бы рад это услышать ...

0 голосов
/ 01 июля 2011

Единственный случай, который возможен за пределами замечательной записки, которую выделил Джейсон.

Использовали ли вы ранее команду отката tf.exe / keepmergehistory [1] на наборах изменений в основной или ветви1? Подробнее о команде отката tf.exe можно прочитать здесь http://geekswithblogs.net/TarunArora/archive/2011/06/27/how-to-undo-a-changeset-using-tf.exe-rollback.aspx

[1] - укажите эту опцию, если хотите, чтобы будущие объединения между одним и тем же источником и одной и той же целью исключали изменения, которые вы откатываете.

Если это так, вы можете использовать команду tf.exe merge / force http://msdn.microsoft.com/en-us/library/bd6dxhfy(v=VS.100).aspx, которая вызывает объединение двух ветвей. Но убедитесь, что вы регистрируетесь после слияния (когда после слияния возникает конфликт, если вы не разрешите конфликт и не вернетесь, изменения останутся извлеченными), и если вы делаете историю просмотров после слияния с веткой, вы можете см. новый набор изменений, проверьте детали набора изменений, чтобы убедиться, что слияние прошло правильно.

...