支持LAN存仓库、公网Web服务器存工作副本的版本控制系统选型咨询
选型结论
首选Subversion(简称SVN),是当前唯一能完全匹配你部署要求的主流版本控制系统,对应架构参考:
适配原因
- 完全满足「仓库仅内网部署、不暴露公网」的要求
SVN的FSFS格式仓库可以直接存放在局域网的SMB/NFS共享路径下,内网PC不需要额外部署独立服务端进程,直接通过file://协议即可访问仓库完成所有版本操作,仓库数据全程不会流出局域网,完全符合访问控制要求。 - 完美适配公网WebDAV存放工作文件的要求
SVN的工作副本就是带少量隐藏元数据的普通文件目录,没有特殊文件系统依赖,你可以直接把工作副本checkout到公网服务器的WebDAV目录下:只要本地PC同时能访问LAN共享路径、挂载好公网WebDAV网络盘,就能正常执行编辑、提交、更新操作,不需要给公网服务器安装任何版本控制相关的服务端组件。 - 原生兼容WebDAV协议
SVN本身的版本控制Web扩展就是基于WebDAV实现的,如果你后续不想映射本地网络盘,也可以直接通过HTTP地址对接WebDAV目录操作,适配成本极低。
不推荐其他版本控制系统的原因
- Git/Mercurial等分布式版本控制系统完全不适用:这类系统的每个工作副本都会存储完整的仓库全量历史,把工作副本放在公网等于把整个版本库暴露在公网,直接违反「仓库仅内网可访问」的核心要求;同时这类系统对文件系统的IO一致性、元数据操作可靠性要求很高,放在WebDAV这类网络文件系统上极易出现仓库损坏、操作报错的问题。
- CVS等老旧版本系统:官方已经停止维护,且对网络路径存放仓库、WebDAV工作目录的兼容性存在大量已知bug,不建议使用。
最小部署操作参考
- 在局域网共享路径下创建SVN仓库,在内网可访问共享路径的PC上执行命令:
注意创建时选择默认的FSFS存储格式即可,不要选择Berkeley DB格式,后者不支持放在网络共享路径下。# 替换成你实际的局域网共享路径 svnadmin create /mnt/lan_share/your_project_repo - 将公网支持WebDAV的工作目录挂载到本地PC(Windows可直接映射网络驱动器,macOS/Linux可通过
davfs2等工具挂载)。 - 在挂载好的WebDAV目录下拉取仓库工作副本:
后续直接在WebDAV对应的目录下编辑文件即可,需要提交、更新版本时,在内网环境下执行对应SVN命令即可完成操作。# 替换成实际的LAN仓库路径、WebDAV挂载路径 svn checkout file:///mnt/lan_share/your_project_repo /mnt/webdav_mount/project_workdir
小提示:如果你的公网WebDAV服务文件锁支持不完善,尽量避免多用户同时操作同一个工作副本下的
.svn隐藏元数据目录,普通业务文件的编辑不会受影响。
内容的提问来源于stack exchange,提问作者Alexander Behling
相关产品推荐
相关产品推荐

