Клонирование репозитория от gitweb
Я хочу клонировать GIT-репозиторий, чей git://
сервер упал.
К счастью, его интерфейс gitweb все еще работает, и все данные, необходимые для восстановления репозитория git, доступны оттуда.
Итак, есть ли какая-нибудь команда git или другой инструмент, способный клонировать репозиторий git из gitweb?
(Я мог бы написать бота сам, но не хочу тратить свое время на это, если есть другой способ)
2 ответа
gitweb - это всего лишь Perl-скрипт (gitweb.perl
):
- вызывается Apache (как в этом конфиге)
- который читает голые репозитории со своего сервера.
Если включено вgitweb.conf
gitweb может обслуживать "снимки" (в формате zip или tag.gz), но это не полная история хранилища: это только сжатый архив любого дерева или коммита, созданныйgit-archive
,
http://<gitweburl>/gitweb.cgi?p=<repo>.git;a=snapshot;h=HEAD
Если есть какая-либо команда, ее необходимо выполнить на сервере.
Например, вы можете запросить комплект ( git bundle):
cd /path/to/bare/repo
git bundle create ../repo.bundle --all
Это создаст один файл, который вы сможете восстановить на своей локальной станции и который будет действовать как репозиторий git (только для чтения, только для клонирования / извлечения, без push):
cd /path/to/repo.bundle
git clone repo.bundle
cd repo
Вы можете попробовать получить репо, используя http://
вместо git://
,
Например, репозиторий Linux git по адресу https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/ может быть клонирован с использованием http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Попробуйте заменить git://
с http://
или же https://
и посмотрим, поможет ли это.
Реконструкция git-репозитория файл за файлом может быть возможной, но, учитывая, что репозиторий все еще существует, это не имеет особого смысла. Вы можете попробовать связаться с владельцами репо и проверить, не захотят ли они исправить доступ к репо.