有条件的结论:只要两个服务商改的是同一套代码仓库、同一个CMS数据库或同一批线上文件,就必须先指定唯一写入方,另一方只通过受控的变更清单或合并请求提交。否则,无论谁先动手,后发布的一方都会覆盖先发布的内容。反例是:如果两家分别负责完全隔离的两套系统,例如一方只改旧站、另一方只建新站,且中间有一次性数据迁移,那么可以并行,但仍需约定迁移的截止点和冻结窗口。
覆盖不是单一现象,先定位它发生在哪一层,才能选对隔离方式。
判断方法很直接:让两家各提交一份“本次会改动的文件路径和数据库表”清单,比对交集。交集为空,才谈得上并行;交集非空,就必须进入下面的写入权安排。
指定一家持有代码仓库和发布权限,另一家只提交需求说明、文案、结构化数据或补丁文件。成立条件是:持有写入权的一方响应速度可接受,且另一方的交付物能被独立验收。这个方案最不容易出现覆盖,代价是沟通轮次增加。
两家都在同一仓库开分支,改动通过合并请求进入主干,由固定的人审核后发布。成立条件是:双方都愿意使用同一套版本控制流程,且有人负责解决冲突。合并请求里出现冲突文件,就是即将覆盖的信号,必须在合并前处理,而不是上线后补救。
把站点拆成互不重叠的部分,例如一方只负责产品页模板,另一方只负责博客内容和其样式。成立条件是切分边界清晰,且共享组件有明确的归属人。边界模糊时,这个方案会退化成互相覆盖。
旧服务商退出、新服务商接手,是覆盖风险最高的时刻。此时不要直接让新的一方全量替换,先做三件事:
实际动作示例:假设旧服务商负责的是一批产品详情页,新服务商要重做站点结构。可以先让新服务商输出一份“保留、改写、删除”的页面映射表,再按映射表逐项迁移。结果是:保留页的URL和内容不动,改写页走重定向,删除页返回合适的状态码。这个动作会直接影响下一步——只有映射表确认后,才开放新服务商的发布权限。
如果两家的改动都通过同一个自动化流程进入线上,而这个流程每次发布都会用某一份完整副本覆盖目标环境,那么分支、目录切分、冻结窗口都可能失效,因为覆盖发生在流程内部,而不是人为操作。这种情况下,先修发布流程,再谈分工。另一个失效情形是:双方各自维护一份“权威内容源”,且没有约定哪一份为准,此时任何同步动作都会来回覆盖。
先让两家各交一份改动范围清单,比对交集;有交集就指定唯一写入方或改用合并请求;没有交集就写下冻结窗口和迁移截止点,并确认发布流程不会整站推平。完成这一步之后,再决定谁在什么时间点获得发布权限。