从gitweb克隆存储库

sal*_*lva 18 git clone gitweb

我想克隆git://服务器已关闭的git存储库.

幸运的是,它的gitweb接口仍在工作,并且可以从那里获得重建git存储库所需的所有数据.

那么,是否有任何git命令或其他工具能够从gitweb克隆git存储库?

(我可以自己写一个机器人,但如果有另一种方法,不想浪费我的时间去做)

Von*_*onC 8

gitweb只是一个perl脚本(gitweb.perl):

如果启用gitweb.conf,gitweb可以提供"快照"(zip或tag.gz格式),但这不是存储库的完整历史记录:它只是由任何树或提交的压缩存档git-archive.

http://<gitweburl>/gitweb.cgi?p=<repo>.git;a=snapshot;h=HEAD
Run Code Online (Sandbox Code Playgroud)

如果有任何命令,则需要在服务器上执行.
例如,你可以要求一个bundle(git bundle):

cd /path/to/bare/repo
git bundle create ../repo.bundle --all
Run Code Online (Sandbox Code Playgroud)

这将创建一个文件,您可以sftp回到本地站,并充当git存储库(只读,克隆/拉动,无推送):

cd /path/to/repo.bundle
git clone repo.bundle
cd repo
Run Code Online (Sandbox Code Playgroud)


Art*_*emB 1

您可以尝试使用http://而不是获取存储库git://

例如,可以使用http://git.kernel.org/pub/scm/linux克隆https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/上的 Linux git 存储库/kernel/git/torvalds/linux.git

尝试git://http://or替换https://,看看是否有效。

逐个文件重建 git 存储库也许是可能的,但考虑到存储库仍然存在,它没有多大意义。您可以尝试联系存储库所有者并检查他们是否愿意修复存储库访问权限。

  • @ArtenB,当然,*社交*解决方案是存在的,但问题是,这不是我第一次发现这种情况,我确信有人应该已经编写了能够重建完整 git 存储库的脚本来自 gitweb 服务器的所有差异。 (2认同)