[devel] git-prune/git-repack costs

Sergey Vlasov =?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Сб Май 27 12:24:27 MSD 2006


On Sat, May 27, 2006 at 01:02:21AM +0400, Dmitry V. Levin wrote:
> On Wed, May 10, 2006 at 05:28:24PM +0400, Dmitry V. Levin wrote:
> > On Wed, May 10, 2006 at 05:07:52PM +0400, Alexey I. Froloff wrote:
> > > * Dmitry V. Levin <ldv@> [060510 16:59]:
> > > > > > > git-prune && git-repack -a -d -q
> > > > > > > я пока что запускаю вручную.
> > > > > > GIT_DIR=/path/to/project.git git-repack -a -d -q ?
> > > > > Возможно, что GIT_DIR переопределять не надо.
> > > > Да, достаточно одной строчки:
> > > > git-prune && git-repack -a -d
> > > Стоя в /path/to/project.git или в рабочей копии и потом это
> > > push'нется ?
> > 
> > Нет, в post-update, перед exec'ом.
> 
> Сейчас у меня в post-update написано так:
> git-prune && git-repack -a -d && git-update-server-info
> 
> Должен заметить, что на репозитории packages/gcc3.4.git размером 42M
> (в нём все 13 сборок пакета gcc3.4) эта операция (git-prune + git-repack)
> потребляет заметное количество ресурсов.  Сервер, выполняющий сейчас
> обязанности devel.altlinux.org, ляжет очень быстро, если каждый мантейнер
> будет выполнять эту операцию по своему разумению.

Вообще-то обычно делают git-repack -a -d && git-prune-packed.
git-prune - действительно очень ресурсоёмкая операция, но она нужна
только в том случае, если в репозитории по каким-то причинам появились
объекты, на которые нет ссылок.  Кроме того, необходимо, чтобы при
выполнении git-prune никто не писал в репозиторий (иначе только что
добавленные объекты могут быть удалены, поскольку в этот момент на них
ещё нет ссылок).

На самом деле даже git-prune-packed может помешать выполняющимся
параллельно операциям с репозиторием (если в момент начала операции
git-repack ещё не успел создать новый pack-файл, а через некоторое
время потребовались объекты, которые были помещены в новый pack и
удалены git-prune-packed).

Кроме того, если постоянно выполнять git-repack -a -d, нужно делать
доступ через git daemon - нормально работать через http или rsync в
таких условиях невозможно (при каждом git fetch всё будет скачиваться
заново).
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 191 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20060527/0e3488e9/attachment-0001.bin>


Подробная информация о списке рассылки Devel