2015-10-30 3 views
1

Я создал толчок к развертыванию для мерзавца репо с использованием после приема крючка, и теперь мне нужно каким-то образом сделать его проверка только содержимое определенного каталога хранилища, как показано ниже:заказ подкаталог репозиторий

repo.git/dir1/dir11 -> /var/www/html/site1 
repo.git/dir2  -> /var/www/html/site2 

Я хочу иметь только содержимое каталога проверил, не полную структуру, так что в конце концов, я бы следующее:

/var/www/html/site1/"whatever is in dir1/dir11/ directory". 

Спасибо.

ответ

0

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

# prefix the index paths with the repo's .git directory path 
(export GIT_INDEX_FILE=site1.index 
    export GIT_WORK_TREE=/var/www/html/site1 
    git read-tree -um `git write-tree` commit:dir1/dir11 
) 
(export GIT_INDEX_FILE=site2.index 
    export GIT_WORK_TREE=/var/www/html/site2 
    git read-tree -um `git write-tree` commit:dir2 
) 

Два дерева git read-tree -um это основа проверки, он принимает ваш индекс является производным от первого дерева и переходов на второй, как для проверки (или быстрой перемотка вперед слияние, как сделать то же читать дерево , но слияние обновляет текущий HEAD, где checkout переключает его, read-tree вообще не обрабатывает refs). Дерево записи просто плюнет на то же дерево, на котором вы последний раз читали-tree'd, или на исходное пустое дерево, если только вы не делали другие вещи в индекс.