Клонирование репозитория git-svn с метаданными svn - PullRequest
23 голосов
/ 17 марта 2011

Я клонировал свой основной репозиторий с git-svn clone svn://url/trunk --stdlayout.Теперь я хочу клонировать репозиторий с метаданными SVN.Так что я смогу git-svn rebase сделать это на главном сервере.

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

Ответы [ 2 ]

30 голосов
/ 17 марта 2011

Это в документах . Что вы должны сделать, это:

git config --replace-all remote.origin.fetch '+refs/remotes/*:refs/remotes/*'
git fetch

для извлечения мета-ветвей svn. Тогда вы сможете git-svn rebase не извлекать все с нуля.


Цитата из документов:

Исходный клон git svn может быть довольно трудоемкий (особенно для больших Хранилища Subversion). Если несколько люди (или один человек с несколькими машины) хочу использовать GIT SVN для взаимодействовать с той же Subversion репозиторий, вы можете сделать начальный мерзавец SVN клонировать в хранилище на сервере и пусть каждый человек клонирует хранилище с git clone: ​​

# Do the initial import on a server
        ssh server "cd /pub && git svn clone http://svn.example.com/project
# Clone locally - make sure the refs/remotes/ space matches the server
        mkdir project
        cd project
        git init
        git remote add origin server:/pub/project
        git config --replace-all remote.origin.fetch '+refs/remotes/*:refs/remotes/*'
        git fetch
# Prevent fetch/pull from remote git server in the future,
# we only want to use git svn for future updates
        git config --remove-section remote.origin
# Create a local branch from one of the branches just fetched
        git checkout -b master FETCH_HEAD
# Initialize 'git svn' locally (be sure to use the same URL and -T/-b/-t options as were used on server)
        git svn init http://svn.example.com/project
# Pull the latest changes from Subversion
        git svn rebase
2 голосов
/ 12 июля 2014

Сверхбыстрое простое копирование-клон между удаленными компьютерами

Из документов :

'git clone' не клонирует ветви под ссылками /пульты / иерархия или любые метаданные git svn, или config.Таким образом, репозитории, созданные и управляемые с помощью git svn, должны использовать rsync для клонирования, если клонирование вообще необходимо выполнить.

Копирование-клон на той же машине можно просто выполнить с помощьюcp -rp <src> <dst> и с удаленного компьютера, использующего scp -rCp <src> <dst>.

Однако удаленный регистр может быть очень очень медленным (10 минут даже в сети Ethernet) из-за большого количества крошечныхфайлы, которые он должен копировать.

Используя cpio, вы можете избежать этих издержек, то есть (в зависимости от пропускной способности) это займет всего несколько секунд (для репозитория git-репозитория объемом 100 МБ на 50 Мбит / сs соединение).

ssh -C <user>@<host> "cd <path to parent dir of repo>; \
find <repo directory name> -depth -print | cpio -oa" | cpio -imd

Например,

ssh -C alex@myhost "cd ~alex/repos/; \
find WonderProject -depth -print | cpio -oa" | cpio -imd

приводит к новому git-репо 'WonderProject' в текущем рабочем каталоге на локальной машине.


(обратите внимание, что документация, на которую я ссылаюсь, почти отрицает существование раздела, на который ссылается @Elazar, поэтому я не дискредитирую превосходное решение @ Elazar, но ищу более краткое запоминающееся)

...