【问题标题】:.editorconfig in shared Git repository共享 Git 存储库中的 .editorconfig
【发布时间】:2019-02-10 16:48:17
【问题描述】:

我已经准备好要在多个 Git 存储库中使用的 .editorconfig 文件。每个存储库都包含一个 Visual Studio 解决方案 (C#)。我的第一个想法是将.editorconfig 文件放在自己的存储库中,然后将其作为子模块包含在所有“解决方案存储库”中。但是问题是:子模块将位于子文件夹中。因此,包含的.editorconfig 将不会应用于整个项目/解决方案(而只会应用于子文件夹及其子文件夹)。在我看来,我也无法在解决方案配置文件 (.sln) 中指定解决方案范围内的 .editorconfig 的路径。

在多个 Git 存储库之间实际共享单个 .editorconfig 文件的最佳方法是什么? .editorconfig 文件仍然需要进行版本控制(因此在用户之间共享),即。没有本地 editorconfig 配置。

【问题讨论】:

  • 尝试使用单个共享文件实例的想法来解决这个问题比定期提交给所有目标存储库的单个文件定义要复杂得多。
  • 这是一种非常个人化的看待事物的方式。对我们来说,这种方法已被证明非常有用。更是如此,因为我们的共享存储库还包含其他配置文件,如拼写检查字典、eslint 配置和多个 .ruleset 文件。
  • 我不会称之为个人化,有时复制比分享更容易或更好,尤其是在规模上。在我的工作中,我们有大约 1.5K GH 存储库和大约 400 名程序员,一些存储库处于休眠状态,但其余的则以不同的速度移动。如果我们更新了一个共享的编辑器配置,这可能意味着将计划外的工作强加于他们正在处理的事情之上,而他们无法退出或推迟。如果我们推送覆盖了 editorconfig 的副本,他们可以只恢复该提交并在他们能够处理它时重新应用该文件..

标签: git visual-studio editorconfig


【解决方案1】:

我自己找到了一个解决方案,使用共享存储库作为我想要的子模块:这是一个符号链接!

例如,如果您的子模块名为 Global,请进入解决方案的根目录并通过以下方式在子文件夹 Global 中创建指向真实文件的符号链接:

mklink .editorconfig .\Global\.editorconfig

可以像任何其他文件一样提交和推送此链接。 Gitea(我用作服务器)甚至显示一个小箭头作为文件符号的叠加层。显然它知道它只是一个符号链接。当我在 Windows 机器上克隆此存储库时,符号链接按预期工作。也许它甚至适用于 *nix 系统;不过我没试过。

我撤回了这个解决方案:VS2017 (15.8.2) 不会立即接受更改。必须关闭并重新打开解决方案。 If you are using a real .editorconfig file changes are detected immediately since 15.8 Preview 3.

编辑:我们决定不提交到 Git 的符号链接,因为它曾经被 Gitea 搞砸了(可能是一个错误),而且因为我们有非 Windows 开发系统。相反,我们在项目文件<Error Condition="!Exists('$(SolutionDir).editorconfig')" Text=".editorconfig is missing. Please run $(SolutionDir)_post_clone_script.bat first." /> 中有一个“后克隆脚本”和一个条件错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-06
    • 2013-12-05
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多