GIT - 跨平台的模糊/清理过滤器?

6
我是一家规模相当大的组织的一部分,开发人员分布在不同地理位置,并使用Windows、OSX和Linux开发环境的混合方式。
我之前提出了一个问题,导致我想要使用clean/smudge过滤器:将GIT存储库中的文件标记为暂时忽略 但是...如何编写跨平台的过滤器脚本呢?我不想要求开发人员安装额外的脚本环境。有什么最佳实践吗?是否有任何方法可以使过滤器在服务器端运行(我们使用github)?
2个回答

1

这取决于默认安装了什么。

在我们的Solaris/Linux/Windows环境中,我们使用perl脚本,但不是每个操作系统都有一个脚本:只有一个脚本能够识别它所执行的操作系统,并根据平台运行适当的代码。

这允许将通用函数隔离在脚本的与平台无关部分中,同时在同一脚本中处理路径和其他特定命令的操作系统专用子例程,版本化一次。

关键是不要引入操作系统分支,这会导致一些“元数据泄漏”:一些与版本化数据(在“测试”或“修复”等分支中)无关的信息(操作系统)将存在于特殊分支中。
这不实用:如果您需要特殊版本的这些脚本,则“fix”分支是什么?
然后,您会为它们创建“fix-Windows”和“fix-Unix”分支,还是您宁愿在“fix”分支中简单地修改该脚本,提交并完成呢?


@Marc:我已经扩展了我的答案,并对这些脚本的管理方式进行了一些评论。 - VonC

0

如果您需要在服务器上运行一个涂抹/清理脚本,那么就会出现问题。涂抹/清理应该只在有工作文件夹的情况下使用。您可以根据所在平台拥有不同版本的这些脚本。

最好的方法是每个平台只有1个脚本版本。有些可以重复使用 - 比如如果您有msysgit。然后,只要您使用相同版本的bash,您就能像在Linux上一样使用相同的脚本。


1
我该如何为不同平台指定脚本的不同版本?这些脚本应该放在代码库里吗? - Marc Hughes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接