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

时间:2017-08-12 20:04:24

标签: git github

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

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

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

我已经探索过的解决方案:

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

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

1 个答案:

答案 0 :(得分:2)

您可以使用以下格式的网址从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目录或任何存储库历史记录。