结论先行:只要两个服务商都具备服务器或后台的直接写入权限,覆盖就迟早发生,靠沟通纪律无法根治。正确做法是先确定唯一写入方,把另一方降为只读或离线交付;如果双方都必须实时改动,则必须把网站拆成互不重叠的写入域,例如一方只动模板与样式、另一方只动内容数据,并各自使用独立版本库。做不到这两点之一,就不该让两个团队同时在线操作。
覆盖的根源不是谁粗心,而是同一份文件或同一张数据表存在两个写入入口。常见表现是:A 服务商在服务器上直接改模板文件,B 服务商在后台或本地改同一文件后整体上传,后者会把前者的改动整段替换。此时即使双方都做了备份,也可能因为备份时间不同而互相回退。
判断是否已经进入危险状态,可以看三个证据:同一文件在短时间内出现两次修改时间、服务器上存在来源不同的压缩包或临时目录、双方各自维护一份“最新版”说明。出现任意一条,说明写入权已经重叠,继续并行只会放大问题。
条件一:只有一方需要改代码,另一方只做内容。此时把服务器、数据库和代码仓库的写入权交给代码方,内容方只使用后台账号,且后台账号不开放主题编辑、插件安装和文件管理权限。这样即使内容方频繁发布,也不会触碰模板文件。
条件二:双方都要改代码。这时必须引入版本控制,各自在独立分支提交,由固定的一方负责合并与上线。合并动作只能由一个人执行,上线前用同一份发布包,而不是各自往服务器传文件。
如果两个条件都不满足,例如双方都习惯直接连服务器改文件、都不使用版本控制,那么任何约定都只是临时的,覆盖只是时间问题。
有一种情况会让“唯一写入方”失效:网站使用了自动同步或一键部署机制,而两个服务商各自连接了不同的源目录。假设 A 方在服务器上直接修改,B 方随后从自己的本地目录执行全量同步,那么即使 A 方是名义上的唯一写入方,改动仍会被同步覆盖。此时问题不在权限分配,而在发布链路存在两个源头。
遇到这种情况,先停掉自动同步,确认当前线上版本,再决定保留哪一条发布链路。停用同步后如果页面仍能正常更新,说明另一条链路才是实际生效的入口,后续所有改动都应从该入口走。
验证通过后,再恢复正常的协作节奏;验证不通过就继续收紧入口,而不是增加沟通频次。沟通只能减少误操作,不能消除结构性的写入冲突。
先做一次写入入口盘点,把结果交给两个服务商确认,再决定是保留单写入方还是拆分写入域。盘点完成前,暂停任何一方对线上的直接改动,改为提交待发布内容。这样做的直接结果是:覆盖风险从“随时可能发生”变成“可定位、可复现”,后续无论是继续合作还是更换服务商,交接都有明确依据。