2008-09-22 2 views
103

Предположим, что какой-то разработчик в моей команде отложил свои изменения, которые он сделал в филиале A. И я работаю над ветвью B. Могу ли я перенести его изменения в ветвь B? (По графическому интерфейсу или командной строке)Могу ли я отказаться от другого филиала в tfs 2008?

ответ

127

Visual Studio Power Tools должно позволить вам сделать это.

C:\src\2\Merlin\Main>tfpt unshelve /? 
tfpt unshelve - Unshelve into workspace with pending changes 

Allows a shelveset to be unshelved into a workspace with pending changes. 
Merges content between local and shelved changes. Allows migration of shelved 
changes from one branch into another by rewriting server paths. 

Usage: tfpt unshelve [shelvesetname[;username]] [/nobackup] 
        [/migrate /source:serverpath /target:serverpath] 

shelvesetname   The name of the shelveset to unshelve 
/nobackup    Skip the creation of a backup shelveset 
/migrate    Rewrite the server paths of the shelved items 
         (for example to unshelve into another branch) 
/source:serverpath  Source location for path rewrite (supply with /migrate) 
/target:serverpath  Target location for path rewrite (supply with /migrate) 
/nobackup    Skip the creation of a backup shelveset 

Например, чтобы объединить сукно набор под названием "Shelve Set Name", созданный на branch1 в branch2 использовать эту:

>tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/" 
+2

Оооо ... Curt, я думаю, что ты только что сделал мой день. Я попробую это позже. – Herms

+0

Где вы получаете электроинструменты? – Guy

+3

Да, электроинструменты ДОЛЖНЫ позволить вам сделать это, но, к сожалению, слияние происходит ужасно неправильно каждый раз, так что это почти бесполезно. –

1

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

EDIT: Ну, я думаю, я делал это с трудом. Мне придется попробовать решение Курта. :)

34

Альтернативное решение TFPT, что избавляет от необходимости сливать каждый файл вручную

Проблема с электроинструментом tfs заключается в том, что you're doing a 'baseless merge' so have to confirm every file. У меня была полка из более чем 800 файлов, и я никогда не доверяю кнопке «авто слияния» и не хочу проходить через каждый файл по очереди - так что мне пришлось искать другой путь!

  • Скачать и установить TFS Shelveset Sidekick.
  • Инструмент появится в разделе «Инструменты» в VS2010
  • Запустите инструмент «Shelveset кореш», нажмите кнопку Поиск, чтобы показать отложенных
  • правой кнопкой мыши на вашем shelveset и выберите «Экспорт Shelveset»
  • Сохранить в пустое место такие как C:\temp\shelveset-name
  • Теперь есть полная структура каталога, содержащая только новые файлы

(Примечание: Там нет никакого прогресса бара при экспорте - так что если у вас есть большой shelveset, что занимает много ти мне нужно экспортировать, вам просто нужно будет проверить в Проводнике Windows (Файл> Свойства> Размер), что файлы все еще падают, если вы считаете, что они заморожены).

Теперь вам просто нужно скопировать их в новую ветку с помощью проводника Windows.

Это работает для меня:

  • Проверяются все решения первых (в новом филиале)
  • Закрыть это решение
  • Возьмите TFS автономно внутри VS (Tool to do this) - смотрите ниже почему это важно ...
  • Скопируйте файлы в Проводник Windows. Структура каталога в c:\temp\shelveset-name должна быть переименована в соответствии с новой веткой. Совет: убедитесь, что вы скопировали нужное место !!!
  • Принесите VS онлайн
  • Он должен найти все изменения и добавления новых файлов
  • Если он просит вас привязать SourceControl обязательно проверить путь является правильным для новой отрасли.
  • Test - а затем новые приезда файлы

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

+0

Этот метод проще для больших полки и является тем, за которым я следовал. Благодаря! – Ani

+0

Этот метод действительно лучше подходит для больших полки. – Aamir

+0

Ну, вы можете уйти, не беря TFS в автономном режиме. Но я не уверен, что это того стоит. То, что я сделал, это запустить действие «Сравнить» - в «Источнике управления версиями» из контекстного меню, открытого в соответствующей папке. Можно фильтровать выход, чтобы отображать только те элементы, которые отличаются друг от друга. Затем он позволяет делать множественный выбор на них и одновременно проверять все. Но я предполагаю, что TFS offline быстрее и проще. – mark