Как объединить выбранные наборы изменений TFS с моей рабочей областью без включения всех предыдущих наборов изменений

Я работаю над проектом с другим разработчиком. Мы находимся в процессе крупного обновления с большим количеством критических изменений. Программное обеспечение, над которым мы работаем, является дополнением к продукту, и мы обновляем его для работы с новой версией продукта. Он проверил некоторые критические изменения, которые еще не будут работать в моей среде, потому что я все еще использую старую версию продукта. Я проверил некоторые изменения поверх них. Есть ли способ получить код таким образом, чтобы он включал только изменения до момента, предшествующего критическим изменениям, а также включал только мои изменения после этого в моей рабочей области?

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

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


person BlueMonkMN    schedule 22.12.2010    source источник


Ответы (2)


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

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

person BlueMonkMN    schedule 22.12.2010
comment
Я бы выбрал этот вариант, создал ветку на основе заведомо исправного состояния, а затем выбрал изменения, которые вы хотите сохранить, но убедитесь, что вы не выбрали «Все наборы изменений до», просто перейдите к «Объединить» и выберите «Выбранные наборы изменений». , введите идентификатор набора изменений, который вы хотите, и вуаля (пока ни один из ваших наборов изменений не зависит от его изменений, все должно быть в порядке!). - person Daniel Morritt; 22.12.2010
comment
Кажется, что много накладных расходов просто для того, чтобы привести рабочее пространство в определенное состояние. Есть ли хороший способ очистки после этого - полностью удалить ненужную ветку? В моем случае ветка нужна, но я предполагаю, что есть шанс, что кто-то (может быть, даже я сам в будущем) может оказаться в подобной ситуации без существующей ветки на нужном уровне, и я подозреваю, что целая дополнительная ветка оставит некоторые постоянные накладные расходы в базе данных системы управления версиями. Это правда? - person BlueMonkMN; 22.12.2010
comment
Хм, мне приходит в голову, что если у вас есть любая ветка, которую можно привести в заведомо хорошее состояние, то вы можете слиться с ней без фиксации изменений, да? Так что, возможно, можно было бы объединить все до заведомо хорошего состояния в Main, выбрать вишневое слияние в Main, скопировать результаты в рабочее дерево, а затем отменить все ожидающие изменения. - person BlueMonkMN; 22.12.2010
comment
Да, если у вас есть запасная ветка, которую вы можете обновить, вы можете сделать это, обновить ее до последнего рабочего набора изменений, применить все необходимые наборы изменений. Хотя я был бы счастливее работать в ветке обслуживания или что-то в этом роде, поскольку это позволило бы вам продолжать работу, проверять и удалять вещи, и вы могли бы вернуться к родительской ветке и правильно отсортировать все критические изменения. - person Daniel Morritt; 23.12.2010

Я не совсем уверен, отвечает ли это на ваш вопрос, но если вы выберете «Получить конкретную версию ...», вы можете выбрать конкретный набор изменений.

person Paul Michaels    schedule 22.12.2010
comment
Проблема в том, что он также получает все наборы изменений до указанного набора изменений. - person BlueMonkMN; 22.12.2010
comment
Единственный способ, который я вижу, это взять копию для каждого из трех этапов (т.е. одну до того, как были сделаны какие-либо изменения, одну после первого набора и один после второго набора) и использовать такой инструмент, как вне всякого сравнения, вручную. отсейте изменения, которые вы хотите. - person Paul Michaels; 22.12.2010