Перенести TFS 2013 в Git

В течение последних 24 часов я боролся со следующим.

Поскольку наша команда разработчиков уже довольно давно использует TFS (текущая версия 2013), мы решили перенести все проекты на git.

Но, к сожалению, это не так просто. Прежде всего, я пробовал с git tfs, но каждый раз, когда я пытаюсь клонировать коллекцию, он говорит:

Access to path 'x' denied. 

Напротив, перечисление всех ветвей проходит гладко.

Из-за этого я пытался пойти другим путем, пытаясь преобразовать репозиторий TFS в репозиторий TFS Git, который позволил бы мне клонировать его и отправить в наше репозиторий BitBucket. К сожалению, я не могу найти, как преобразовать репозиторий TFS в репозиторий TFS Git - нашел только, как создать существующий.

И последнее, но не менее важное: я даже пробовал использовать git tf - но каждый раз, когда я пытаюсь получить доступ к своим репозиториям, он говорит: «Java .... Main.class не найден».

Есть какие-нибудь советы и рекомендации по успешному переходу с TFS на Git?

Заранее спасибо!


person dsafa    schedule 14.01.2016    source источник


Ответы (2)


TFVC и Git - это радикально разные модели управления версиями (см. https://en.wikipedia.org/wiki/Version_control для получения дополнительной информации): это похоже на перенос данных из файлов и каталогов в реляционную СУБД или сравнение электромобиля с двигателем внутреннего сгорания.

Я предлагаю вернуться к основам и четко сформулировать требования. :

  • Мне нужно перенести весь исходный код?
  • Нужна ли мне история переноса?
  • Мне нужны все ветки?

Я рекомендую сосредоточиться на том, что вам действительно нужно, и выбрать самое быстрое и дешевое решение, которое обычно:

  1. Переместите в новую систему только нужные мне исходные файлы и избавьтесь от старых неиспользуемых вещей (назовите это уборкой гаража)
  2. Заблокируйте старую систему, чтобы она была доступна только для чтения
  3. Сделайте снимок минимума веток и зафиксируйте их в новой системе (никаких специальных инструментов не требуется)
  4. Не выполняйте миграцию до выхода основного выпуска, выбирайте момент с умом, чтобы у команд было время изучить новую технологию и исправить проблемы.
  5. Начните использовать новую систему и оставьте старую в качестве ориентира

Пункт 2 можно реализовать, сняв разрешения всем, кроме администраторов. Моя идея шага 3: клонировать пустое репо, получить последнюю из основной ветки в отдельном рабочем пространстве TFVC, синхронизировать файлы с репозиторием Git (например, robocopy /MIR /XD .git), зафиксировать, нажать, создать и переключить Git на ветку X, получить последнюю ветку TFVC X , синхронизация и т. д. Повторите эти действия для всех ветвей, которые вы хотите перенести.

Также рассмотрите возможность незначительного рефакторинга базовой компоновки кода и разделения на отдельные поддеревья Git или даже подмодули.

person Giulio Vian    schedule 15.01.2016
comment
Полностью согласен с большинством предложений. В конце концов, я просто решил согласиться с этим решением, то есть перенести базу кода, в то время как TFVC можно сохранить в качестве справочного материала на случай, если потребуется проверить какие-либо рабочие элементы. Спасибо за совет - person dsafa; 15.01.2016

К сожалению, я не могу найти, как преобразовать репозиторий TFS в репозиторий TFS Git.

Просто потому, что нет возможности это сделать! Это очень сложная задача из-за особенностей git и TFVC, поэтому Microsoft даже не пыталась это сделать!

В некотором смысле это то, что инструменты git-tfs и git-tf пытаются сделать с множеством трудностей, в основном из-за того, как (ужасно!) TFVC управляет и хранит данные веток в своем репозитории.

Ваша единственная надежда - на один из этих двух инструментов.

К сожалению, git-tf больше не поддерживается уже 2 года и не поддерживает ветки :-(

git-tfs пытается сделать работу намного лучше, но некоторые шаблоны ветвления по-прежнему вызывают большие проблемы :-( В этом крайнем случае клонирование без поддержки веток - ваше последнее решение ...

Документ о том, как это сделать https://github.com/git-tfs/git-tfs/blob/master/doc/usecases/working_with_no_branches.md#clone-just-the-trunk

Не стесняйтесь читать больше документации на сайте git-tfs github.

Доступ к пути 'x' запрещен.

Вы уверены, что это не просто проблема с правами доступа? Потому что никогда не слышал о такой проблеме ...

Ps: способ, которым Microsoft видит миграцию с TFVC на git, заключается в обновлении до tfs 2015 update 2 и создании репозитория git в том же проекте, что и существующий проект TFVC, и копировании исходного кода в репозиторий git. TFVC хранит историю ... Если нужно.

person Philippe    schedule 14.01.2016