Хранение кода в нескольких SVN-репозиториях с помощью git локально - PullRequest
1 голос
/ 09 февраля 2012

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

У меня есть папка (src), которая существует во внешнем репозитории.Мое желание состоит в том, чтобы сохранить этот код во второй папке src во внутреннем репозитории, чтобы можно было выполнять внутреннюю фиксацию, а когда код стабилен, фиксировать во внешнем репозитории.

В дополнение к этому я хочудля локального управления кодом на моей машине с помощью git.

С этой целью я рассмотрел git-svn.

Может кто-нибудь объяснить лучший способ управлять этим?Я склоняюсь к тому, чтобы иметь ветку для каждого репозитория svn (localsvn и externalsvn) и работаю с локальным по умолчанию, сливаясь с внешним, когда я хочу зафиксировать его, и поддерживая работу git в фоновом режиме.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2012

Это должно быть возможно, но вам нужно поиграться с одной из более эзотерических функций git svn: -R (опция удаленного имени).

Создать git svn репозиторийиспользуя git svn init для локального кода как обычно, затем посмотрите на файл .git/config.Там будет раздел под названием [svn-remote "svn"].Скопируйте весь этот раздел, переименовав его во что-то вроде [svn-remote "external"], отредактируйте поле url, чтобы оно указывало на внешний репозиторий, и обновите другие поля, чтобы дать им уникальные имена.части файла конфигурации будут выглядеть примерно так:

[svn-remote "svn"]
    url = http://local.svn/repository/root
    fetch = trunk:refs/remotes/trunk
    branches = branches/*:refs/remotes/*
    tags = tags/*:refs/remotes/tags/*
[svn-remote "external"]
    url = http://external.svn/repository/root
    fetch = trunk:refs/remotes/ext-trunk
    branches = branches/*:refs/remotes/ext-*
    tags = tags/*:refs/remotes/tags/ext-*

Если вы сейчас выполните git svn операций, он будет извлечен из локального репозитория.Если вы добавите -Rexternal, вы вместо этого будете работать с внешним хранилищем.Поэтому, чтобы выполнить первоначальную выборку, вам нужно выполнить оба следующих:

git svn fetch
git svn fetch -Rexternal
0 голосов
/ 14 февраля 2012

В настоящее время я имею дело с двумя отдельными версиями кода.Система ветвления у меня не сработала.

У меня есть версия для удаленного репо, управляемая с помощью git-svn, и версия для локального репо, также управляемая с помощью git-svn.Когда я хочу перейти с локального на удаленный или наоборот, я просто перемещаю код с помощью скрипта, объединяю и, наконец, загружаю.

...