繁体   English   中英

如何有效地获取特定提交的GitHub存储库?

[英]How to fetch a GitHub repository for a specific commit efficiently?

我正在尝试构建一个持续集成系统。 每次推送到GitHub都会触发构建。

每个构建都需要签出/下载存储库以进行它正在处理的提交。 我正在尝试找到一种方法,在大型存储库上不需要几分钟(因为构建只需要几秒钟......)。

请注意,我不想在构建之间存储数据(这消除了缓存的可能性)。

我探索过的解决方案:

我在GitHub上看到的每个其他解决方案都假定服务器上最近的git版本,或者克隆存储库一次就可以了,但在我的情况下它不是。 我从头开始每次构建(因为这是一个约束)。

所以我在GitHub的特定情况下询问:如何在特定提交下载(以任何方式)代码,以便能够在该提交上运行持续集成工具?

您可以使用以下格式的URL从GitHub下载特定提交的存档:

https://github.com/PROJECT/REPO/archive/COMMITID.zip

例如,如果我有一个名为“dockerize”的项目,并且我想下载提交ID 169532e我可以运行:

curl -OL https://github.com/larsks/dockerize/archive/169532e.zip

我在这里使用了一个简短的提交ID,但您可以使用长提交ID,分支或标记等。

这将为我提供一个.zip存档,其中包含来自该特定提交的文件。 顶级目录将命名为PROJECT-LONGCOMMITID 例如,上面的命令将导致存档,其中顶级目录为dockerize-169532eba46757aca8002e1c9bb257079a739f75/README.md

只会获取该特定提交中的文件; 它不会获取.git目录或任何存储库历史记录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM