Что: 6e86425441b195a915048fc71a4a50898e73a54e
Когда: 2023-06-13 11:08:46+03:00
Темы: git tip
Зеркалирование AUR зеркала https://github.com/archlinux/aur Есть Git-репозиторий со всеми AUR пакетами. Каждый находится в своей ветке, а это почти 115k штук. Просто так сделать git clone не выходит из-за этого. Но можно доставать все эти данные частями, просто получив список веток, а дальше по тысяче (например) штук их запрашивать: git ls-remote https://github.com/archlinux/aur.git | cut -f2 | sed -n "s/^refs.heads.//p" | xargs -L1000 | while read pkgs ; do for pkg in $pkgs ; do echo ${pkg}:${pkg} ; done | git fetch --stdin origin done А ещё стоит сделать "git config gc.auto 0", так как Git упорно запускает gc при всём этом, сильно тормозя весь процесс. gc можно вызвать руками потом.
From: kmeaw Date: 2023-06-15 22:48:38Z А почему не делалось зеркалирование из первоисточника в исходном формате? Кажется, тогда не было бы проблемы с выкачиваниеем огромного репозитория, а скачивание по частям получилось бы естественным образом. Примерно так (сам не провеерял, пишу по памяти): curl https://aur.archlinux.org/packages.gz | zcat | xargs -I{} -P10 git clone https://aur.archlinux.org/{}.git А ещё у aur.archlinux.org есть IPv6 (в отличие от github.com).
From: Sergey Matveev Date: 2023-06-15 23:19:47Z
From: Sergey Matveev Date: 2023-06-16 08:21:11Z
From: kmeaw Date: 2023-06-17 08:23:35Z Фрагмент из /etc/nginx/nginx.d/aurweb.conf: # limit Git requests to block Git DoS attempts. # # grep aurwebgitlimit /var/log/nginx/aur.archlinux.org/error.log | awk '{ print $14 }' | sort | uniq | sort limit_req_zone $binary_remote_addr zone=aurwebgitlimit:10m rate=30r/m; limit_req_status 429; server { … location ~ "^/([a-z0-9][a-z0-9.+_-]*?)(\.git)?/(git-(receive|upload)-pack|HEAD|info/refs|objects/(info/(http-)?alternates|packs)|[0-9a-f]{2}/[0-9a-f]{38}|pack/pack-[0-9a-f]{40}\.(pack|idx))$" { limit_req zone=aurwebgitlimit burst=300 nodelay; … uwsgi_pass smartgit; … } } Похоже, что git fetch делает много запросов, даже если с другой стороны отвечают по smart protocol. Если история не нужна, могу предложить ещё забирать snapshot, для них (location ~ ^/cgit) настроен limit_req zone=aurwebgitlimit burst=900 nodelay: https://aur.archlinux.org/cgit/aur.git/snapshot/clickhouse.tar.gz Или можно попробовать скачать по SSH (что, правда, потребует регистрации для загрузки публичного ключа): git clone aur@aur.archlinux.org:clickhouse
From: Sergey Matveev Date: 2023-06-17 08:45:21Z
Сгенерирован: SGBlog 0.34.0