0

我有一个工具链,每次新推送到达我的 Git 服务器时,它都会构建我的项目文档。

如果没有特定版本,则应使用称为“最新”的参考来构建文档。但是当我决定使用 Git 标签设置版本时,应该在 Git 挂钩中使用该标签来构建具有此版本号的文档。

钩子的伪代码应该是这样的:

if (tag_for_this_commit_exists):
    build_docs(str(tag_of_this_commit))
else:
    build_docs("latest")

问题一:

我如何在 post-receive 挂钩中提取信息,如果有分配给提交的标签,如果有,是哪一个?

问题2:

如何在命令行上添加标签,使其完全属于推送事件,并与软件的推送一起推送到服务器?

4

1 回答 1

0

好的,谢谢大家的回复。我使用位于 hooks 文件夹中的 post-receive 脚本管理服务器端。

如果其他人需要这个,这里是脚本:

#!/bin/bash
#Get the newest tag
NEWEST_TAG=$(ls ../refs/tags | sort -n | head -1)
if [ -z "$NEWEST_TAG" ]
then
    #No tags exist yet
    DOCU_VERSION="latest"
else
    #Check if the tag is referencing the current commit
    TAG_SHA=$(git rev-list  ${NEWEST_TAG} -n 1)
    COMMIT_SHA=$(cat ../refs/heads/master)
    if [ "$TAG_SHA" == "$COMMIT_SHA" ]
    then
        #Tag matches current commit
        DOCU_VERSION=$(ls ../refs/tags | sort -n | head -1)
    else
        #Tag does not match current commit
        DOCU_VERSION="latest"
    fi
fi

#Trigger the build of the documentation on the read-the-docs server
curl -X POST -d "ref=$DOCU_VERSION" 
http://192.168.1.106:8000/api/v2/webhook/myproject/1/
exit 0
于 2018-07-09T14:09:09.617 回答