gpt4 book ai didi

git - 如何使用 git-svn 创建空目录?

转载 作者:行者123 更新时间:2023-12-05 01:19:54 27 4
gpt4 key购买 nike

我正在尝试从现有 svn 存储库的一部分创建一个 git 存储库。我绝对需要保留空目录。我使用了 --preserve-empty-dirs 选项,但它没有像我预期的那样工作。

这是我使用的命令:

git svn clone --stdlayout --no-metadata --no-minimize-url --preserve-empty-dirs --authors-file=users.txt http://<url-to-svn-repo>/path/to/myproject/ myproject

运行完成后,我可以看到没有创建空目录。然而,查看 .git/config 似乎表明该进程成功检测到空目录:

...
[svn-remote "svn"]
noMetadata = 1
preserve-empty-dirs = true
placeholder-filename = .gitignore
...
added-placeholder = <path-to-empty-directory-1>/.gitignore
added-placeholder = <path-to-empty-directory-2>/.gitignore
added-placeholder = <path-to-empty-directory-3>/.gitignore
etc

有没有办法明确告诉 git 创建它列出的目录以及每个目录中的 .gitignore 文件?

最佳答案

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

有很多名为 svn2git 的工具,最好的可能是来自 https://github.com/svn-all-fast-export/svn2git 的 KDE 工具。 .我强烈推荐使用 svn2git 工具。这是我所知道的最好的可用规则文件,而且您可以非常灵活地使用它的规则文件。

您将能够轻松配置 svn2git 的规则文件,以从当前 SVN 布局生成您想要的结果,包括可能存在的任何复杂历史记录,包括从一个 SVN 生成多个 Git 存储库 repo 或将不同的 SVN repo 在一次运行中干净地组合到一个 Git repo 中,如果你愿意的话。如果您使用相应的命令行选项 empty-dirs,它还可以通过将 .gitignore 文件放入其中来正确保留空目录。

如果您不是 100% 了解存储库的历史,svneverever 来自 http://blog.hartwork.org/?p=763是一个很好的工具,可以在将 SVN 存储库迁移到 Git 时调查它的历史。


尽管 git-svn 更容易上手,但这里有一些使用 KDE svn2git 而不是 git-svn 的进一步原因除了它的灵 active 之外,它更优越:

  • 通过svn2git(如果使用了正确的),历史重建得更好更干净,对于具有分支和 merge 等的更复杂的历史尤其如此
  • 标签是真正的标签,而不是 Git 中的分支
  • 使用 git-svn 时,标签包含一个额外的空提交,这也使它们不属于分支,因此普通的 fetch 不会得到它们,直到您给出 --tags 命令,因为默认情况下也只获取指向已获取分支的标签。使用适当的 svn2git 标签是它们所属的地方
  • 如果您在 SVN 中更改了布局,您可以使用 svn2git 轻松配置它,使用 git-svn 您最终将丢失历史记录
  • 使用 svn2git,您还可以轻松地将一个 SVN 存储库拆分为多个 Git 存储库
  • 或将同一 SVN 根目录中的多个 SVN 存储库轻松 merge 到一个 Git 存储库中
  • 使用正确的 svn2git 的转换速度比使用 git-svn 快数亿倍

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

关于git - 如何使用 git-svn 创建空目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45983121/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com