Можно ли скопировать папку TFS-Project из одной коллекции в другую

В настоящее время я пытаюсь перейти с TFS 2013 на GitLab. Проблема в том, что я хочу сохранить несколько проектов на своем сервере TFS, но собрать их все в одну коллекцию.

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

Второй моей попыткой было использовать инструменты git-tfs и git-tf, следуя этим инструкциям: https://fabiostawinski.wordpress.com/2017/03/22/tfvc-to-git-to-tfvc-is-it-possible/ но инструмент git-tf очень устарел, и я не нашел помощи в решении своей проблемы, поэтому отказался от него. (git-tf сказал, что мой TFS-URL был неправильным, даже если он работал с git-tfs)

Моим другим предположением было клонировать папку с TFS-сервера с помощью инструмента git-tfs. Я использовал следующую команду, чтобы клонировать ее как локальный репозиторий:

git tfs clone <tfs-address> <project-address>

Насколько я знаю, есть команда git tfs rcheckin для повторной проверки на сервере tfs. Я добавил новый пульт tfs, указывающий на другую коллекцию:

git tfs init -i collection2 <tfs-address/target_collection> "<project-address>"

После этого я попытался зарегистрироваться с добавленным новым пультом:

git tfs rcheckin --i=collection2

К сожалению, я получаю эту ошибку (включая отладку)

Command run:git tfs rcheckin --i=default --d
No authors file used.
git-tfs version 0.31.0.0 (TFS client library 14.0.0.0 (MS)) (64-bit)
git command: Starting process: git --version
git command time: [00:00:00.0377481] --version
No TFS parents found!

Поэтому я хотел спросить, есть ли более простой способ сделать все это, или я просто что-то упускаю?


person brachi    schedule 15.07.2020    source источник


Ответы (2)


Проверки TFS хранятся в базе данных, и каждый идентификатор проверки является автоматически сгенерированным идентификатором для этой коллекции. Если вы скопируете папку и добавите ее вручную, автоматически будет сгенерирован новый идентификатор регистрации. Таким образом, невозможно перемещать папку TFS с историей по коллекции.

person Uday    schedule 15.07.2020
comment
Это не ответ на вопрос. На самом деле вопрос заключается в переходе с TFVC на Git. - person Daniel Mann; 15.07.2020
comment
Что ж, OP хочет перенести проекты TFS из нескольких коллекций в одну коллекцию. опубликованные команды указывают на миграцию с TFVC на git, а затем с git на TFVC. - person Uday; 15.07.2020
comment
Сначала спасибо за ваш ответ, и да, вы правы. Речь идет о переходе с TFVC на TFVC с помощью git, переход с TFVC на Git - это не то, что я просил и уже знаю, как это сделать. Я, вероятно, просто перенесу все свои проекты в GitLab и выключу сервер TFS, чтобы использовать его по-другому. - person brachi; 16.07.2020
comment
У меня было такое же требование перенести несколько репозиториев TFVC в одну коллекцию. Кроме того, если вы переносите папку или проект TFVC, содержащий документы, это будет после миграции огромного репозитория git. - person Uday; 16.07.2020

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

Чтобы перейти с TFVC на Git и сохранить историю, вы можете попробовать следующие шаги:

Шаг 1: Запустите сценарий: git tfs clone <TFS URL> $/project (Тип репо - tfvc). Тогда вы сможете клонировать проект и всю историю.

Шаг 2. Запустите cd repo path, чтобы перейти к пути локального репо, и git checkout -b TempBranch, чтобы создать временную ветку.

Шаг 3: Запустите git remote add origin <Git URL>, чтобы установить цель.

Например: git remote add origin http://dctfs2019:8080/tfs/Collection2017/Project1/_git/3 (Тип репо - git)

Шаг 4: Запустите git push --set-upstream origin TempBranch, чтобы отправить все репозитории во временную ветку.

введите описание изображения здесь

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

Обновления:

Из этого билета:

Git-TFS: его ни в коем случае нельзя использовать для передачи этой истории в другой пустой проект TFVC.

Он не мог напрямую перенести TFVC в TFVC.

Ссылаясь на ваши требования, я предлагаю вам использовать Git-TFS для переноса TFVC (TFS) на Git (Gitlab). Вам просто нужно изменить путь к целевому репо в команде git.

Затем вы можете использовать Git-tf для переноса репозитория Git (Gitlab) в репозиторий TFVC (TFS).

Вот документ о переносе репозитория Git в репозиторий TFVC.

person Kevin Lu-MSFT    schedule 16.07.2020
comment
Спасибо за ваш ответ, и я, вероятно, попробую это позже, но на первый взгляд мне кажется, что это не сработает, потому что, насколько мне известно, TFS 2013 не поддерживает репозитории git на сервере. - person brachi; 16.07.2020
comment
@brachi. Спасибо за исправление. Git-tfs не поддерживает миграцию TFVC в TFVC. Чтобы решить эту проблему, вы можете проверить обновление. Пожалуйста, проверьте, может ли он помочь вам. - person Kevin Lu-MSFT; 16.07.2020
comment
Хорошо, спасибо за обновление, я посмотрю на него позже на этой неделе и помечу ваш ответ как решение, если оно сработает :) - person brachi; 16.07.2020
comment
@brachi Есть ли обновления после выходных? Не стесняйтесь, дайте мне знать, если ответ может вам помочь. Спасибо. - person Kevin Lu-MSFT; 20.07.2020
comment
Извините за то, что ответил так поздно, у меня были другие проекты. Попробовав ваше решение, я получаю ту же ошибку, что и всегда, с git-tf: git-tf: 'http://ip:8080/tfs/collection%20name/' is not a valid URL После использования этой команды: git tf configure http://ip:8080/tfs/collection%20name/ $/project - person brachi; 30.07.2020