【问题标题】:cloning repository from gitweb从 gitweb 克隆存储库
【发布时间】:2013-12-08 13:17:47
【问题描述】:

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

幸运的是,它的 gitweb 界面仍在工作,重建 git 存储库所需的所有数据都可以从那里获得。

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

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

【问题讨论】:

  • 下面我的回答有什么遗漏吗?

标签: git clone gitweb


【解决方案1】:

gitweb 只是一个perl script (gitweb.perl):

如果enabled in the 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

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

cd /path/to/repo.bundle
git clone repo.bundle
cd repo

【讨论】:

    【解决方案2】:

    您可以尝试使用http:// 而不是git:// 来获取repo。

    例如,https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/ 的 Linux git repo 可以使用 http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 进行克隆

    尝试将git:// 替换为http://https://,看看是否能解决问题。

    逐个文件重构git仓库或许是可以的,但考虑到仓库还存在,就没多大意义了。您可以尝试联系 repo 所有者并检查他们是否愿意修复 repo 访问。

    【讨论】:

    • s/^git/http/ 不起作用,我尝试了其他几种变体但均未成功。到目前为止,repo 所有者还没有回复我的邮件。
    • 考虑到它是一个 git repo,可能有其他人确实有一个克隆。如果项目有邮件列表,你可以在那里试试运气。
    • @ArtenB,当然,social 解决方案就在那里,但问题是这不是我第一次遇到这种情况,我相信有人应该已经编写了能够重建完整 git 存储库的脚本,从 gitweb 服务器获取所有差异。
    • 该脚本当然应该是可能的。毕竟,Gitweb 知道所有的历史。
    猜你喜欢
    • 1970-01-01
    • 2012-02-05
    • 2020-06-03
    • 2018-03-07
    • 2021-12-31
    • 1970-01-01
    • 2014-05-07
    • 2020-06-13
    • 1970-01-01
    相关资源
    最近更新 更多