Nano Hash - криптовалюты, майнинг, программирование

С svn на git, с перемещенным транком

Я пытаюсь переключить свой репозиторий svn на git. Это старый репозиторий, и один из предыдущих сопровождающих перемещал ствол для каждого нового выпуска. Например, предыдущий репозиторий находился по адресу:

  • svn+ssh://svn.mycompany.com/project/release_1/trunk

Теперь наш текущий ствол находится по адресу:

  • svn+ssh://svn.mycompany.com/project/release_N/trunk

Когда я проверяю второй репозиторий SVN, у меня есть полная история, в том числе до копирования. Однако, когда я использую git-svn для второго репозитория, у меня нет старой истории (от release_1, ...). Первый коммит — это копия release_{N-1} в release_N/trunk.

Вот что я пробовал:

  • git svn clone --no-minimize-url --authors-file мой-авторский-файл svn+ssh://svn.mycompany.com/project/release_N/trunk my_project.git

Поскольку это не работает, я попробовал что-то еще. Предположим, что «фиксация копирования» - это K, я пробовал:

  • git svn clone --no-minimize-url -r BASE:K --authors-file мой-авторский-файл svn+ssh://svn.mycompany.com/project/release_N/trunk my_project.git

На этот раз git-svn не находит никаких коммитов.

Знаете ли вы, есть ли волшебный трюк, чтобы иметь полную историю?

17.10.2013

Ответы:


1

Вот что я понял из вопроса:
Ваша история распределена по нескольким веткам svn (все они называются магистральными). Вам понадобится вся эта история при переходе на git.

Я думаю, что следующее решит вашу проблему:

git svn init my_project.git

git config svn-remote.svn.url svn+ssh://svn.mycompany.com/project
git config svn-remote.svn.fetch release_N/trunk:refs/remotes/trunk
git config svn-remote.svn.branches */trunk:refs/remotes/*
git config svn.authorsfile my-authors-file

git svn fetch

Это создаст ветку release_N как основную ветку, а остальные выпуски — как разные ветки в вашем репозитории git.

Насколько я знаю, вы не можете заставить одну ветку git svn указывать на несколько URL-адресов, что, я думаю, вы пытались сделать.

17.10.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..