我试图将Git作为一个前端来使用SVN仓库,以便能够使用Git的一些很棒的功能,如简单分支、藏匿等。
问题是SVN仓库相当大(8,000个版本),并且包含许多分支和标记(旧的和新的)。
它几乎是一个标准的布局,其中包含了fetch、branches和tags指令的配置文件。
由于最老的分支和标记参考了第10个版本,这意味着每次svn fetch
都会从版本10开始读取整个仓库历史记录并向前推进,这可能需要花费数小时的时间在慢速连接上。
如果只跟踪主干,那就没问题了,但我仍然希望使git意识到新的分支和标记。
通常我查看我所在的分支上的git log -1
,并从注释中获取SVN版本,这样我就可以执行git svn fetch -r7915:HEAD
或类似的操作。我猜这就是git svn fetch --parent
的作用。但我为什么需要这样做呢?
我在Windows上使用TortoiseGit,它对git-svn
具有相当不错的支持,但由于TortoiseGit只运行git svn fetch
,所以我有点卡住了。
我做错了什么吗?我期望svn fetch
在第一次完成svn clone -s
后是一个快速操作。
git svn find-rev HEAD
因此,获取最后一次提取到远程HEAD修订版本的最短方式是:git svn fetch -r \
git svn find-rev HEAD`:HEAD` - Sam Hasler