Там какой-либо путь состоит в том, чтобы служить файлам от ответвлений в мерзавце repo, не проверяя их в различные каталоги?
Я любил бы удобство способности создать новое ответвление, продвинуть его к тестовому серверу repo и затем сделать что-то как обзор на http://branchname.test.com. Я могу использовать, переписывают правила обработать субдомен имени ответвления для указания на различные корневые пути, но Apache не может считать пустой repos, конечно.
gitfs мог бы работать, но кажется заброшенным.
Мне особенно не нужен Apache также.
Самый простой подход проверил бы каждое ответвление и создал бы клоны для каждого ответвления в подкаталогах. Очень легко сделать это со сценарием runned кроном (или в рычаге постфиксации) как:
#!/bin/sh
ROOT=/srv/repos/control
cd ${ROOT} # it's an internal repo
git fetch
for ref in .git/refs/remotes/origin/*; do
BRANCH=`basename ${ref}`
if ! [ -d ../${BRANCH} ]; then
git clone --local ${ROOT} ../${BRANCH}
cd ../${BRANCH}
git branch --track ${BRANCH} remotes/origin/${BRANCH}
git checkout ${BRANCH}
else
cd ../${BRANCH}
git pull
fi
done
После того, как это будет работа, Вы получите набор каталогов с ответвлениями в /srv/repos
.
git clone --local
очень быстро и оптимален даже на огромных репозиториях как ядро Linux, потому что оно не создает все объекты в репозитории, но вместо этого создает hardlinks им, таким образом, Вы не потратите впустую пространства на копии репозитория. Вы будете, через, ненужное пространство на проверенных копиях, но a) они являются, вероятно, не очень большими и b) это сделает веб-доступ намного легче и быстрее.