Командная строка "получить последние" из TFS без рабочих областей отображения и т.д.
Я предполагаю, что это:
tf.exe get $/project /recursive
... нуждается в этом странном сопоставлении рабочего пространства, известном сервере TFS и т.д.
Есть ли способ сделать это проще: подключитесь к этому серверу TFS, используя этот набор учетных данных, получите последний исходный код для этого проекта и поместите его здесь? Все из командной строки.
Ответы
Ответ 1
Во-первых, хотите ли вы копировать контролируемые файлы, которые больше не находятся под контролем источника (например, экспорт SVN), или вы все еще надеетесь работать с файлами и TFS?
Вариант 1: Нет привязки вообще
Если вам просто нужна копия последних файлов и нет привязки к TFS, вам придется немного поработать самостоятельно. Оставляя в стороне учетные данные (параметр [/login:username,[password]]
для многих методов командной строки).
- Используйте команду
TF
, чтобы получить список файлов: tf dir "$/YourSolution" /Recursive > files.txt
- Процесс
files.txt
с помощью некоторого умного командного файла (или использования языка сценариев):
- Прочитайте строки, начинающиеся с
$/
, и это каталог, создайте каталог в пункте назначения (удалите первые три символа и последний символ, двоеточие).
- Прочитайте следующие строки (до пустого или конца файла), каждый из которых представляет файл в каталоге, обнаруженном на шаге 3. Предполагая, что у вас есть файл в переменной
%file%
и в каталоге %dir%
, затем выполните следующая команда (для каждого файла в этом каталоге):
tf view "$/%DIR%/%FILE%" "/output:Your-Target-Path/%DIR%/%FILE%"
или если вы довольны текущей директорией в качестве цели:
tf view "$/%DIR%/%FILE%" "/output:%DIR%/%FILE%"
Обратите внимание: вам нужна %DIR%/%FILE%
в выходной части, или все файлы будут сброшены в один каталог.
ПРИМЕЧАНИЕ: это, скорее всего, будет ОЧЕНЬ высокая пропускная способность и медленная работа!
Вариант 2: временное сопоставление
- Создайте временную рабочую область:
tf workspace /new /collection:<URL_TO_SERVER> /permission:Private
(обратите внимание, что это подскажет, есть опция без подсказки, но определение имени для рабочей области остается как упражнение)
- Сделать каталог для файлов, например.
LOCALDIR
- Создайте сопоставление для ваших папок:
tf workfold /map "$/SERVER_DIR" "LOCALDIR"
- Перейдите в
LOCALDIR
- Получить файлы
tf get . /Recursive
На этом этапе у вас должны быть все файлы, и если вы хотите, чтобы у вас также была привязка к TFS, чтобы вы могли вносить изменения. Кроме того, теперь вы можете скопировать содержимое в другое место и разбить отображение/рабочее пространство. Использование правильных вариантов командной строки tf workfold /unmap
и tf workspace /delete
приведет к отключению вашей рабочей папки и удалению рабочей области.
Ответ 2
Экспортировать любую папку из TFS? Наконец, я нашел блестящее решение.
Я не собираюсь полностью исследовать это для вас сейчас, но намерен заменить мою невероятно беспорядочную рабочую зону сервера сборки script с этим позже, когда я получу время.
Решение:
Используйте Microsoft Git -TF, чтобы получить исходный код на диске без необходимости настройки рабочего пространства или чего-либо еще. Я попробовал команду, и она отлично работала. Подумайте, что он будет работать для TFS 2010 и 2012. Из того, что я могу понять, не будет никаких привязок или рабочих пространств или чего-то еще, что может вызвать проблемы позже. Я думаю, что все, что вам нужно установить, это GIT и Git -TF.
http://www.microsoft.com/en-us/download/details.aspx?id=30474
Фактически вы получите файлы в репозиторий GIT, который не является проблемой вообще. Вы получите (скрытую?) Папку с именем .git внутри экспортируемой вами папки, и я думаю, вы можете просто удалить ее, чтобы избавиться от любого следа GIT.
Если кто-то реализует это, что должно быть легко, пожалуйста, подтвердите, что оно работает как ожидалось.
Ответ 3
В командной строке TFS нет "простой" опции - они почти всегда связаны с большим количеством ввода (например, если вы не можете просто настроить по умолчанию, поэтому вам не нужно указывать коллекцию URL для каждой команды)
Обычный способ сделать командные строки TFS "простыми" - это писать командные файлы, чтобы скрыть все детали, которые нужно указывать каждый раз (URL-адреса серверов и флаги-рекурсии и т.д.).
TF.exe действительно позволяет вам делать почти что угодно, так что это довольно простая последовательность вызовов tf для создания временного сопоставления, повторите Get и и удалите сопоставление.
Ответ 4
Быстрое решение
Основываясь на ответе Ray Hayes на вариант 2, я собрал фактический script, который должен быть прямым для использования для тех, кто просто хочет быстрое и грязное решение. Вы должны прочитать его aswer для получения дополнительной информации.
Чтобы использовать его:
- Установите четыре переменные в рабочую среду.
- помните, что ваш
tf.exe может не находиться в той же самой директории, в которой я ее использую,
особенно если вы читаете это из будущего:)
.
SET COLLECTION_URL="http://localhost:8080/tfs/<collection>"
SET SERVER_DIR="$/<REMOTE_SOLUTION_DIR>"
SET LOCAL_DIR="X:\<YourLocalDir>"
SET TF_DIR="C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE"
%TF_DIR%\tf workspace /new /collection:%COLLECTION_URL% /permission:Private /noprompt tmp_batchws
%TF_DIR%\tf workfold /map %SERVER_DIR% %LOCAL_DIR%
cd /d %LOCAL_DIR%
%TF_DIR%\tf get . /Recursive
%TF_DIR%\tf workspace /delete tmp_batchws /noprompt
Ответ 5
http://johannblais.blogspot.com/2014/07/tfs-equivalent-of-svn-export.html
http://tfs-server:port/tfs/Collection/TeamProject/Team/_api/_versioncontrol/itemContentZipped?repositoryId=&path=url-encoded-source-control-path
- tfs-server - это имя хоста сервера TFS
- порт - это порт TFS (обычно
8080).
- Коллекция - это название вашей коллективной коллекции проекта.
- TeamProject - это название проекта вашей команды.
- Команда - это название команды.
- URL-адрес с кодировкой url-source-source - это источник, закодированный URL-адресом
путь управления (например, $/Project1/Main/Sources/Folder/SubFolder становится% 24% 2FProject1% 2FMain% 2FSources% 2FFolder% 2FSubFolder