如何在git svn create-ignore之后获得单个.gitignore

Ada*_*ura 12 svn git git-svn

我使用Git导入了SVN存储库:

git svn clone --preserve-empty-dirs --stdlayout svn+ssh://... SVN.git
Run Code Online (Sandbox Code Playgroud)

它最终确实取得了成功,虽然它在几次失败的情况下失败并且我不得不"重新启动"

git svn fetch
Run Code Online (Sandbox Code Playgroud)

然而,最终似乎一切都很好.(虽然现在写作时我开始怀疑我是否应该提供--preserve-empty-dirs额外的fetches?编辑: 不,我不应该.请看我的评论.)

然后我想创造.gitignore,所以我做了

git svn create-ignore
Run Code Online (Sandbox Code Playgroud)

这也成功了.

但最终的结果并不令人满意.它确实.gitignore在许多文件夹中生成了大量文件.似乎每次SVN都有svn:ignore属性时Git创建了相应的.gitignore文件.

虽然我想将它们合并到一个根.gitignore文件中.这可以通过git实现,因为它更加灵活,忽略允许在带有通配符(或没有通配符)的子目录中忽略.无论如何,我认为可以在根处自动将这些"子.gitignore"转换为单个"子".

而且我想拥有它,因为"SVN人"对我承诺超过二十个.gitignore文件感到不满意......

Ada*_*ura 25

我找到了解决方案.您必须使用show-ignore而不是create-ignore将输出保存到文件.

因此,在克隆存储库后执行以下命令:

git svn show-ignore > .gitignore
Run Code Online (Sandbox Code Playgroud)

从您拥有该.git目录的存储库根目录.

  • 当我这样做时,它创建了一个带Unicode编码的.gitignore文件.这使得忽略无声地失败,直到我手动将.gitignore的编码更改为UTF-8. (3认同)