git svn clone导致空目录

时间:2012-08-15 08:58:16

标签: git svn

我有一个带项目结构的svn存储库:

/root/projectA/trunk
/root/projectA/branches
/root/projectA/tags

/root/projectB/trunk
/root/projectB/branches
/root/projectB/tags 

我想克隆projectA。我跑的时候:

git svn clone -r <revision number>:HEAD <url>/root/projectA

我没有错误,并且在新的projectA目录下创建了一个git存储库。但是该目录为空。我错过了吗?

8 个答案:

答案 0 :(得分:42)

我的问题是使用-s--stdlayout,因为我的svn repo没有标准布局(主干,分支,标签)。

答案 1 :(得分:20)

以下命令完成了这项工作:

  git svn clone -r HEAD <url>/root/projectA 

答案 2 :(得分:10)

对于包含authors-file选项的任何人,git svn clone如果在提供的作者文件中遇到没有查找值的作者,将完全停止。如果您没有注意,git对此的“警告”可能看起来像是repo已完成克隆,并且没有说明该过程未完成。除了.git。

之外,repo的目录也是空的

如果添加缺少的作者,然后重新运行完全命令,git将在停止的位置继续。

答案 3 :(得分:2)

我遇到了同样的问题,它通过使用--no-metadata参数解决了。在您的情况下,这将等于

git svn clone -r <revision number>:HEAD <url>/root/projectA --no-metadata

答案 4 :(得分:1)

如果您使用HTTP或HTTPS传输(即您的存储库URL以HTTP [s]开头),则需要提供有效的 SVN 用户名。

git svn clone -s https://svn.example.com/root/projectA --username <SVN username>

-s是--stdlayout

的别名

但是,我只需要指定--username选项一次,后续调用没有它。我猜它会缓存用户名。

答案 5 :(得分:1)

有一个类似的问题,执行&#39; git reset - hard HEAD&#39;在目录中似乎创建了文件。

.git / objects非常大,所以我猜这些文件是从svn导入到git中的,它们还没有被检出,或者其他东西。

答案 6 :(得分:1)

在我的情况下,克隆操作没有正确完成。结帐中途git svn clone会失败。一旦我解决了问题,它就会在克隆操作后自动进行结账 - 不再是空文件夹。

[更新] 以下是我的案例:

尝试git svn clone --preserve-empty-dirs <repo>对我失败了。在搜索网后,我找到https://www.semitwist.com/articles/article/view/the-better-svn-git-guide,其中部分说:

  

这部分有点烦人。从v1.7.7开始,Git有一个--preserve-empty-dirs。问题是,该死的东西坏了。如果你试图按原样使用它,整个操作可能会在中途失败。它必须修复。

     

首先,找到你的git-svn文件:

     

$ find / 2&gt; / dev / null | grep git-svn

     

$ find 2&gt; / dev / null / -type f | grep -l&#34;无法剥离&#34;

     

对我来说,它位于/ usr / libexec / git-core / git-svn。

注意:它不再是git-svn(至少不在git 2.7.0中)。我在/usr/lib/perl5/vendor_perl/5.22/Git/SVN/Fetcher.pm找到了它。

在您喜欢的编辑器中打开目标文件:

sudo <your-favorite-editor> path/to/file

  

现在,在这个git-svn文件中,搜索die "Failed to strip path。 ([取决于您的git版本],它[可能]位于第4583行附近。将die更改为print并保存。您的git-svn现已修复。

git svn clone --preserve-empty-dirs <repo>现在应该按预期运行。

答案 7 :(得分:0)

我无法检查这是否有效,但请尝试:

git svn clone --stdlayout <url>/root/projectA/