git svn clone没有检出所有目录

时间:2009-06-30 19:27:34

标签: svn git git-svn

我在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。

3 个答案:

答案 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)

你可以尝试

svn2git

git svn clone  svn+ssh://host/path project_name --trunk=trunk/*

在git 1.6+中有某种形式的深度克隆,但我不确定这是否是正确的语法