[英]How to fetch a GitHub repository for a specific commit efficiently?
我正在尝试构建一个持续集成系统。 每次推送到GitHub都会触发构建。
每个构建都需要签出/下载存储库以进行它正在处理的提交。 我正在尝试找到一种方法,在大型存储库上不需要几分钟(因为构建只需要几秒钟......)。
请注意,我不想在构建之间存储数据(这消除了缓存的可能性)。
我探索过的解决方案:
git clone
然后检查提交:工作但是大型存储库需要几分钟 我在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.