Миграция полочного набора TFS из одной ветки в другую

Мне нужно перенести набор полок, созданный в одной ветке, скажем, «разработка», в другую, например, «выпуск». так что я могу напрямую объединить набор полок с выпуском, который был создан для ветки разработки.

я использовал следующую команду:

tfpt unshelve "shelveset name" /migrate /source:"$...development" /target:"$...Release"

он показывает эту ошибку:

невозможно определить рабочее пространство


person superman    schedule 31.08.2011    source источник
comment
для меня это было то, что у меня было установлено две версии Powertools. Мне пришлось удалить старую, поэтому осталась только самая новая (2012 г.). Также версия powertools не ссылается на версию TFS (поскольку мы используем 2010)   -  person Boris Callens    schedule 18.04.2014


Ответы (6)


Ваше местоположение, откуда вы запускаете команду, должно находиться в вашем рабочем пространстве. Например. c:\workspaces\project\development, если там находится ваш источник.

person Krimson    schedule 09.12.2011

Думаю, у вас возникает вопрос: Как я могу выполнить работу, чтобы эта ошибка не возникала?. В этом случае убедитесь, что обе ветки сопоставлены с вашей локальной системой и что последняя версия вашего исходного кода установлена ​​в get-latest-version.

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

person kroonwijk    schedule 13.09.2011

Сегодня я столкнулся с той же проблемой. После проверки пунктов ниже у меня все заработало:

  • У вас должен быть установлен только один Powertools.
  • Запустите команду из командной строки разработчика
  • Запустите команду из папки, сопоставленной с вашей целевой рабочей областью.

Мне пришлось удалить версию 2010, так что осталась только версия 2012 года. Номера версий, похоже, не относятся к вашей версии TFS.
Чтобы проверить, находитесь ли вы в правильной папке, вы можете запустить tf workspace.
В появившемся окне найдите рабочее пространство, на которое вы хотите настроить таргетинг, и отметьте столбец "Локальная папка". Убедитесь, что вы находитесь в этой папке.

person Boris Callens    schedule 18.04.2014
comment
Я согласен. Я прочитал много сообщений по этому поводу и пробовал различные исправления, но я убежден, что именно несколько существующих версий TFPT, даже существующих в вашей системе (независимо от того, как вы на них ссылаетесь), вызывают эту ошибку, и из-за этого я сильно подозреваю, что это ошибка в коде Power Tools. - person paulyphonic; 02.08.2014

Я потратил много времени, чтобы сделать это, и у меня было несколько проблем, которые нужно было преодолеть, и одна из них на самом деле была

невозможно определить рабочее пространство

Эта конкретная проблема была решена путем выполнения команды из корневой папки ветки source. Это противоречит некоторым ответам здесь и в SO в целом, где они говорят использовать «целевую» ветку - нет, используйте «источник»:

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
  • TF Power Tools 2013 работает с TFS v15, работает по крайней мере опция migrate
person T.S.    schedule 09.05.2018
comment
Я запускаю ту же команду из исходной ветки и все равно получаю сообщение об ошибке. Я использую TFPT 2015 с TFS 2017 на сервере - может ли быть проблема? - person ryanwebjackson; 03.01.2019
comment
@ryanwebjackson Убедитесь, что обе ваши ветки отображены в рабочей области (ах) - person T.S.; 03.01.2019
comment
@ryanwebjackson Я так думаю. По сути, TFS не может работать с не отображенным кодом. Я понимаю это так - не удалось определить рабочее пространство говорит вам, что он не может найти этот $ / collection /. . . сопоставлен с некоторым каталогом в некоторой рабочей области. Вы хотите сопоставить обе ветки, получить последнюю версию, а затем запустить свою команду - person T.S.; 03.01.2019
comment
Я думаю, что тогда я просто не могу запустить команду, потому что одно из моих рабочих пространств находится слишком высоко в структуре каталогов, но я не собираюсь удалять его только для этого действия. Спасибо за отзыв, я искренне признателен за это. - person ryanwebjackson; 03.01.2019
comment
@ryanwebjackson Вот где я не понимаю ... одно из моих рабочих пространств находится слишком высоко в структуре каталогов. Рабочее пространство не может быть высоким или низким. Вы можете сопоставить столько ветвей или их частей в одной рабочей области. Даже если вы про ветки - это тоже не беда. На может быть $/xxx/x/x/x/x/x и еще $/y/y - person T.S.; 03.01.2019
comment
Рабочее пространство сопоставляется с каталогом на сервере, и в нашем случае соглашение заключается в сопоставлении на уровне коллекции - это мешает мне выполнить действие. Я решил обойти это сейчас, вручную скопировав изменения и сравнив. - person ryanwebjackson; 03.01.2019
comment
@ryanwebjackson Попытка сопоставить 2 рабочие области с коллекциями, с которыми они сопоставлены, займет 10 минут. получить последнюю версию, выполнить команду и отменить, если вам не нравится результат. Но было бы интересное упражнение. Я думаю, он должен работать, пока каталог сопоставлен с веткой через некоторую рабочую область. - person T.S.; 03.01.2019

Мой первый ответ объясняет, как это сделать правильно, используя TFPT. В этом ответе я хочу объяснить, как это сделать без TFPT.

У каждого разработчика должно быть несколько рабочих мест. Потому что мы работаем над несколькими проблемами одновременно и не хотим путать это. Итак, вы работаете над одним вопросом в WS1 и другим вопросом в WS2. Таким образом, если вы уберете свой набор полок в другое рабочее пространство, это также сделает то же самое. Потому что ваш набор полок не может указывать на 2 разных места в одной и той же рабочей области. Но в другом рабочем пространстве он будет отделяться от места, отображаемого в этом рабочем пространстве.

person T.S.    schedule 28.02.2020

Я столкнулся с той же проблемой, что и Борис Калленс. Я установил TF Power Tools для VS2012 и VS2013. При запуске команды tfpt.exe в командной строке у меня всегда было сообщение об ошибке «не удалось определить рабочее пространство». Это связано с тем, что я использовал электрические инструменты VS 2012 с TFS 2013. Поэтому мне пришлось изменить путь к Power Tools в переменной системной среды «TFSPowerToolDir», чтобы указать на Power Tools для VS2013.

Вы можете найти номер версии: tfpt.exe /? Версия TF Power Tools

person Homorozeanu George    schedule 07.10.2015