在Subversion中将文件标记为“不提交”(不是本地)的存储库?

3
我在想是否有什么技巧可以将一个文件保留在存储库中,以便任何检查存储库的人都可以获取该文件,但是除非执行某种显式操作,否则该文件永远不会提交到存储库中。
基本上,我正在寻找一种方式,可以在不影响存储库的情况下本地修改具有默认值的文件。
我知道两种方法可以做到这一点,但我正在寻找更好的方法:
1. 让开发人员创建一个更改列表,以便在提交时忽略文件。 (优点:项目可以立即编译,缺点:某些开发人员可能会无意中提交与其本地配置相关的更改。)
2. 在存储库中保留文件的副本,并使用.default或.template等扩展名。让开发人员复制它。(优点:没有意外提交更改的风险,缺点:未复制模板文件时无法编译。)
这两种解决方案都需要开发人员采取额外的行动,我担心我无法相信每个人都会遵循正确的程序...有没有一种方法可以使过程对开发人员透明?

2
哦,我多么希望有这样的东西! - Joachim Sauer
3个回答

3
很遗憾,我从未见过一种“易于使用且开箱即用”的方法来实现这一点。通常我使用你提到的第二种解决方案,基于带有某种 .default 扩展名的文件。可能的解决方案是使用一些预提交 SVN 钩子,它会:检查当前提交所影响的文件列表;如果该列表中包含某些特定文件,则拒绝提交。作为一项安全措施,因为有一天你可能需要修改其中一个“不可修改”的文件,你可能希望在提交注释中添加一个测试:如果其包含类似于 “FORCE COMMIT” 的内容,则即使它影响了不应被修改的文件之一,也不要拒绝提交。我从未测试过这种精确情况,但我已经看到过预提交钩子用于确保某些条件,例如“每个提交的注释长度必须大于 X 个字符” - 因此应该是可能的...


如果需要更多信息,您可以查看实现存储库钩子pre-commit

我希望你能获取当前提交所影响的文件列表...根据这篇文章的介绍,使用svnlook似乎是可行的。


谢谢你的回答。我希望SVN内置了这样的功能,因为拥有本地配置文件并不是很罕见...但我会记住pre-commit SVN hook解决方案,并可能在某个时候实施它! - Blixt

2
我会使用你的第二种方法,并为应用程序添加防御性代码,检查开发人员是否正确创建了本地文件,如果出现错误则提醒他们。
如果你的项目和我之前做过的其他项目一样,可能有一个清单列出新开发人员必须在拥有有效工作树之前完成的任务。将此添加到该清单中,并让应用程序尽可能检查其正确性。

1
我正在使用您的第二种方法,通过预构建操作将文件复制到正确的位置,更改扩展名并根据所选的构建配置进行必要的修改。在这种方法中,没有意外提交的风险,并且项目可以直接构建完成。

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