避免版本分叉的关键不是“让大家小心一点”,而是把同一份资料拆成唯一权威副本,并规定谁在什么条件下可以覆盖、合并或退回修改。若做不到唯一副本,退而求其次的做法是明确分叉窗口和合并责任人,并接受额外的人工比对成本。
很多冲突并非技术问题,而是对象定义不清。以你正在维护的产品参数页为例,如果三个人分别在改标题、改参数表、改下载附件,表面上都在动同一个页面,实际是三份不同粒度的资料。此时强行要求所有人锁同一个文件,会制造等待;反过来完全放开,又会让参数表与正文对不上。
可区分的证据是:改动是否必须同时生效。若标题、参数、附件必须同一次发布才成立,它们属于同一份资料,应进入同一版本线;若附件可以独立更新、正文不受影响,就可以拆成两条版本线,各自有责任人。前者的代价是编辑需要排队或走分支合并,后者的代价是发布时要检查跨资料一致性。
集中锁稿指同一时间只有一个人能编辑权威副本,其他人提交修改建议。它成立的条件是:资料改动频率不高、参与人数少、发布节奏允许等待。代价是编辑容易被打断,紧急改错字也要等锁释放。
分支合并指每个人在各自副本上改,再由指定人合并。它成立的条件是:改动可以按段落或字段区分、有明确的合并责任人、能接受合并后再校对一遍。代价是合并本身消耗时间,且两人改同一段落时仍会出现需要人工判断的冲突。
选择依据可以落到一个动作上:先统计一周内同一资料被两人以上在同一天改动的次数。如果这个次数很少,集中锁稿更省事;如果经常发生且改动位置分散,分支合并更现实。这个统计只说明协作压力,不能单独证明哪种方式更正确,因为改动次数少也可能只是因为大家都在等别人先动。
以你手上的一个页面为例,可按下面的顺序处理,每一步的结果决定下一步是否必要。
这套动作的结果是:分叉从“整页对整页”缩小到“字段对字段”,合并时更容易判断保留哪一版。代价是前期要花时间做字段清单,且字段越细,维护归属的成本越高。
假设甲改标题、乙改参数表、丙替换附件。若三者属于同一版本线,集中锁稿会让乙和丙等待,分支合并则要求合并人同时核对标题、参数和附件是否互相引用正确。若附件独立于正文,拆成两条版本线后,甲和乙仍可能冲突,因为标题里常包含参数值。此时更稳的做法是把“标题中的参数值”视为参数表的派生内容,标题归属人只能引用参数表当前版本,不能自行填写数字。
这个例子的判断依据不是谁改得快,而是改动之间是否存在派生关系。存在派生关系时,应指定唯一数据源;不存在派生关系时,才适合拆开并行。
发现两版不一致时,先做差异比对,再决定合并方向。比对结果通常有三类:一方多出内容、双方改了同一处、双方改了不同处。多出内容可经归属人确认后并入;同一处冲突必须由字段归属人裁决;不同处可直接合并,但合并后要重新检查跨字段引用。
如果无法判断哪版更新,不要用文件修改时间作为唯一依据,因为复制、同步和导出都会改变时间戳。更可靠的做法是回到变更记录和内容依据。若两者都没有,只能由归属人重新确认,并把这次确认补进记录。收敛动作完成后,下一步是检查同类资料是否也存在相同的分叉条件,而不是只修好当前这一页。