我正在尝试构建一个持续集成系统。每次推送到 GitHub 都会触发一次构建。
\n\n每个构建都需要签出/下载其正在处理的提交的存储库。我正在尝试找到一种在大型存储库上不需要花费几分钟的方法(因为构建只需要几秒钟\xe2\x80\xa6)。
\n\n请注意,我不想在构建之间存储数据(这消除了缓存的可能性)。
\n\n我探索过的解决方案:
\n\ngit clone然后检查提交:可以工作,但对于大型存储库需要几分钟我在 GitHub 上看到的所有其他解决方案都假设服务器上有最新的 git 版本,或者克隆存储库一次就可以了,但就我而言,情况并非如此。我的每个构建都从头开始(因为这是一个限制)。
\n\n所以我在 GitHub 的具体情况下问:如何(以任何方式)下载特定提交的代码,以便能够在该提交上运行持续集成工具?
\n您可以使用以下形式的 URL 从 GitHub 下载特定提交的存档:
https://github.com/PROJECT/REPO/archive/COMMITID.zip
Run Code Online (Sandbox Code Playgroud)
例如,如果我有一个名为“dockerize”的项目并且我想下载提交 ID,169532e我可以运行:
curl -OL https://github.com/larsks/dockerize/archive/169532e.zip
Run Code Online (Sandbox Code Playgroud)
我在这里使用了短提交 ID,但您可以使用长提交 ID、分支或标签等。
这将为我提供.zip包含该特定提交的文件的存档。顶级目录将被命名为PROJECT-LONGCOMMITID. 例如,上述命令将生成一个顶级目录为 的存档
dockerize-169532eba46757aca8002e1c9bb257079a739f75/README.md。
这只会让您获得该特定提交中的文件;它不会获取.git目录或任何存储库历史记录。
| 归档时间: |
|
| 查看次数: |
2999 次 |
| 最近记录: |