-stdlayout在git svn clone中做了什么?

rip*_*234 18 svn git git-svn

我刚刚发现了一个关于从没有--stdlayout的克隆中恢复的问题.我没有找到这面旗帜的文件 - 这是做什么的?

Jör*_*tag 38

Subversion没有分支标记的任何概念.相反,通常只需将存储库的内容复制到目录中即可进行模拟.

为了git svn能够识别分支和标签以及主分支("主干"),您必须使用--tags(或-t),--branches(或-b)和--trunk(或-T)选项明确告诉它在哪里找到它们.

但是,许多Subversion存储库遵循Subversion书中列出的标准约定--trunk=/trunk --branches=/branches --tags=/tags.--stdlayout(或-s)对此约定进行编码,这样您每次克隆Subversion存储库时都不必传递相同的参数.

您可以在git-svn(1)手册页中找到此信息,您可以man git-svn通过内置的Git帮助系统在Unix下以独立于操作系统的方式访问该手册页git help svn.所有Git手册页也可以在Kernel.Org上获得,它们通常是您搜索时的第一个搜索结果git-svn(1).

  • ……很可能这已经改变了。如果是这种情况,请随时更新答案。您是否知道为什么 Subversion 开发人员觉得需要用如此不必要的复杂性来复杂化他们精美优雅的对象模型?我总是发现*不*将标签和分支的行为硬编码到对象模型中的自由和灵活性给了我 Subversion 的主要优势之一。我构建了一些相当复杂的存储库结构,这对于硬编码的标签和分支是不可能的。 (3认同)
  • 实际上,对于“stdlayout”匹配,参数是“--trunk=trunk --branches=branches --tags=tags”(不带前导“/”) (2认同)
  • @ BitLegacy01:我在4.5年前写过这个答案,那时,Subversion没有*branches*或*tags*的概念,而是只复制存储库的内容而不是改变它(在其中)如果副本的行为就像一个标签,通常位于名为`tags`的目录中,或者继续更改它(在这种情况下,副本的行为就像一个分支,通常位于名为`branches的目录中) ).主线开发通常发生在名为`trunk`的子目录中.我在4年多的时间里没有看过Subversion,所以,它可能...... (2认同)

kni*_*ttl 13

--stdlayout(-s)告诉应该将git-svn文件夹/branches导入为分支,并且该文件夹/tags是项目状态的快照,应该作为标记导入.主分支将设置为/trunk.

它相当于 --trunk=trunk --tags=tags --branches=branches