2015-12-03 2 views
1

У меня есть ветка под названием uat на git.GIT POST-MERGE Hook, Получить обновленные файлы

Я хочу получить клон всех файлов, которые обновляются в merge в ветке uat.
(В основном идея заключается в создании сборки для загрузки на сервер 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 т.е. получить все файлы обновленных в текущем слиянии.

ответ

2

Если слияние просто имело место (которое должно быть в случае пост-слияния крюком), вы можете использовать ORIG_HEAD:

git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD 
+0

Именно то, что я искал. Благодаря!! –

1

Для полного решения. Вот как создать сборку с gitpost-mergehook.

#!/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 
+1

Хорошая обратная связь, в дополнение к моему ответу. +1 – VonC

+0

@ VonC .. Ваш ответ является ядром этой логики. Благодаря!! –

Смежные вопросы