GIT POST-MERGE Hook,获取更新文件
GIT POST-MERGE Hook, Get updated files
我在 git 上有一个名为 uat
的分支。
我想克隆 uat
分支中 merge
更新的所有文件。
(其背后的基本思想是创建一个构建以上传到 uat 服务器)。
我试过这样做。
#!/bin/bash
branch=$(git symbolic-ref HEAD | sed -e "s/^refs\/heads\///");
if [ "uat" == "$branch" ]; then
// to do
// 1. get all updated files
// 2. create a clone of these files
fi
有人可以帮我 setp 1
即更新当前合并中的所有文件。
如果合并刚刚发生(在 post-merge hook 中应该是这种情况),您可以使用 ORIG_HEAD
:
git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD
完整的解决方案。以下是如何使用 git
post-merge
hook
.
创建构建
#!/bin/bash
# get current branch
branch=$(git symbolic-ref HEAD | sed -e "s/^refs\/heads\///");
# check if branch name is `uat` (or whatever you prefer)
if [ "uat" == "$branch" ]; then
# create a folder outside the git repo
# you can skip this step, if you want a static location
mkdir -p $(pwd)/../uat/$(basename $(git root));
# getting updated files, and
# copy (and overwrite forcefully) in exact directory structure as in git repo
yes | cp --parents -rf $(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD) $(pwd)/../uat/$(basename $(git root))/;
fi
我在 git 上有一个名为 uat
的分支。
我想克隆 uat
分支中 merge
更新的所有文件。
(其背后的基本思想是创建一个构建以上传到 uat 服务器)。
我试过这样做。
#!/bin/bash
branch=$(git symbolic-ref HEAD | sed -e "s/^refs\/heads\///");
if [ "uat" == "$branch" ]; then
// to do
// 1. get all updated files
// 2. create a clone of these files
fi
有人可以帮我 setp 1
即更新当前合并中的所有文件。
如果合并刚刚发生(在 post-merge hook 中应该是这种情况),您可以使用 ORIG_HEAD
:
git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD
完整的解决方案。以下是如何使用 git
post-merge
hook
.
#!/bin/bash
# get current branch
branch=$(git symbolic-ref HEAD | sed -e "s/^refs\/heads\///");
# check if branch name is `uat` (or whatever you prefer)
if [ "uat" == "$branch" ]; then
# create a folder outside the git repo
# you can skip this step, if you want a static location
mkdir -p $(pwd)/../uat/$(basename $(git root));
# getting updated files, and
# copy (and overwrite forcefully) in exact directory structure as in git repo
yes | cp --parents -rf $(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD) $(pwd)/../uat/$(basename $(git root))/;
fi