避免覆盖的关键不在“谁先改”,而在建立单一写入权:同一时刻只允许一个服务商对同一环境执行写操作。若两个服务商都持有生产环境的直接写入权限,任何约定都会在并发操作时失效,覆盖几乎必然发生。可行的做法是把其中一个降为只读或暂存区写入,另一个独占生产写入,再用文件哈希或提交记录核对最终结果。
很多团队已经开过会、分过工,甚至写了邮件确认“A负责模板、B负责插件”,但覆盖照旧。原因通常落在两个方向。
第一个解释是权限层面没有分离。两个服务商都拿到同一套生产环境凭据,都能直接编辑同一批文件或数据库记录。此时“分工”只是口头约束,任何一方在不知情时保存,都会把对方的改动抹掉。
第二个解释是同步方向错误。一方从本地或测试环境向生产推送,另一方直接在生产上改。推送动作会整体覆盖目标目录,把对方在线上的修改一并冲掉,哪怕两边改的是不同文件。
这两种解释对应不同的证据,不能靠“谁更细心”来区分。
要判断属于哪一种,先看被覆盖内容的范围和时间点。
一个假设例子:某站点由服务商甲负责主题模板、服务商乙负责表单插件。某次甲从测试环境向生产推送整个主题目录,乙前一天在生产上手动改过的表单样式文件正好位于该目录内,于是被覆盖。这里的证据是“丢失文件全部落在推送目录内”,指向同步问题,而不是权限并发。反之,如果丢失的是乙刚在后台编辑器里保存的页面内容,而甲并未推送,那就指向权限问题。
确定原因后,动作要落在权限和流程上,而不是再发一次分工说明。
执行后要观察一个结果:下一次发布后,被覆盖事件是否消失。如果仍然出现,说明还有未纳入管控的写入入口,比如某个旧账号、定时任务或第三方同步插件,需要继续排查,而不是回到“再沟通一次”。
如果站点暂时无法引入版本控制,退一步的做法是让写入方在每次发布前做一次完整备份,并记录备份时间与文件清单。发布后对比清单,确认没有非预期文件被改动。这个动作不能防止覆盖,但能把发现问题的窗口从“用户投诉”提前到“发布后几分钟”。
同时,把只读方的工作方式改为“提交变更说明加文件”,由写入方代为应用。这样即使没有提交历史,也有书面记录可查,责任边界清晰。
如果两个服务商都具备独立发布能力,且网站有版本控制,优先采用分支加单一写入方合并的方式,成本低且可追溯。如果网站规模小、没有版本控制,且其中一方只是偶尔做局部调整,那么让这一方彻底退出生产写入、只提供修改文件,是更稳妥的取舍。两种方案都成立,区别在于你能否承担“保留双写入权限但依赖人工协调”的残余风险。
无论选哪种,判断标准是一致的:当两个服务商同时接触同一网站时,是否只有一个能真正写入生产环境。只要这个条件不满足,覆盖就只是时间问题。