必须掌握svn分支创建与合并完整操作链:先update确保副本最新,用url执行svn copy创建分支,checkout到独立目录开发,再通过svn merge正向或指定修订范围合并回trunk,最后验证并删除分支。

要在团队协作中安全隔离新功能开发、避免污染主干代码,必须掌握SVN分支创建与合并的完整操作链——从本地工作副本准备到最终提交,每一步都影响后续集成稳定性。
创建功能分支
第一步:确保当前工作副本已更新至最新版本,执行 svn update。若跳过此步,后续分支将基于陈旧修订版,导致遗漏他人已提交的关键修复。
第二步:在仓库URL层级执行复制操作,命令为 svn copy https://svn.example.com/repo/trunk https://svn.example.com/repo/branches/feature-login -m "Create feature-login branch"。注意必须使用完整仓库URL,【不能用本地工作副本路径】,否则会报错“URL required”。
第三步:检出新分支到本地独立目录,运行 svn checkout https://svn.example.com/repo/branches/feature-login ./feature-login-work。这一步不可省略——直接在trunk工作副本上切换分支会引发混合修订版风险,后续提交可能意外覆盖其他分支变更。
在分支上开发并提交代码
进入 ./feature-login-work 目录,修改源文件、添加新模块,全部完成后执行 svn add 添加新增文件。
执行 svn commit -m "Implement OAuth2 login flow" 将变更提交至分支。此时所有改动仅存在于 branches/feature-login 路径下,trunk和其他分支完全不受影响。
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
这一步操作起来很简单,直接把文件拖进去就行。但要注意:提交前务必再次 svn status 确认无未跟踪文件残留,否则上线时可能缺失关键配置。
将分支变更合并回主干
方法一:正向合并(推荐用于首次集成)
先切换到本地trunk工作副本目录 → 执行 svn merge https://svn.example.com/repo/branches/feature-login → 运行 svn status 查看冲突标记(C)→ 手动编辑冲突文件,保留需要的逻辑 → svn resolved <file></file> 标记解决 → svn commit -m "Merge feature-login branch into trunk"。
方法二:指定修订范围合并(适用于分批集成)
若只想合并分支上某几次提交,用 svn merge -r 1234:1256 https://svn.example.com/repo/branches/feature-login。该命令只拉取1234到1256之间的变更集,避免引入尚未测试通过的中间状态。
注意:合并后必须立即提交,否则工作副本处于“合并待提交”状态,下次update可能触发二次合并冲突。
验证合并结果并清理分支
在trunk工作副本中运行 svn diff -r PREV,检查刚合并进来的代码是否与分支最后一次提交完全一致。差异过大说明合并过程有遗漏或误删。
确认无误后,可删除已合入的分支:执行 svn delete https://svn.example.com/repo/branches/feature-login -m "Remove merged branch"。SVN不支持物理删除,该操作只是将分支路径从HEAD版本移除,历史记录仍完整保留。










