我在SVN有一个项目,我试图用git-svn克隆它。我按照git-svn docs中的示例进行了操作。
git svn clone svn+ssh://host/path/trunk project_name
命令已完成且没有错误消息,但是克隆的项目不包含SVN中项目的所有目录。
在顶层,我的SVN项目有......
$ svn ls svn+ssh://host/path/trunk
README
Rakefile
app/
config/
db/
doc/
lib/
log/
public/
script/
test/
tmp/
vendor/
克隆后,我在当地......
README
Rakefile
app
config
doc
public
script
test
还有一些子目录缺失。
更新
在同一主机上实验性克隆了另一个项目。似乎工作正常。这一个有什么特别之处?没有什么我能想到的,除了我刚刚创建它并在克隆之前将其导入SVN。这会有所作为吗?
尝试创建一个全新的项目,导入到SVN并进行克隆。得到相同的结果,同样缺少dirs。
答案 0 :(得分:11)
据我所知,git不跟踪空目录:
http://git.or.cz/gitwiki/GitFaq#CanIaddemptydirectories.3F:
也就是说,目录永远不必添加到存储库中,并且不会自己跟踪。
这有意义吗?丢失的目录是否为空?
答案 1 :(得分:1)
你确定你的SVN没有使用某些svn:external(见评论)吗? 有关该流程的详细信息,请参阅文章"moving from svn to git"
svn-git
真的应该警告你,它不支持取外部 我通过注意到svn log
没有检查这些文件然后看到我做了一个干净的svn checkout
它是为了获取vendor / plugins目录的外部来了解到的。所以,我决定只是逐字地提取vendor / plugins目录,分离外部引用,然后在升级时移动到git子模块。
我真正想做的,但没有看到怎么做,是将插件代码作为一个http URL引用并保存为子模块,这样我就可以方便地引用源位置和修订版
答案 2 :(得分:1)
你可以尝试
或
git svn clone svn+ssh://host/path project_name --trunk=trunk/*
在git 1.6+中有某种形式的深度克隆,但我不确定这是否是正确的语法