我的工作涉及一个非常庞大和古老的代码库,很快就变得难以合并多个项目。我正在尝试将整个历史记录的代码库拉入git,以解决其中的一些问题。
然而,在指定命令以确保拉取整个历史记录时,git svn会导致许多问题。
svn仓库和执行拉取操作的客户机都是基于Windows 7(svn仓库在Server 2008机器上,但本质上相同)。
这些是我迄今为止尝试过的命令:
git svn clone "https://path/to/svn/" "local/repository/"
问题:这可以检索到一个功能性的存储库,但只能获取与存储库相关联历史记录的大约四分之一,由于大约一年前发生了一些重大升级,没有人能给我太多详细信息。我不知道为什么会出现这种情况。其中一些作为存储库一部分的分支与主干线没有共同提交,这严重影响了Git带来的合并好处。
git svn clone -T "https://path/to/svn/trunk/" "https://path/to/svn/" "local/repository"
问题:没有分支参数,无法正确检索分支。
git svn clone --b="https://path/to/svn/branches" -T "https://path/to/svn/trunk/" "https://path/to/svn/" "local/repository"
问题:出现以下错误:
subversion/libsvn_subr/path.c:115: failed assertion `is_canonical(component, clen)`.
0 [sig] perl.exe" 4432 open_stackdumpfile: Dumping stack trace to perl.exe.stackdump
堆栈跟踪是一个晦涩难懂的指针位置集合,提供的信息毫无用处。例如:
Frame Function Args
028F668 74F21194 (000000EC, 0000EA60, 00000000, 0028F6BC)