Недопущення потрапляння великих файлів в GIT репозиторій

Програмування на Bash.
Аватар користувача
technate
Site Admin
Повідомлень: 61
З нами з: Нед лютого 07, 2016 17:38
Reputation: 4
Спеціалізація: Розробник програмного забезпечення

Недопущення потрапляння великих файлів в GIT репозиторій

Повідомлення technate » П'ят серпня 26, 2016 21:57

Інколи дуже важливо не допустити розростання розміру GIT репозиторія до великого розміру. Інколи ця проблема навіть приводить до вичерпання місця на диску сервера. На щастя, GIT підтримує серверні хуки, тобто скрипти які будуть викликатися при взаємодії із репозиторієм.

Наступний скрипт перевіряє чи не перевищують файли, що пушаться на сервер, заданого максильманого розміру.
#!/bin/bash

MAX_SIZE=15

BRANCH=$1
OLD_REV=$2
NEW_REV=$3

RES=$(git ls-tree --full-tree -r -l ${NEW_REV})

while read -r line; do
FDATA=($line)
if [ -n "${FDATA[3]:+not}" ] && [ "${FDATA[1]}" = "blob" ] && [ -n "${FDATA[4]:+not}" ]; then
FDATA[3]=$((${FDATA[3]} / 1024 / 1024))
if ((${FDATA[3]} > $MAX_SIZE)); then
git show $BRANCH:${FDATA[4]} > /dev/null 2>&1;
if [ $? -ne 0 ]; then
printf "\n"
echo "[ERROR] Git push rejected";
echo "[ERROR] Maximum file size is "$MAX_SIZE" Mb";
echo "[ERROR] The size of "${FDATA[4]}" is "${FDATA[3]}" Mb";
printf "\n"
exit 1
fi
fi
fi
done <<< "$RES"

Для використання хуку, його потрібно помістити в папку .git/hooks та у файл під назвою update. Не забудьте поставити файлу права на виконання.

Повернутись до “Bash”

Хто зараз онлайн

Зараз переглядають цей форум: Немає зареєстрованих користувачів і 1 гість