svn不支持按文件类型禁止自动合并,正确方法是修改客户端配置:在subversion配置文件[helpers]区添加diff-cmd和diff3-cmd指向c:alse.bat,该批处理返回错误码使所有合并失败并标记冲突,从而强制手动处理。

SVN 本身不提供“禁止某类文件参与自动化合并”的原生属性配置。它没有类似 svn:merge-ignore 或 svn:prevent-merge 这样的内置属性。所谓“禁止自动化合并”,实际是指让 SVN 在更新(update)或合并(merge)时,对特定文件不尝试自动合并其内容,而是直接标记为冲突(conflict)或跳过处理——但这需通过间接手段实现,且仅适用于尚未纳入版本控制的文件或依赖客户端行为干预。
真正可行、被广泛验证的方法是:利用 Subversion 的 diff 工具机制,强制所有合并操作失败,从而让目标文件始终进入手动处理流程。这不是靠设置文件属性,而是修改客户端的 Subversion 配置。
✅ 正确做法:禁用自动合并(全局生效,非按扩展名)
该方法不区分文件类型,但可确保任何 .zip、.log、.iml 等敏感/不可合并文件在 update/merge 时不会被自动覆盖,而是报冲突:
打开 TortoiseSVN → 设置 → Subversion 配置文件 → 点击“编辑”
-
在
[helpers]区块下添加两行:diff-cmd = "C:\false.bat" diff3-cmd = "C:\false.bat"
(注意路径中双反斜杠)
Free Ride - Unlimited free AI下载一款AI工具,主要用于管理 OpenClaw 所使用的来自 OpenRouter 的免费 AI 模型。自动按质量对模型进行排序,配置回退机制以应对速率限制,并更新 opencla...,适合需要提升相关任务效率的用户。
-
创建
C:alse.bat文件,内容为:@type %9 @exit 1
✅ 原理:
diff3-cmd是 SVN 执行三路合并时调用的命令。返回非零退出码(exit 1)即表示合并失败;@type %9是为了防止输出为空导致本地文件被清空。
⚠️ 注意:此配置作用于整个客户端,影响所有文件,无法按扩展名精细化控制。
❌ 常见误解澄清
-
svn:ignore只影响未版本化的文件是否出现在svn status或能否被svn add,对已提交文件完全无效,更不干预合并逻辑。 -
svn:externals、svn:keywords、svn:eol-style等属性均与合并行为无关。 - 服务端 pre-commit 钩子可阻止提交特定扩展名(如
.zip),但无法控制客户端的 merge/update 行为。 - 没有
svn:merge-policy或类似属性支持 per-file 扩展名级合并策略。
✅ 替代建议:从流程上规避问题
若目标是保护某些扩展名(如 .xlsx、.pdf、.jar)不被误合并:
-
不提交它们:用
svn:ignore+pre-commit hook双重拦截(例如禁止提交.zip); -
只读权限控制:在
authz中对含敏感二进制文件的目录设为read-only,避免多人同时修改; -
约定规范:明确
.config、.properties等文本类文件才允许多人协作修改,其余交由专人维护。
这类文件本就不适合 SVN 的文本合并机制,强行合并易损坏内容,主动规避比事后拦截更可靠。










