git bundle с git-svn

Я пытаюсь использовать git-bundle с репозиторием git-svn. По сути, мне нужно создать оффлайн-репозиторий git, в котором есть клон нашей производственной системы SVN. Репозиторий SVN клонируется через git-svn, который прекрасно работает. Он клонирует наш код и перечисляет его в разделе remotes/*.

Теперь самая сложная часть. Мне нужно синхронизировать это с нашим оффлайн-хранилищем. Автономная среда не имеет доступа к Интернету и будет получать обновления только односторонним способом (например, cd и т. Д.). Это односторонняя сделка. Я хочу сделать это с помощью git-bundle. Проблема, похоже, сводится к тому, что git-svn помечает svn-репозиторий как удаленный. Я пытался проверить комплект, используя git bundle create ____.bundle --all... это работает, но это касается только моего хозяина. Это не включает ссылки на пульты. Однако мне нужно получить всю эту информацию.

Имеет ли это смысл? Любые советы / предложения? Должно быть ясно, что мы НЕ фиксируем git-репозиторий на стороне SVN, он будет доступен только для чтения. На автономной стороне мы будем разветвлять удаленные ветви и фиксировать там.

Спасибо!

1 ответ

Решение

Хотя git svn изначально настраивает так, чтобы ветви svn отображались как удаленные, это можно изменить, изменив refspec, используемый для создания веток. Но это должно быть сделано до того, как вы получите что-нибудь из хранилища svn.

git svn init --stdlayout http/svn.server/path svnclone
cd svnclone
edit .git/config

Затем измените fetch а также branches линии, и, возможно, tags строка выглядит так:

fetch = trunk:refs/heads/trunk
branches = branches/*:refs/heads/*
tags = tags/*:refs/tags/*

Если репозиторий SVN не использует стандартную компоновку, вы можете указать это, как обычно, в вызове git svn init, В этом случае вы должны оставить части вышеупомянутых строк перед двоеточиями, поскольку они изменяют только части после двоеточия.

Когда у вас есть эта настройка, вы можете использовать git svn fetch на самом деле копировать содержимое. Так как ветви идут в refs/heads пространство имен, Git, включая bundle Команда будет относиться к ним как к локальным ветвям. Пока этот клон используется только как источник для других клонов (либо с помощью связки, либо просто с помощью команды клонирования), это не должно быть проблемой. Хотя, если есть ветка SVN с именем master или же trunk это может быть проблемой.

Другие вопросы по тегам