过去,使用mercurial和Visual Studio,我习惯使用add mercurial changeset ids to my application,这样当用户执行帮助时,它会列出所有组件及其完全 mercurial修订版。它还会在每次启动时将所有变更集ID记录到应用程序日志文件中。这个过程甚至允许我查看自上次提交以来是否修改了特定的工作副本(mercurial的hg id
通过在其报告的变更集ID的末尾添加+来表示脏工作副本。)
这非常有用,因为它意味着每当用户报告问题时,我都可以快速构建正好他们正在使用的修订版。我还可以告诉人们什么时候在快速黑客中偷偷摸摸解决问题并且没有提交更改,也没有告诉我它。
我现在想在我的git
托管的RCP应用程序中复制相同的工具。不幸的是,我对git
和Eclipse RCP应用程序开发都很陌生,所以我有点不清楚相同的技术是否会起作用。
特别是我一直无法弄清楚如何使用hg id
执行等效的git
,如何让Eclipse构建系统调用git
来创建{{1}包含id的文件,以便可以将其编译到应用程序/插件中,或者如何将此信息导入帮助>关于页面。
如果你已经完成了这个或类似的事情,我会喜欢你如何做到的一些指示。或者,我很乐意听到有关实现最终结果的替代方法的任何建议。
通过一些google-fu,阅读背后的线条和实验,看起来.gitignore
或git rev-parse HEAD
可能最接近git rev-parse --short HEAD
,唉我找不到指示工作副本不干净的方式,所以看起来我必须检查hg id
的输出,如果它不为空,请手动将git status --short
附加到提交哈希
现在我只需要了解如何从Eclipse构建系统运行这些命令以及在何处注入此信息,以便它显示在About页面中。
答案 0 :(得分:1)
你看过git describe吗?
http://linux.die.net/man/1/git-describe
我将此输出用于许多不同的项目。它将为您提供过去最接近的标记,自标记以来的提交数量以及哈希中的一些字符。
以下是联机帮助页的示例:v1.0.4-14-g2414721
在此示例中,部分为:
如果标记了最后一次提交,您将只获得标记名称:v1.0.4
有很多有用的选项,但对我的项目最重要的两个选项是:
--tags:
我使用的是轻量级,无符号标记,默认情况下不会提取。
--match:
如果你有不同类型的标签,但只想匹配那些以'v'开头的标签。
从流程的角度来看,我为严肃的项目所做的也是:
将版本和计数更改为rc或beta格式:
tag v1.2-14 --> `1.3-rc14` or `1.3-beta14`
你不能构建1.2,因为它是过去的,所以它必须是下一版本的第14版,即1.3。
如果分支名称是特殊分支(不是主分支等),则前缀分支名称 例如,分支“featurex”上的“v1.2-14”将产生:
featurex-1.3-rc14
如果构建中没有签入所有内容,请附加-modified
或`-unsupported'。这是您永远无法重现它的线索。
featurex-1.3-rc14-unsupported
将哈希值存储在日志或屏幕的末尾或下一行。我通常将完整的哈希值放入日志等中,但较小的前缀很常见:featurex-1.3-rc14 (2414721)
这与我的工作流程很好地配合。当我将该功能合并到发布分支时,前缀消失:1.3-rc14 (2414721)
当测试完成且版本被标记时,rc消失:1.3 (2414721)
答案 1 :(得分:1)
我不能谈论这个问题的git部分,但我可以在某种程度上谈论RCP部分。也就是说,你已经提到你不是关键字替换的粉丝。我很欣赏,但据我所知,这是整个RCP构建框架中非常常见的做法!
可以使用about.properties,about.mappings和about.ini文件控制“关于”对话框。 Rich Client Platform Book谈到这一点。
我要做的是让您的构建使用您的git主题标签生成about.mappings文件。