1

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

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

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

我想知道是否有办法在git clone不下载/复制任何内容的情况下访问此本地存储库(因为它已经存在)。

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

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作为“版本化和最新”。

根据文档,我似乎需要使用git svn init,因为git svn clone运行 a fetch,我当然不想要。所以我尝试了

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

...但没有运气。

我对 完全陌生git,所以我的困惑是超乎寻常的……我做错了什么吗?

提前致谢

4

1 回答 1

1

您不能拍摄 subversion 快照并将其转换为 git 存储库。

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

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

其中 12334 是您感兴趣的最早的 svn 修订版,并假设 repo 以标准 svn 方式布局,带有分支和标签。

于 2013-08-07T10:32:41.120 回答