如何在多个github转发上强制使用.crang格式



我使用多个C++github存储库,它们都共享(作为公司标准(相同的.clang格式文件。为了能够跟踪更改,我们决定将此文件放在一个单独的存储库中。我正在寻找一种将此文件中的修改发布到所有相关存储库的方法。手动操作是不可行的,因为我有很多存储库。

  1. 我想把这个存储库作为git子模块,但在这个解决方案中,我无法在repo的根目录中克隆子模块
  2. 我想把它克隆到一个目录中,并有一个到子模块的符号链接,但我可以在Windows中有符号链接吗?repos在Windows、Linux和Mac之间共享
  3. 将所有repo作为clang格式存储库的子模块,并有一个脚本来更新所有子模块并自动创建拉取请求
  4. 与3相同,但没有子模块,克隆每个repo并复制新文件你还有其他更好的选择吗

虽然子模块仍然是最好的选择(尤其是有关联的分支,这使得更新其内容像git submodule update --remote一样容易(,但在构建之前仍然需要预处理步骤。

我通常会编写一个build.bat脚本(比如这个(,负责设置环境和构建项目。

该脚本还可以检查根文件夹中是否存在.clang-format,如果不存在,则从子模块中复制它。

由于该存储库的每个用户都必须调用build.bat来…构建项目,所以他们甚至不必知道预处理步骤。


OP sagi在评论中添加:

但构建阶段可能会有点晚,因为我希望在编码时在IDE中进行格式化。

这就是.gitattributes文件中声明的内容筛选器驱动程序可以提供帮助的地方。

您仍然需要每个用户首先键入一个命令:

git config --global filter.clang.smudge 'script_install_clang'

您需要验证一个伪文件.clang-format.tpl,以便将该特定文件与smudge脚本关联起来。

但是,污迹脚本将在git clonegit checkout/git switch上自动调用,并且可以为您设置任何丢失的文件。

这样,一旦启动IDE,格式化文件就准备好了。

相关内容

  • 没有找到相关文章

最新更新