直接结论:让两个服务商同时改同一网站,覆盖几乎不可避免,除非你先做一件事——把“谁在什么时候改哪一层”拆成互不重叠的写入通道,并且约定一个唯一的合并顺序。如果做不到,正确决策不是加沟通,而是暂停其中一方的写入权限,只保留读取。下面用一个假设情境把判断过程走完。
假设你的湘潭业务站已有稳定流量,原技术维护方负责日常修bug、改表单;新找的开发服务商负责首页改版和栏目重构。双方都拿到同一套源码和同一份数据库权限,约定“各改各的,改完合并”。结果第一周就出现:维护方修好的表单提交逻辑,被改版方整目录上传后回退;改版方调整的模板,被维护方的一次热修复覆盖。
这不是谁不专业,而是两条写入通道指向同一份文件。判断是否已经进入危险区,看三个证据:同一文件在短时间内出现两次以上修改时间变化;线上表现与某一方本地版本不一致;回滚一次后问题再次出现。出现其中任意两条,就应按“已冲突”处理,而不是继续观察。
两个服务商能否同时改,取决于改动是否落在同一层。可以按下面这组条件区分:
判断依据不是“谁的工作量小”,而是“是否存在同一份可写对象的交集”。交集为空才谈并行。
如果确认必须让两方都动手,可选通道只有三种,各自适用条件不同:
三种方式可以组合,但不能省略“唯一合并人”这个角色。没有合并人,分支和隔离都会在最后一步失效。
具体动作是:在冲突确认后,立即收回其中一方的写权限,只保留读取,同时导出当前线上完整文件与数据库备份。这个动作的结果会直接决定下一步——如果冻结后线上表现稳定,说明冲突源就是被冻结的那一方,可以让另一方继续完成,再安排被冻结方基于最新版本重新提交;如果冻结后问题依旧,说明还有第三个写入源(例如定时任务、缓存刷新或另一个未登记的账号),此时应先排查写入源,而不是恢复任何一方权限。
这一步的关键是“先冻结再判断”,而不是“先沟通再冻结”。沟通不能阻止文件被覆盖,权限可以。
要让上面的安排真正生效,两个服务商之间至少明确四件事,且写成可核对的文字:
这四项不涉及具体公司资质,只涉及交付边界。哪一方拒绝明确写入范围,哪一方就不适合参与并行改动。
回到最初的问题:两个服务商同时改同一网站,避免覆盖不靠默契,靠的是把写入通道拆开、把合并权收拢到一个人、并在冲突出现时先冻结再判断。做不到这三点,就该改成串行,而不是继续并行。