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

时间:2009-09-22 10:03:53

标签: svn

我想知道是否有一些技巧可以保存存储库中的文件,该文件将由任何签出存储库的人提取,但除非执行某种显式操作,否则永远不会将其提交到存储库。

基本上,我正在寻找的方法是让文件具有默认值,可以在本地修改而不影响存储库。

我知道有两种方法可以做到这一点,但我正在寻找更好的方法:

  1. 让开发人员制作一个忽略提交文件的更改列表。 (亲:项目开箱即用, con:一些开发人员可能会无意中检查与其本地配置相关的更改。)
  2. 使用扩展名(例如.default或.template)在存储库中保留该文件的副本,并让开发人员复制该文件。 (亲:没有无意中检查更改的风险, con:在没有复制模板文件的情况下无法编译。)
  3. 这两个解决方案都需要开发人员的额外操作,我担心我不能相信每个人都会遵循正确的程序......有没有办法让开发人员对流程透明?

3 个答案:

答案 0 :(得分:3)

不幸的是,我从来没有见过“简单易用的”方式。

我通常使用您的2)解决方案,基于具有某种.default扩展名的文件。


但是,可能的解决方案是使用一些预提交的SVN挂钩,即:

  • 检查受当前提交
  • 影响的文件列表
  • 如果某个特定文件在该列表中,则拒绝提交

并且,作为安全预防措施,有一天,您需要修改其中一个“不可修改”的文件,您可能希望在commit-comment上添加一个测试:

  • 如果它包含类似“ FORCE COMMIT ”的内容,
  • 然后,不要拒绝提交,即使它影响其中一个不应修改的文件。

我从未测试过这种精确的情况,但我已经看到预先提交的钩子用于确保某些条件,例如“每次提交必须有超过X个字符的注释” - 所以它应该是可能的......


有关更多信息,您可以查看Implementing Repository Hookspre-commit

我希望您能够获取受当前提交影响的文件列表...查看this article,似乎可以使用svnlook

答案 1 :(得分:2)

我会使用您的方法#2,然后向应用程序添加防御性代码,检查开发人员是否正确创建本地文件,并在他们弄错时提醒他们。

如果您的项目与我所做过的其他项目一样,那么新的开发人员在拥有有效的工作树之前可能需要检查清单。将其添加到该列表中,并使应用程序尽可能地检查其正确性。

答案 2 :(得分:1)

我正在使用预构建操作跟踪您的第二个方法,该操作将文件复制到正确的位置,根据所选的构建配置更改扩展并根据需要进行修改。在此方法中,不存在意外提交的风险项目开箱即用。