我的团队正在使用github管理一个充满cms主题的私人仓库。我们将它们全部放在同一个repo中,并使用子文件夹,标签和保持我们的分支和提交以主题名称为前缀来跟踪它们
IE
提交消息:"[Super Theme] upgraded Navigation to include hover effect"
分支super_theme-upgrade-navigation-hover
现在我们想在主题的设置页面中引入语义版本,所以如果你点击,你会得到版本号,但我不确定实现这个的最佳方法
我们可以使用git标签和git describe来检查提交次数,但这只适用于每个文件夹都是自己的repo。我们希望将它们保持在一起,因为它使得对github的讨论更容易,因为影响一个主题的问题经常影响另一个主题。它们各不相同,但密切相关。
我想为我们添加一个脚本来检查主题json文件的当前版本并递增它,但我不确定这是否足够自动。我真的希望确保我们不会与团队中的每个人发生版本冲突。不确定子模块是否可以在这里工作,因为我们希望它们始终是最新的。
我想要一种方法来更新子文件夹的版本号,只有当该文件夹上的分支合并到master时。
难住了。我甚至不确定这是否是一个明确的问题,所以请求澄清。
答案 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不同,除非存在完全匹配,否则这不会为您提供最新版本。