如何从本地svn repo克隆git repo

时间:2013-08-06 09:30:42

标签: git-svn

我想学习使用git-svn。我的磁盘上有一个svn本地存储库,我刚刚使用类似的东西检查过:

svn co http://myserver.com/mysvnrepo/trunk/ /mysvnrepo/
ls -a /mysvnrepo/
.     ..     .svn     foo     bar

这个/mysvnrepo/很大,所以我想避免不惜一切代价重新下载或复制文件。

我想知道是否有办法git clone这个本地仓库而不下载/复制任何东西(因为它已经存在)。

我有this这似乎是我正在寻找的,但是当我这样做时,它并不能完全满足我的期望。

cd /mysvnrepo/
git svn clone file://mysvnrepo/
ls /mysvnrepo/
.     ..     .git     .svn     foo     bar
git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   .svn/
#   foo/
#   bar/

我希望git能够将foobar视为“版本化和最新”。

根据docs,似乎我需要使用git svn init因为git svn clone运行fetch,我当然不想要。所以我试过

git svn init --trunk=file:///mysvnrepo/

......但没有运气。

我对git完全不熟悉,所以我的困惑已经超出了图表......我做错了什么?

提前致谢

1 个答案:

答案 0 :(得分:1)

您无法获取subversion快照并将其转换为git存储库。

听起来你正试图避免从svn中长时间初始化git存储库:这通常会尝试准备好你的整个历史记录。这可以通过另一种方式完成,方法是根据与您相关的历史记录限制获取最近的历史记录:

git svn clone -s -r 12334:HEAD https://svn.host.org/repo

12334是您感兴趣的最早的svn版本,并假设回购以标准的svn方式布局,带有分支和标签。