LINUX.ORG.RU

Git: просто извлечь содержимое

 


0

1
  1. Пользователь делает commit & push.
  2. Хук на сервере post-receive получает содержимое репозитория, изменяет права и запаковает его в архив.

С git начал разбираться только со вчерашнего дня и самое простое, что пришло в голову:

#!/bin/bash
#post-receive

cd /tmp
rm -rf ./project
git clone /var/project.git
cd ./project
rm -rf ./.git
find . -type f -exec chmod 644 {} \;
find . -type d -exec chmod 755 {} \;
zip -r /var/www/example.com/www/last.zip .

Как сделать по-человечески?

★★

Последнее исправление: metrokto (всего исправлений: 6)

Ответ на: комментарий от KennyMinigun

Не совсем то. Требуется получить именно файлы, иначе придется этот архив распаковывать, а потом запаковывать снова, что тоже не по-человечески.

metrokto ★★
() автор топика
Ответ на: комментарий от metrokto

А чем это лучше git clone в /tmp?

Тем, что не нужно .git копировать а потом удалять. Тем, что можно в pipe сунуть и что-то еще с этим архивом сделать. Тем, что можно сразу выбрать branch и коммит.

anonymous
()
Ответ на: комментарий от metrokto

Как это не то? Запаковываются именно файлы:

/tmp/test $ git init
Инициализированный пустой репозиторий Git в /tmp/test/.git/

/tmp/test master #% $ git add *

/tmp/test master # $ git commit -m test
[master (root-commit) 859ed3d] test
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 a
 create mode 100644 b/c

/tmp/test master $ git ls-files
a
b/c

/tmp/test master $ git archive --format=zip --output=dist.zip master

/tmp/test master % $ unzip -l dist.zip 
Archive:  dist.zip
859ed3dea31df34a2b7828dbafb864e9b98f6da0
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2013-09-06 19:54   a
        0  2013-09-06 19:54   b/
        0  2013-09-06 19:54   b/c
---------                     -------
        0                     3 files

KennyMinigun ★★★★★
()
Последнее исправление: KennyMinigun (всего исправлений: 3)

Кстати, по этой теме еще будет нелишним посмотреть git attributes --help

UPD в предыдущем посте забыл про смену прав. Возможно с помощью git attributes это можно сделать.

KennyMinigun ★★★★★
()
Последнее исправление: KennyMinigun (всего исправлений: 1)

git clone --depth 1

x0r ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.