我已经阅读了有关此问题的SO上的许多问题,但我找不到适合我们情况的任何好建议。我继承了这个工作流程,我正努力让它变得更好。
我们的设置
我们的工作流程
svn log
调用来寻找上游依赖项)。 我们的问题
svn status -u
会告诉我们哪些文件不是最新的,但通常不是一个清晰的功能图片。我所知道的
上游依赖关系示例
svn update file1 file2 file3
。多网站结构信息
我确信还有其他一些人在努力解决类似的问题,我希望能从互联网上的聪明人那里获得一些见解。如果我说的话似乎很清楚,请随时提问!
答案 0 :(得分:1)
好的,有几点想法:
对于这种工作流程,使用带有流模型的SCM(如Accurev或ClearCase)可以做得更好。在流模型中,工作从每个开发人员的流流向集成流,然后流向QA流,然后发布流(或任何最佳工作流)。只有准备好进入下一阶段的工作才会升级,并且可以单独完成这些工作。
正如deceze所说,您需要更加模块化地分解,但您还需要将其与本地化系统相结合,其中特定于客户端的功能可以覆盖代码的特定部分。我在PHP中完成的一种方法是实现一个PHP文件导入包装器,它首先查找特定于客户端的PHP文件版本,如果它不存在,则加载通用版本。
function importModule($module, $clientId){
if(is_file("${clientRootDir}/${clientId}/${module}.php")) {
import("${clientRootDir}/${clientId}/${module}.php");
} else {
import("${defaultRootDir}/${module}.php");
}
}
使用这种技术,您可以优雅地覆盖网站仅为该客户端工作的部分方式,并且为该客户端工作该功能的人员正在使用完全不同的文件,因此它们不会相互碰撞。 我不确定你是否已经这样做,这就是你所说的“位置模型”
最后,有了这么多不同的“虚拟网站”进行测试,通过添加自动化单元测试(一个PHPUnit)和持续集成,当软件一直运行到集成阶段时自动启动测试,您将受益匪浅。
答案 1 :(得分:1)
您的工作流程可以改进,以下是我的建议列表: