Архивация измененных файлов после git pull

Последнее обновление 24.04.2019

Стояла задача по архивации файлов, которые были изменены после релиза на проекте. То есть при выполнении git pull origin master средствами gitlab-ранера нужен был архив с файлами, которые были изменены. Реализация простая средствами git и bash:

#!/bin/bash

# Получение полного хеша текущего комита
commit1=`git log --pretty=format:"%H" | head -n 1`

# Выкатка релиза
cd /data/project && git pull origin master

# Получение нового полного хеша текущего комита
commit2=`git log --pretty=format:"%H" | head -n 1`

# Просмотр разницы в виде списка файлов между двумя комитами
files=`git diff --name-only $commit1 $commit2`

# Создание временной директории для хранения измененных файлов
if [ ! -d /data/project/release-files/tmp ] ;
then mkdir -p /data/project/release-files/tmp
fi

tmp="/data/project/release-files/tmp"

# Имя будущего архива
curdate=/data/project/release-files/`date +%Y-%m-%d_%H-%M-%S`.tar

# Вывод списка файлов и копирование во временную директорию
for line in $files
do
cp $line $tmp/`basename $line`
done

# Создание архива и удаление временных файлов
cd $tmp
tar cf $curdate ./ && rm -rf $tmp

В результате после того, как разработчики выполняют commit & push, ранер на сервере выполняет вышеописанный скрипт.

Ваш комментарий будет первым

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *