Припустимо, що якийсь розробник у моїй команді відклав зміни, які він зробив у філії А. І я працюю над філією B. Чи можу я змінити його зміни у галузі B? (За допомогою GUI або командного рядка)
Припустимо, що якийсь розробник у моїй команді відклав зміни, які він зробив у філії А. І я працюю над філією B. Чи можу я змінити його зміни у галузі B? (За допомогою GUI або командного рядка)
Відповіді:
В інструментах 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/"
Альтернативне рішення для tfpt, що дозволяє уникнути злиття кожного файлу вручну
Проблема з інструментом живлення tfs полягає в тому, що ви робите «безпідставне злиття», тому доведеться підтверджувати кожен файл . У мене був набір полки з понад 800 файлів, і я ніколи не довіряю кнопці "автоматичного злиття" і не хотів переглядати кожен файл по черзі - тому мені довелося знайти інший шлях!
C:\temp\shelveset-name
(Примітка. Під час експорту немає панелі прогресу, тому якщо у вас великий набір полиць, який потребує тривалого експорту, вам доведеться просто перевірити в Провіднику Windows (Файл> Властивості> Розмір), що файли все ще надходять, якщо ви думаю, що замерзло).
Тепер вам просто потрібно скопіювати їх у нову гілку за допомогою Провідника Windows.
Це працювало для мене:
c:\temp\shelveset-name
, доведеться перейменувати, щоб відповідати новій гілці. Порада: Переконайтеся, що ви скопіювали в потрібне місце !!!Важливо: якщо я не спершу вимкніть TFS в автономному режимі, тоді ви отримаєте нові файли (із набору змін, що не використовуються), без червоної галочки, і вам доведеться їх знову виключити та включити щоб їх додати. Якщо у когось є альтернативне рішення цієї проблеми, я хотів би знати - оновлення, здається, не працює.
Інформація про полиці включає конкретний шлях, по якому він йде. На жаль, я не знаю жодного автоматичного способу відхилитись від будь-якого місця, окрім того, до якого він був прихований. Час, коли я хотів це зробити, мені довелося перевірити еквівалентні файли в новій гілці, зняти зі старої гілки, а потім скопіювати файли вручну.
EDIT: Ну, я думаю, я робив це важким шляхом. Мені доведеться спробувати рішення Керта. :)
Я витратив чимало часу, щоб виконати це, і у мене було мало проблем, які треба подолати. Можна, але тут мало дотримуватися кількох питань та кількох правил, щоб уникнути цих питань
Помилка:
не в змозі визначити робочу область
Цю конкретну проблему було вирішено за допомогою запуску команди з кореневої папки вихідної гілки. Це суперечить деяким відповідям на ТА, де вони кажуть використовувати гілку "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?
Узагальнити
Наступні кроки можна використовувати для полиць невеликого розміру (~ 20 файлів або менше).