46

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

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

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

我想克隆项目A。当我运行时:

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

我没有收到任何错误,并且在新的 projectA 目录下创建了一个 git 存储库。但是目录是空的。我错过了什么吗?

4

8 回答 8

65

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

于 2015-09-11T17:44:12.593 回答
28

下面的命令完成了这项工作:

  git svn clone -r HEAD <url>/root/projectA 
于 2012-08-16T15:03:06.377 回答
15

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

如果您添加缺少的作者,然后重新运行确切的命令,git 将继续它停止的地方。

于 2016-03-22T19:17:05.677 回答
2

我遇到了同样的问题,并通过使用 --no-metadata 参数解决了。在你的情况下,这相当于

git svn clone -r <revision number>:HEAD <url>/root/projectA --no-metadata
于 2013-08-04T14:27:42.677 回答
1

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

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

-s 是 --stdlayout 的别名

但是,我只需要指定一次 --username 选项,随后的调用就可以在没有它的情况下工作。我猜它缓存了用户名。

于 2014-11-05T10:35:53.080 回答
1

有一个类似的问题,在目录中执行 'git reset --hard HEAD' 似乎会创建文件。

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

于 2015-04-07T12:23:38.517 回答
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 文件:

$ 查找 /2> /dev/null | grep git-svn

$ 查找 2>/dev/null / -type f | grep -l "剥离失败"

对我来说,它位于 /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 行附近。更改dieprint并保存。您的 git-svn 现在已修复。

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

于 2016-03-04T02:30:49.247 回答
0

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

git svn clone --stdlayout <url>/root/projectA/
于 2012-08-15T09:12:20.107 回答