Subversion - 处理代码生成

Vid*_*get 9 svn version-control

我们有一个我们想要与Subversion一起使用的Web应用程序框架.我们在设置它之前已经尝试了几次,但是我们的应用程序的代码生成部分导致了问题.

问题是来自一个开发人员的生成代码可能比另一个开发人员更新文件,但新文件的内容可能更旧,因为作为代码生成基础的代码和xml文件已更新为开发者nr2.

我们研究过的一个解决方案是排除代码生成的文件,但我们经常会获得生成的新文件,并且它们会自动添加到存储库中,除非我们记得将其排除,并且我们必须手动检入最新生成的文件文件.你怎么知道你是否有最新生成的文件?

有关如何在Subversion中解决这个问题的任何建议?

Joh*_*lla 24

决定Subversion中是否存在某些内容的最佳方法是记住它是一个版本控制系统.如果你不需要记住它是如何随时间变化的,那就不需要了svn.用于svn:ignore从此类考虑中排除文件.

这就是这种情况:您不关心生成的文件如何随时间变化,只关注用于生成它们的原始代码.这意味着他们应该被排除在Subversion之外.您可以使用预提交挂钩执行此操作 - 例如,强制执行所有代码生成的文件不应该提交.我对这个策略有一个最喜欢的短语:"版本的配方,而不是蛋糕."

你怎么知道你是否有最新生成的文件?

究竟; 你没有,因为生成的文件依赖于用于创建它们的源.下一步是确保您的构建过程在给定初始源代码的情况下自动生成这些文件,但如果您不知道如何执行此操作,那么这可能是一个单独的StackOverflow问题.

  • +1."版本的食谱,而不是蛋糕" - 非常好! (4认同)

Jon*_*ker 10

我们研究的一个解决方案是排除代码生成的文件

是! 一千次是的!永远不要对可以从其他文件生成的文件进行版本控制.而是将生成规则添加到makefile(或其他构建脚本).

它们会自动添加到存储库中

什么是自动添加它们?据我所知,我总是不得不手动添加文件.如果自动添加的工具是错误的,那么修复该工具是否正确?

除非我们记得排除它

你有没有生成工具添加评论说"由$ TOOL自动生成的文件",并添加一个subversion挂钩,它会抓取该注释的文件并拒绝它们.为代码生成工具做出适当的规定; 例如:如果文件包含"自动生成"注释,如果它在同一行的注释中也有"svn rejection except",则无论如何都要添加它.

你怎么知道你是否有最新生成的文件?

通过最新的配方生成它,这是最新的subversion提交.