SourceForge: Зеркальный GIT-репозиторий для SVN - PullRequest
3 голосов
/ 24 января 2011

У меня есть проект, развивающийся с использованием GIT.Мне нужно сделать SVN-зеркало только для пользователей, которым не понравился GIT.Я гуглил некоторые инструкции об этом, но все они потерпели неудачу.Часть из них написана для Linux - у меня Windows.Часть из них предлагает создать пустой репозиторий и затем синхронизировать его с основным GIT-репозиторием - это не совсем то, что я хочу.Часть из них просто не работала на разных этапах с загадочными сообщениями.Поэтому я решил спросить здесь.Я копался в описании команды git-svn в отчаянной попытке заставить эту вещь работать самостоятельно.Я тоже провалился.Github svn export слишком нестабилен, чтобы на него полагаться.Теперь я прошу вас помочь.

Итак, вот задача.

  1. У меня есть локальный GIT-репозиторий со многими связанными удаленными устройствами (мой собственный репозиторий, sf.net, github и т. Д.).
  2. Я хотел бы сделать из своего локального репозитория SVN-осведомленныйGIT-репозиторий для отражения моей разработки.
  3. SVN-репозиторий будет зеркалом только для чтения.Было бы хорошо, если бы SVN сохранил историю изменений, но если это невозможно - я не стал беспокоиться.
  4. Только одна ветвь должна быть отражена в SVN.Это может быть основная ветвь или любая другая, предназначенная для зеркалирования - не беспокоит эфир.
  5. SVN будет находиться на SourceForge.

Возможно ли заставить эту штуку действительно работать?

Ответы [ 2 ]

1 голос
/ 19 июля 2012

Я думаю, SubGit - это путь.

Проблема в том, что SubGit устанавливает свои собственные хуки прямо в репозитории Subversion и Git.Поэтому я сомневаюсь, что это можно настроить для хостинг-провайдера, например, sourceforge или google code.

Если вы создадите свой собственный репозиторий Subversion, не составит труда настроить даже зеркало для чтения и записи с SubGit:

  1. Создание хранилища Subversion:

    $ svnadmin create $SVN_REPO
    
  2. Клонирование Git-хранилища:

    $ git clone --mirror $GIT_REMOTE_REPO $GIT_REPO
    
  3. Настройка SubGit:

    $ subgit configure $SVN_REPO
    
  4. Настройка файла конфигурации SubGit:

    # Specify 'git.default.repository = $GIT_REPO'
    #     at $SVN_REPO/conf/subgit.conf
    
  5. Добавление сопоставления авторов:

    # Add all the authors as
    # svnauthor = Git Author <git.author@company.com>
    #     into $SVN_REPO/conf/authors.txt
    
  6. Установите SubGit в хранилище Subversion:

    subgit install $SVN_REPO
    

После завершения установки вы можете клонировать $ GIT_REPO в качестве другого удаленного устройства и нажать в этом хранилище, чтобы преобразовать все коммитыв хранилище Subversion.

Можно вносить изменения в хранилище Subversion, SubGit автоматически преобразует их в коммиты Git, так что вы можете получить их обратно.

SubGit - коммерческий проект, но его можно бесплатно открыть.Исходные проекты.Для получения более подробной информации см. Документация SubGit и git-svn сравнение.

0 голосов
/ 18 апреля 2012

git svn init или git svn clone предназначены для подключения к существующему репозиторию SVN, поэтому я бы предложил следующее.

  1. Настройка пустого репозитория SVN
  2. Настройте новый репозиторий git с svn git clone
  3. Потяните ваш локальный Git-репо в новый
  4. Сделайте git svn dcommit ветку, которую вы хотите поделиться с репозиторием SVN

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

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

...