Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git svn克隆而不知道svn布局_Git_Svn_Migration_Git Svn - Fatal编程技术网

git svn克隆而不知道svn布局

git svn克隆而不知道svn布局,git,svn,migration,git-svn,Git,Svn,Migration,Git Svn,我正在进行SVN到Git的迁移,在使用Git SVN clone命令时,我需要提到--stdlayout选项。我的问题是作为一名管理员,我不应该关心SVN的布局。那么,在不知道svn布局的情况下,我如何使用git svn clone命令呢 如果SVN具有标准布局,我现在使用的是: git svn clone --stdlayout --authors-file=authors.txt <svn-repo>/<project> <git-repo-name>

我正在进行SVN到Git的迁移,在使用
Git SVN clone
命令时,我需要提到
--stdlayout
选项。我的问题是作为一名管理员,我不应该关心SVN的布局。那么,在不知道svn布局的情况下,我如何使用
git svn clone
命令呢

如果SVN具有标准布局,我现在使用的是:

git svn clone --stdlayout --authors-file=authors.txt <svn-repo>/<project> <git-repo-name>
git svn clone --trunk=/trunk --branches=/branches --branches=/bugfixes --tags=/tags --authors-file=authors.txt <svn-repo>/<project> <git-repo-name>
git svn clone--stdlayout--authors file=authors.txt/
如果不是标准布局:

git svn clone --stdlayout --authors-file=authors.txt <svn-repo>/<project> <git-repo-name>
git svn clone --trunk=/trunk --branches=/branches --branches=/bugfixes --tags=/tags --authors-file=authors.txt <svn-repo>/<project> <git-repo-name>
git svn clone--trunk=/trunk--branchs=/branchs--branchs=/buggfixes--tags=/tags--authors file=authors.txt/

谢谢你的帮助。谢谢。

对于一次性迁移
git svn
不是转换存储库或存储库部分的正确工具。如果您想将Git用作现有SVN服务器的前端,那么它是一个很好的工具,但是对于一次性转换,您应该不要使用
Git SVN
,而是
svn2git
,它更适合此用例

有很多工具称为
svn2git
,最好的工具可能是来自的KDE工具。我强烈建议使用
svn2git
工具。这是我所知道的最好的一款,它的规则文件非常灵活

您将能够轻松地配置
svn2git
s规则文件,以从当前的SVN布局生成所需的结果,包括可能存在的任何复杂历史记录

如果您不是100%了解存储库的历史记录,
svneverever
from是在将SVN存储库迁移到Git时调查其历史记录的一个很好的工具


尽管
git svn
更容易开始,但以下是使用KDE
svn2git
而不是
git svn
更优越的原因,除了它的灵活性之外:

  • 通过
    svn2git
    (如果使用了正确的历史记录),可以更好、更清晰地重建历史记录,对于具有分支和合并等更复杂的历史记录尤其如此
  • 这些标记是真实的标记,而不是Git中的分支
  • 使用
    git svn
    时,标记包含一个额外的空提交,这也使得它们不是分支的一部分,因此正常的
    fetch
    将不会获取它们,直到您将
    --tags
    交给命令,因为默认情况下,也只获取指向已获取分支的标记。使用正确的svn2git标记就可以找到它们所属的位置
  • 如果您更改了SVN中的布局,您可以使用
    svn2git
    轻松配置它,使用
    git SVN
    您最终将丢失历史记录
  • 使用
    svn2git
    还可以轻松地将一个SVN存储库拆分为多个Git存储库
  • 或者将同一SVN根目录中的多个SVN存储库轻松组合到一个Git存储库中
  • 使用正确的
    svn2git
    比使用
    git svn

你看,有很多原因导致
git svn
更差,而KDE
svn2git
更优越。:-)

这是一次性迁移,然后只使用Git,还是要从Git克隆提交回SVN?@Vampile否这必须是一个完整的迁移,迁移后没有人可以在SVN上提交,因为它将成为只读。是的,我明白你的意思。我已经用git svn实现了迁移,尽管我还没有用复杂的历史记录进行过尝试。虽然在迁移之后,我将它托管在bitbucket、github或gitlab上,但我可以看到所有的历史、分支、标记,而且我还能够提交新的更改。如果我们有复杂的历史,也许你的建议更可取。你能告诉我你说“复杂的历史”是什么意思吗?因为我现在能够保留历史,而且它已经被记录在官方的atlassian页面上,用于svn到git代码库的迁移。“官方”的亚特兰西页面只是那些家伙提供的一个教程,它是为广大群众制作的,因为它更容易开始。或者他们只是不知道更多。除此之外,他们的教程afair还包含修复git svn的一些缺点,如在实际克隆之后向下移动标记和其他标记。在我看来,KDE
svn2git
总是优于
git svn
,即使是最简单的历史。如果不是因为其他原因,那是因为它的速度快了无数倍,更稳定。