如何在 Perforce 中控制版本号?
Posted
技术标签:
【中文标题】如何在 Perforce 中控制版本号?【英文标题】:How to control version number in Perforce? 【发布时间】:2011-01-09 10:01:25 【问题描述】:我想在 Perforce 中以“x.x.x”或类似于“git tag”的格式自动生成版本号。有什么想法吗?
【问题讨论】:
【参考方案1】:我不知道 git 标签可以自动生成版本号。
你可以暗示git describe
RCS 可以是store, and then display the version 的一种方式,而不是生成一个。
版本号方案are many (p4 uses its own),加上标签需要cleaned up once in a while。 您将需要某种脚本来生成一个(followinf 来自 p4 邮件列表):
对于坚持“每次更改都需要新版本标记”的 dweeb,我建议如下:[警告:这是以 Perforce 为中心的。]
您的 makefile 可以通过运行以下脚本生成 version.h 做这样的事情:
CHANGENUM=`p4 changes -m1 -s submitted //depot/main/...#have | cut -f2 -d' '`
echo "#define VERSION \"main codeline to change #$CHANGENUM\" " > $SRC/include/version.h
2 。然后你做一个构建和版本字符串(对于任何 引用
VERSION
) 自动正确。 当然,我会为“官方构建”做这个version.h
技巧和 “通宵构建”并使开发人员使用的默认version.h
具有硬编码字符串,其效果是“从主代码行构建但不是官方的 - 不要 部署”。
在 Git 2.27(2020 年第二季度)中,“git p4”在 RCS 方面做得更好。
请参阅commit 1ec4a0a、commit 38ecf75、commit cd1e0dc(2020 年 2 月 14 日)和commit 4935c45、commit aa8b766、commit 9f59ca4、commit 6b602a2(2020 年 2 月 11 日)Ben Keene (seraphire
)。(由 Junio C Hamano -- gitster
-- 合并于 commit 5f2ec21,2020 年 4 月 22 日)
git-p4
:添加RCS关键字状态消息签字人:Ben Keene
在 p4 提交过程中,
git-p4
将尝试为 p4 工作区中找到的文件应用补丁。 但是,如果 P4 使用 RCS 关键字扩展,这个补丁可能会失败。当补丁失败时,用户会收到失败警告,
git-p4
将尝试从文件中清除扩展文本并重新应用补丁。git-p4 的当前版本移除 RCS 扩展后,不会告诉用户重新应用尝试的结果,这可能会造成混淆。在清除RCS关键字后,在git补丁成功应用后添加新的打印语句。
【讨论】:
谢谢,VonC。我正在处理的不是 C/C++ 项目,它只是一堆文档(我会定期用版本号对它们进行 tar)。但我想基本的想法是一样的。我将创建一个 VERSION 文件并使用您的脚本来更新它。我又收到两个问题: 1. 我应该把这个 VERSION 文件放在哪里?如果我更新 VERSION 文件,我猜 CHANGENUM 会再次更改; 2. 这样,我不能保证触发这个脚本自动更新VERSION文件,对吧? (有几个人可以访问并更改此文件夹的内容) @aXqd:对于任何语言,这个想法确实是一样的。此类文件的通常位置是根目录,但您的项目中按约定定义 的任何其他位置都可以。触发器不能保证总是以这种方式运行,因此在这里使用某种更改内容触发器可能会更好。 对不起,英语不是我的母语。我的第一个问题想问的是'在我提交之后,我将触发一个脚本来更新 VERSION 文件,但是我必须再次提交那个新的 VERSION 文件,所以 CHANGENUM 也会再次改变'。这里好像是个循环。 @aXqd:通常,这种触发器只能检测到一个文件的提交(VERSION
一个)......并且不会在那个中做任何事情> 案例。以上是关于如何在 Perforce 中控制版本号?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 perforce 和 VMS 上为 C++ 进行代码审查/调试/编码/测试/版本控制
如何在 Perforce 树中查找未跟踪的文件? (模拟svn状态)