使用集中式工作流的 Git 版本编号

标签 git workflow tags pre-commit centralized

我们在中央服务器上使用 Git,我们的代码需要在文件中包含版本号。目前的做法是这样的:

  1. 新开发人员进行“git 克隆”
  2. 在他的本地副本中,他编辑 .git/hooks/pre-commit 以调用 version.sh

version.sh(包含在项目根目录中)从“git describe”获取版本号并将其存储在文件中。

虽然这可行,但我想确保版本号得到更新,即使开发人员忘记编辑他的预提交 Hook 也是如此。

由于服务器没有工作副本,简单地调用 (pre|post)-receive hooks 是行不通的,所以我想知道是否有办法做到这一点。

最佳答案

中央仓库上的 hooks/update 拒绝未更改版本文件(在下面的示例中名为 VERSION)的提交怎么样?

#! /bin/bash

refname="$1"
oldrev="$2"
newrev="$3"

if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
  echo "Usage: $0 <ref> <oldrev> <newrev>" >&2
  exit 1
fi

if [ "$refname" != "refs/heads/master" ]; then
  exit 0
fi

if diff -bq <(git show $oldrev:VERSION) \
            <(git show $newrev:VERSION) >/dev/null
then
  echo "$0: VERSION unchanged; rejecting update" >&2
  exit 1
fi

关于使用集中式工作流的 Git 版本编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1852648/

相关文章:

GitHub 操作工作流计划不适用于非默认分支

git - Phabricator Arcanist arc land vs arc 修正

git - 具有多个发布版本的软件开发的最佳工作流程

haskell - 在 Haskell 中查找函数源(工作流程)

没有经验的成员的 Git 工作流程

php - 创建标签数据库

git - 将增量项目文件夹作为提交移动到 Git

git - Jenkins GIT部署后如何设置权限

javascript - 自定义 Joomla 3.x 标签页

javascript - AngularJS:多次在输入框的单独div中动态呈现标签