当前位置 : 主页 > 编程语言 > delphi >

Delphi Build Server:找出哪些项目受提交影响

来源:互联网 收集:自由互联 发布时间:2021-06-23
我目前正在努力提高构建机器的性能.每次提交(svn)后排队的标准构建大约需要40分钟.如果在提交时已经有排队的构建,我们不会添加另一个.因此每个构建都有1个提交的更改.由于提交可能
我目前正在努力提高构建机器的性能.每次提交(svn)后排队的标准构建大约需要40分钟.如果在提交时已经有排队的构建,我们不会添加另一个.因此每个构建都有1个提交的更改.由于提交可能没有对所有项目进行更改,因此只需重建受影响的项目即可减少构建时间.

我不知道如何找出需要构建的项目.有没有办法可靠地找出触发构建的提交影响了什么?我首先考虑通过.dpr文件并检查引用文件的更改,但不是所有文件都列在那里,因为我们也使用搜索路径…

如果没有,是否至少有办法确定项目是否肯定不受影响?老实说,我不太清楚如何处理这个问题……

以下不是您问题的“答案”,但可能有助于进一步思考.

撇开给定项目使用的其他类型的资源(例如.RC和.Inc文件),不知道哪些源文件,包括它使用的所有单元,我看不出你怎么能证明这个命题“这个项目将会不受影响.“通过给定的提交.

另一方面,假设您可以生成由提交更改的项目和源文件列表,因此通过偶尔重新编译所有项目,您可以获得由此生成的DCU列表.

通过对源文件的不同更改集重复上述过程几次,您应该能够收集.Pas更改和重新编译的结果.DCU之间以及重新编译和生成的DCU项目之间的一些统计相关性.

对这些相关性的分析可能允许您确定哪些项目在给定时需要重新编译的可能性大于X%.Pas文件已更改.

我想你最终会得到一些启发式方法,可以确定在给定单元的变化和一些确定性规则之后应该重新编译哪个项目.显而易见的是,一旦观察到对单元A的改变引起项目Z的重新编译,每当A随后改变时,Z应该被重新编译.当然,一旦项目被确定性规则标记为肯定,就不需要考虑提交中更改的其他源文件.

另一件事是,您可以侧面解决需要分析.Pas文件USES依赖关系的问题,以确定给定项目依赖于哪些.Pas文件,通过执行项目的完整构建并生成生成的.DCU列表结果.

顺便说一句,因为这个问题似乎都是关于列表和规则的,所以在Prolog中编程会很有趣(Amzi Prolog有一个很好的Delphi逻辑引擎包装器,我过去曾用过类似的东西).

网友评论