4.3 PORTREVISION和PORTEPOCH

4.3.1 PORTREVISION

PORTREVISION是一个增加的数字(可以理解为port的次版本号),以下划线连接,当PORTVERSION增加时会被置为0,每一次对同版本的port修改时,PORTREVISION都要增加.

PORTREVISION应当被修改的情况:

不需要修改PORTREVISION的例子:

一个原则是:他人持有你修改过的port时受益(如,增强,修改等),如果是,PORTREVISION需要修改以明确表示一个新的port已经诞生.

4.3.2 PORTEPOCH

很长一段时间,软件商或FreeBSD的porter存在表示版本的数字上讲新的port小于旧port的情况,如从foo-20000801更新到foo-1.0.因为20000801大于1,所以会让人产生误解.

在这种情况下,PORTEPOCH应当增加.如果PORTEPOCH不为0,就应当加到包名字的后面(以逗号分割).PORTEPOCH不会降低或重置为0.如上面例子应该是foo-1.0,1 .虽然数字仍然小于20000801,但",1"的后缀表示这是一个比没有后缀的port更新的版本.

希望大家不要使用PORTEPOCH.使用了PORTEPOCH表示以后这个port的源代码可能会改变版本号的结构

举个例子,如果一个snapshot版本的发布日期是20000917,而它的前一个版本是1.2,那么这个版本应当为1.2.20000917,而不是20000917,那么新的版本1.3发布后,仍然保持了版本号的增加.

4.3.3 PORTREVISION和PORTEPOCH使用的例子

gtkmumble port, 版本0.10提交

    PORTNAME=  gtkmumble
    PORTVERSION=    0.10

PKGNAME是gtkmumble-0.10

一个安全漏洞被发现,添加新的patch.修改PORTREVISION.

PORTNAME= gtkmumble
PORTVERSIOn= 0.10
PORTREVISION= 1
PKGNAME变成gtkmumble-0.10_1

一个新的版本发布,为0.2(看来上一个版本应当是0.1.0,而不是来自0.9:-)).因为新版本的0.2小于已有的0.10.这是需要设置一个PORTEPOCH同时PORTREVISION置为0.

    PORTNAME=  gtkmumble
    PORTVERSION=    0.2
    PORTEPOCH=  1

PKGNAME变成gtkmumble-0.2,1

下一个版本是0.3.因为PORTEPOCH是不会降低的.版本号应该是:

    PORTNAME=  gtkmumble
    PORTVERSION=    0.3
    PORTEPOCH=  1

PKGNAME变成gtkmumble-0.3,1

注意: 如果这里的PORTEPOCH置为0,安装了gtkmumble-0.10_1的使用者不会发现gtkmumble-0.3是新的版本,因为0.3小于0.10.