当前开发仓库

主开发者库(GitHub)

在OpenVPN 2.3-alpha1 之后OpenVPN项目架构中引入了几个重大改动,比如把几个大的代码块从主代码树上剥离成子项目。

  • openvpn: 一个常规开源项目,使用基于autotools的GNU构建系统并且和其他项目一样它的构建系统只用于自身的构建。

  • openvpn-build: 为了构建各种各样配置的OpenVPN而独立出来的一个项目。这个项目被分成以下几个部分:

    • generic: 一个使用交叉编译的通用构建项目,包含完整的依赖关系。
    • msvc: 一个MSVC构建,使用微软自家的msbuild系统。
    • windows-nsis: 这是一个WIndows安装包生成器,使用通用组件利用mingw交叉编译构建后使用NSIS打包输出的文件。
  • tap-windows: Windows的TAP驱动(网络驱动器接口标准第5版),就算OpenVPN不用,这玩意也是很实用的东西。

  • tap-windows6: Windows的TAP驱动(网络驱动器接口标准第6版),这玩意很实用,不止是OpenVPN可以用到它。

  • easy-rsa: 用来生成SSL证书的脚本,这里当然是OpenVPN要用,当然这其实是一个很通用的程序,在其他场景也会用到。

大多数GitHub仓库的镜像都可以在SourceForge.net找到。

openvpn.git库的分支

1
2
3
4
master -- 开发主分支,所有的新补丁都应当基于本分支
release/2.1 -- 所有和2.1发行版相关的东西
release/2.2 -- 所有和2.2发行版相关的东西
release/2.3 -- 所有和2.3发行版相关的东西

发行版分支不会有任何活跃的功能改动,只会在发行后应用一些典型的bug修复。每个重大发布(2.X)都会释出一个新的发行版分支。所有的bug修复都应当基于主分支开发,将从主分支和合适的发行分支之间做合适的选择,以决定是否在小版本(2.1.X,2.2.X等)中修复。

大小版本的发行版同时也都加了标签, 并且可以使用以下git命令检查:

1
2
3
$ git tag -l # 列出所有标签
$ git tag -v <tag name> # 验证签名的标签
$ git show <tag name> # 显示标签信息和提交时间点

更多详细开发进程可以点击这里查阅

废弃的仓库

openvpn-testing

这个仓库并不经常被使用,尽管openvpn-testing.git的master分支与openvpn.gti的master分支保持同步。在openvpn-testing的git树上有很多分支,每个分支都单独跟踪不同的补丁。分支结构如下:

1
2
3
4
5
6
7
8
9
10
11
master -- 这个和openvpn.git的master是完全相同的分支
svn-branch/BETA21 -- 这个和James以前的SVN Beta21是一样的分支,不活跃。
svn-branch/2.1 -- 这是James的2.1版SVN分支的git镜像,James做他的主要工作,会合并到主分支。
release/2.1 -- 这只包含2.1发行版相关的源码(以前的released-2.1)
release/2.2 -- 这只包含2.2发行版相关的源码(以前的beta-2.2)
obsolete/* -- 废弃的分支
{featureX} -- 只包含X特性的补丁
{featureY} -- 只包含Y特性的补丁
{featureZ} -- 只包含Z特性的补丁
frp -- 正经历特性移除进程的特性
experimental -- 和其他带有实验性特性的分支合并的主分支,只用于测试意图不用于开发。

开发者们如果要向分支贡献一些特性必须确保自己的分支定期基于主分支做rebase. 这同样适用于想看到他们的工作成果被采纳的开发维护git树的其他人员。”拥有”一个特性分支的开发者要向所有在那个分支的开发者负责。

在obsolete目录下的这些分支混杂着一些将不再被使用的分支,当然其中有一些可能有历史价值,只是被放在一边。还有时候是因为一些分支被合并到主分支并且现在已经主要在主分支开发了才被放到这里。当他们的历史参考价值不再那么明显的时候最终会被删除掉。

experimental分支是一个集所有在开发中和主分支下特性的分支。这个分支可能会不时地被完全重构。考虑到这个分支是一个”仅供参考和测试”的分支,不可以在这个分支下直接做开发。

获取最新的openvpn-testing树,使用

1
git clone git://openvpn.git.sourceforge.net/gitroot/openvpn/openvpn-testing.git

你将会在这里获取到openvpn-testing目录。当进入这个目录默认会使用主分支,使用以下命令切换到实验分支

1
git checkout -b experimental origin/experimental

使用以下命令查看所有的可用分支

1
git branch -a

使用这个git树的experimental分支的你通常是希望用上”最新最好”的特性并且你愿意接受这些通常不怎么稳定的实验性代码。

James的SVN仓库

James Yonan 曾经把他自己的SVN仓库托管在openvpn.net,但是在2013年末或2014年初这段时间下线了,取而代之的是James放到GitHub上的openvpn.git。残余的SVN仓库在openvpn-testing.git,SF.net上是可以看到的。

旧的CVS仓库

对我们之中的老顽固我们提供旧的CVS树,当然已经被转换成为了一个不活跃的git树。这个树可以在这里浏览或本地下载:

1
git clone git://openvpn.git.sourceforge.net/gitroot/openvpn/openvpn-historical-cvs.git

需要注意的是这个树上不会有新的开发活动了。

本文地址: https://blog.welee.space/openvpn-client-modify/