注意:我在CLI git/git svn中看到过关于这方面的问题,但在TortoiseGit中没有看到。
我下载并安装了Git和TortoiseGit。我已经有了一个远程SVN存储库,并且安装了TortoiseSVN,如果这有什么不同的话。
在创建一个空目录后,我使用如下的右上下文菜单:
- Git克隆
- 输入我的SVN存储库的URL
- 输入我刚刚创建的本地目录
- 单击"来自SVN存储库"
- 取消选择标记和分支,因为我的SVN存储库没有它们
- 取消选中"发件人:"框(稍后会详细介绍)
当我点击OK时,会弹出一个窗口,说它正在连接到存储库,然后它会滚动浏览所有修订,直到r 1693,这是我的最新版本。它显示"成功",我的本地文件夹中有一个.git目录。但没有文件。
我对它进行了如下处理:
- Fetch
- SVN获取
- SVN回扣
- 拉动
- 将修订号更改为0
- 将修订号更改为1
- 将修订号更改为我的最新版本
SVN Fetch似乎是显而易见的选择。当我更改修订号时,克隆操作失败,并显示消息:
git did not exit cleanly (exit code 1) (16078 ms @ 12/16/2013 10:31:27 AM)
我将开始摆弄CLI,但我怀疑我也会遇到同样的问题。毕竟,这是一个非常基本的操作。非常感谢你的帮助。
对于其他看到这一点的人来说,问题是我选中了"trunk"选项,但我的svn存储库的设置方式使得我的目标位置没有trunk/目录。您必须假设git-svn确定路径的方式,或者在文档中查找更多信息。
尽管我的SVN存储库中有一个trunk文件夹,但它被命名为"trunk"(注意大写),但我也出现了与描述相同的症状。从SVN存储库进行克隆时,如果需要指定主干目录,则必须确保指定的名称准确(区分大小写)。
我在Linux上也遇到了同样的问题,因为它的存储库没有遵循SVN文件夹约定。基本上,在这些情况下,必须始终指定主干文件夹,否则不会克隆任何文件或文件夹。在命令行中,这是用-T
参数进行的,例如:
git svn clone file:///home/svn/my_project -T trunk_folder --stdlayout --prefix=origin/ my_project.git