Чи можу я перейти до іншої гілки в tfs 2008?


105

Припустимо, що якийсь розробник у моїй команді відклав зміни, які він зробив у філії А. І я працюю над філією B. Чи можу я змінити його зміни у галузі B? (За допомогою GUI або командного рядка)


Демонстрація вищезгаданої команди: Unshelve основи команди
Rohit

Відповіді:


129

В інструментах Visual Studio Сила повинні дозволити вам зробити це.

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

Наприклад, для злиття набору полиць під назвою "Ім'я набору полиць", створеного на Branch1, до Branch2, використовуйте це:

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

2
Оооо ... Курт, я думаю, ти щойно зробив мій день. Мені доведеться спробувати це пізніше.
Гермс

Звідки ви берете електроінструменти?
Хлопець

3
Так, електроінструменти ДОБРЕ дозволити вам це зробити, але, на жаль, злиття щоразу стає жахливо неправильним, тому воно поруч із марним.
Тім Букер

Злиття не так вже й погано. Я виявив, що Auto Merge працює в 90% випадків.
Джастін Рудд

2
Просто спробував. Я перемістив багато файлів на полиці, і, на жаль, це, здається, не працює добре. Потрібно вручну "перенести" всі ці файли (також немає мультивибору). А потім вони додаються як нові файли до робочої області. Я не можу ним скористатися, бо більше не можу злитися.
Стефан Штейнеггер

34

Альтернативне рішення для tfpt, що дозволяє уникнути злиття кожного файлу вручну

Проблема з інструментом живлення tfs полягає в тому, що ви робите «безпідставне злиття», тому доведеться підтверджувати кожен файл . У мене був набір полки з понад 800 файлів, і я ніколи не довіряю кнопці "автоматичного злиття" і не хотів переглядати кожен файл по черзі - тому мені довелося знайти інший шлях!

  • Завантажте та встановіть TFS Shelveset Sidekick .
  • Інструмент відображається у розділі "Інструменти" у VS2010
  • Запустіть інструмент "Shelveset Sidekick", натисніть кнопку Пошук, щоб показати полки
  • Клацніть правою кнопкою миші на полиці та виберіть "Експортувати пакет"
  • Збережіть у порожньому місці, наприклад C:\temp\shelveset-name
  • Тепер у вас є повна структура каталогів, що містить ПРОСТО нові файли

(Примітка. Під час експорту немає панелі прогресу, тому якщо у вас великий набір полиць, який потребує тривалого експорту, вам доведеться просто перевірити в Провіднику Windows (Файл> Властивості> Розмір), що файли все ще надходять, якщо ви думаю, що замерзло).

Тепер вам просто потрібно скопіювати їх у нову гілку за допомогою Провідника Windows.

Це працювало для мене:

  • Спочатку перевірка всього рішення (у новій гілці)
  • Закрийте це рішення
  • Візьміть TFS офлайн зсередини VS ( Інструмент для цього ) - див. Нижче, чому це важливо ...
  • Скопіюйте файли в Windows Explorer. Структуру каталогів у c:\temp\shelveset-name, доведеться перейменувати, щоб відповідати новій гілці. Порада: Переконайтеся, що ви скопіювали в потрібне місце !!!
  • Принесіть VS в Інтернеті
  • Він повинен знайти всі зміни та додати нові файли
  • Якщо він просить зв’язати sourcecontrol, переконайтеся, що шлях до нової гілки правильний.
  • Тестуйте - а потім перевірте нові файли

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


Цей спосіб простіший для великих полиць і це той, за яким я дотримувався. Дякую!
Ані

Цей спосіб справді кращий для більших полиць
Аамір

Добре, ви можете піти, не приймаючи TFS в автономному режимі. Але я не впевнений, що воно того варте. Що я зробив, це запустити дію Порівняння - у Провіднику управління джерелами з контекстного меню, відкритого у відповідній папці. Можна фільтрувати вихід, показуючи лише різні елементи. Тоді це дозволяє зробити декілька виділень на них і перевірити їх усі одразу. Але я думаю, що TFS в режимі офлайн - це швидше і простіше, ніж це.
відмітка

На жаль, це не працює для мене, коли я "додаю" зміни на полиці. Я отримую помилку "Не вдалося отримати збережений файл. Потрібно змінити файл, який очікує на зміну".
Джон Сондерс

@JohnSaunders Ви маєте на увазі полки з будь-якими добавками або виключно додаваннями? Мені не потрібно було це робити роками :)
Simon_Weaver

1

Інформація про полиці включає конкретний шлях, по якому він йде. На жаль, я не знаю жодного автоматичного способу відхилитись від будь-якого місця, окрім того, до якого він був прихований. Час, коли я хотів це зробити, мені довелося перевірити еквівалентні файли в новій гілці, зняти зі старої гілки, а потім скопіювати файли вручну.

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


0

Я витратив чимало часу, щоб виконати це, і у мене було мало проблем, які треба подолати. Можна, але тут мало дотримуватися кількох питань та кількох правил, щоб уникнути цих питань

Помилка:

не в змозі визначити робочу область

Цю конкретну проблему було вирішено за допомогою запуску команди з кореневої папки вихідної гілки. Це суперечить деяким відповідям на ТА, де вони кажуть використовувати гілку "target" - ні, використовуйте "source":

cd [your !!source!! branch root]
tfpt unshelve /migrate /source:"$/MyCollection/Development/Maint1.1" /target:"$/MyCollection/Development/Maint1.2" "myShelveset;UserName"

Другий випуск з’явився після цього. Здавалося, він не може підключитися до сервера TFS. Що я зрозумів, у мене встановлено кілька VS та підключено до різних серверів TFS. Я використовував VS12 і у мене було робоче місце та підключення до сервера. Але я не усвідомлював, що те саме з'єднання потрібно реплікувати у VS13, щоб TFPT2013 працював. Він підключається до одного сервера та робочої області.

Я також спробував це зробити за допомогою TFPT2015, але я встановив його, і він не встановив TFPT.exe, отже, він був марним. Тому я спробував від TFPT2013 до TFS2015, і він працював для цієї конкретної команди. Цікаво, чому б ні, якщо VS12 / 13 добре працює проти TFS2015?

Узагальнити

  • Використовуйте CMD або DevCMD - не має значення
  • запустити команду з вихідної кореневої папки відділення
  • перевірити підключення Team Explorer Server для конкретного VS
  • TF Power Tools 2013 працює проти TFS v15, принаймні, функція міграції працює

0

Наступні кроки можна використовувати для полиць невеликого розміру (~ 20 файлів або менше).

  1. На полицях і на цільових гілках почніть із того, щоб усі очікувані оновлення були зареєстровані або повернуті назад.
  2. На гілці набору полиць зніміть файли з відповідного набору.
  3. На цільовій гілці перевірте будь-який із наявних файлів, які знаходились у невідкладеному наборі полиць.
  4. Порівняйте неподілені файли на гілці набору пакетів з файлами на цільовій гілці, щоб виявити ті файли, які потребують оновлення (якщо такі є).
  5. Якщо потрібно, вручну зробіть оновлення у відповідних файлах попереднього кроку та збережіть ці файли у робочій області цільової гілки.
  6. Скопіюйте інші файли наборів шевелюрів із робочої області гілки полиці на робочу область цільової гілки.
  7. Порівняйте нові оновлені файли в робочій області цільової гілки з відміченими у файлах. Внесіть будь-які виправлення за потребою.
  8. Перевірте нові оновлені файли на цільовій гілці.
  9. Відкат непотрібних файлів на гілці полиці.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.