跟踪git中子文件夹的版本号

时间:2015-04-02 17:10:35

标签: git github version git-submodules githooks

我的团队正在使用github管理一个充满cms主题的私人仓库。我们将它们全部放在同一个repo中,并使用子文件夹,标签和保持我们的分支和提交以主题名称为前缀来跟踪它们

IE
提交消息:"[Super Theme] upgraded Navigation to include hover effect"
分支super_theme-upgrade-navigation-hover

现在我们想在主题的设置页面中引入语义版本,所以如果你点击,你会得到版本号,但我不确定实现这个的最佳方法

我们可以使用git标签和git describe来检查提交次数,但这只适用于每个文件夹都是自己的repo。我们希望将它们保持在一起,因为它使得对github的讨论更容易,因为影响一个主题的问题经常影响另一个主题。它们各不相同,但密切相关。

我想为我们添加一个脚本来检查主题json文件的当前版本并递增它,但我不确定这是否足够自动。我真的希望确保我们不会与团队中的每个人发生版本冲突。不确定子模块是否可以在这里工作,因为我们希望它们始终是最新的。

我想要一种方法来更新子文件夹的版本号,只有当该文件夹上的分支合并到master时。

难住了。我甚至不确定这是否是一个明确的问题,所以请求澄清。

2 个答案:

答案 0 :(得分:1)

这是将子文件夹版本附加到git历史记录的一种方法:

git describe $(git log -n 1 --format=%H -- path/to/subfolder)

这允许使用顶级标签来跟踪主要/次要版本控制(例如,名为1.0的标签),而修订版可以跟踪特定于子文件夹的提交/哈希(例如1.0-25-gcdcb9a7e)。根据您是否发布构建工件(例如Maven,PyPI),您可能需要进行调整以匹配版本命名方面的约束,或者将哈希转储到某些工件元数据中。在工件中的某个地方包含哈希值对于跟踪很有用。

答案 1 :(得分:0)

实际上可以标记提交以外的对象。因此,您可以像这样标记子文件夹的树(-a是可选的):

git tag path/to/subfolder/v-1.2.4 HEAD:path/to/subfolder -a

要查找特定提交中子文件夹的版本,请使用以下命令:

git for-each-ref refs/tags/path/to/subfolder/ --format='%(object) %(refname:short)' | grep $(git rev-parse <commit>:path/to/subfolder) | cut -c 41-

然而,与git describe不同,除非存在完全匹配,否则这不会为您提供最新版本。