Git远程日志和变更请求

4

我需要在不克隆仓库的情况下获取有关修订、文件更改和更改的代码行数的数据,我唯一拥有的是一个存储库url。我找到的唯一查看远程更改的命令是git ls remote,但它的输出太简陋了。我该怎么做?


1
我认为如果不克隆存储库,你无法完成这个任务。 - cdhowie
3个回答

6

只使用Git协议无法完成您的要求。

根据仓库托管方式,您可能可以通过Web界面获取一些信息。 Gitweb与Git一起分发,大型托管服务通常有自己的Web界面。


  • gitweb示例:查看标记为1.7.3.2的git.git提交
    • 顶部链接
      • “log”或“shortlog”显示导致该提交的历史记录
      • “commitdiff”访问与父级之间的差异
      • 合并/父对象的缩写对象名称(十六进制字符串)移动到该父级
    • 每个父级链接
      • “diff”链接显示与该父级的差异
      • “commit”链接移动到该父级
    • “tree”链接显示在提交中捕获的文件
    • 每个文件链接
      • “diff”(对于合并,“diffN”)仅显示该文件的差异
      • “blob”显示文件的内容
      • “history”显示导致修改此文件的当前提交的提交

  • GitHub示例:查看标记为1.7.3.2的git.git提交
    • “Commits”选项卡显示历史记录
      • “commit”/“parent”简写对象名称(十六进制字符串)将带您到提交;它显示
        • 更改了哪些文件
          • 右侧的绿色和红色方块显示每个文件中添加/删除的行数
        • 提交的差异
          • “View file”显示整个文件,就像在该提交中捕获的那样
            • “raw”视图/下载文件
            • “blame”显示最近更改此文件每行的提交
            • “history”显示导致更改此文件的当前提交的提交

如果你需要深入研究历史记录,最好克隆存储库(如果托管服务没有某种网络界面,则可能是唯一的方法)。虽然需要使用一些磁盘空间,但你可以获得比网络界面提供更多的信息,并且速度更快。
另外一个可能性是git archive;它是一个可选服务器,因此可能未启用。它允许你下载单个树的归档文件(例如tar或zip文件)。从技术上讲,你可以提取这些归档并手动进行差异分析以获取所需的信息,但这可能比仅克隆存储库并使用正常工具(即使用git log--stat--numstat,带或不带-m/-c/--cc)更加麻烦和低效。

2
如果您的仓库URL是用ssh连接类型的,则可以通过ssh发出远程日志命令,例如:
如果您使用以下命令进行克隆:
git clone username@host:/path/to/repository.git

接下来,您应该能够使用以下命令发布日志:

ssh username@host git --git-dir /path/to/repository.git log

只有在实际的 shell 中才能使用这个功能。大多数系统使用 git-shell,它只允许 receive-pack、upload-pack、upload-archive、cvs 服务器以及明确列入白名单的内容。 - AI0867

1

如果您可以访问服务器,您可以在服务器本地运行 git log 命令,解析数据并将汇总结果发送回去。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接