如何共享git svn配置?

时间:2013-08-01 23:22:41

标签: git git-svn

所以我设置了一个git-svn repo并将其推送到github。但如果克隆它,克隆中就没有svn配置 我推送的存储库和我推送后从github克隆的存储库之间的区别是:

enter image description here

我推送的那个(带有svn信息的svn克隆)在右边 - 来自github的克隆在左边
我应该分享哪些(文件夹/文件(或配置部分))让人们像我一样设置git-svn?从某种意义上说,他们克隆然后复制粘贴这些文件(并可能运行git svn rebase),它们具有与我相同的设置。我已经将svn repo的所有分支和标签克隆为远程分支,我也想分享这些分支和标签。理想情况下,即使在我(我们)开始在git和svn repo之间推送/ dcommit之后,这些文件仍应有效

1 个答案:

答案 0 :(得分:2)

这似乎对我有用:

git clone your-existing-git-repo new-cloned-repo
cd new-cloned-repo
git fetch origin refs/remotes/*:refs/remotes/*
git init
git svn init -s "svn://your-svn-server/your-svn-repo/your-svn-project"
git svn fetch
git checkout master
git svn rebase

虽然上述方法有效,但我发现以下内容使用的.git/config文件与原始文件(origin分支的master远程附件)完全相同。

mkdir new-cloned-repo
cd new-cloned-repo
git init --bare .git
git remote add backup your-existing-git-repo
git fetch backup refs/remotes/*:refs/remotes/*
git fetch backup refs/heads/*:refs/heads/*
git fetch backup refs/tags/*:refs/tags/*
git init

# update SVN references
git svn init -s "svn://your-svn-server/your-svn-repo/your-svn-project"
git config svn.authorsfile your-authors-file.txt
git svn fetch

git checkout master
git svn rebase
git svn show-ignore >> .git/info/exclude

这应该克隆所有Git提交git clone / git fetch和远程分支(现有repo知道的所有SVN分支/标记)git fetch origin refs/remotes/*,更新SVN连接信息{{1然后通过git svn init将SVN修订版更新为Git commit mappings。

git svn fetch假设您在git svn init -syour-svn-projecttrunkbranches/*下以正常的SVN方式存储内容。

我不确定是否需要tags/*,但我确信如果不需要,它不会造成任何伤害。此外,git init可能是多余的,但不会造成任何伤害。