在无法访问的服务器上自动部署git

时间:2016-02-15 22:53:29

标签: linux git

我有几台服务器无法通过SSH或HTTP直接联系,但他们可以连接到互联网。

我想找到一种通过git自动部署更新的智能方法。我可以做一个定期执行git pull的脚本,但这似乎不是最好的方法。

在这种情况下管理git部署的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

您可能需要查看" git bundle"

我已经在"空气中使用了这个"系统之前。

git bundle create <file> <git-rev-list-args>

git bundle verify <file>

创建捆绑包后,您可以使用&#34; git clone&#34;或者&#34; git pull&#34;反对捆绑。

这是来自&#34;捆绑&#34;:

的手册页
  

某些工作流程要求在一台计算机上将一个或多个开发分支复制到另一台计算机上   机器,但两台机器不能直接连接,因此交互式Git协议(git,   ssh,rsync,http)无法使用。此命令提供对git fetch和git pull的操作支持   在原始计算机的归档中打包对象和引用,然后将它们导入另一个   在通过某种方式移动存档之后使用git fetch和git pull(例如,通过sneakernet)。没有   存储库之间存在直接连接,用户必须为所持有的包指定基础   目标存储库:该包假定基础中的所有对象都已在目标中   库中。

答案 1 :(得分:0)

  

您只需要将捆绑软件复制到可以从另一个系统访问的机器上,然后将文件复制过来,然后从捆绑软件中进行git pull

Git 2.25(2020年第一季度)解释了原因。

请参见commit 0e40a73Philip Oakley (PhilipOakley)(2019年10月20日)。
(由Junio C Hamano -- gitster --commit 7c88714中合并,2019年12月10日)

  

Doc:捆绑文件的使用情况

     

签名人:Philip Oakley

     

改善命令描述,包括段落间距。

     

Git URL可以接受捆绑文件以进行提取,提取和克隆,包括在该部分中。在捆绑软件使用情况说明中包括git clone。更正<git-rev-list-args>的引用。

     

详细介绍用于克隆完整存储库的<git-rev-list-args>选项。

所以更新后的git bundle documentation现在包括:

  

git bundle”命令将对象和引用打包在原始计算机上的存档中,然后可以使用“ git fetch”,“ git pull”或“ “ git clone”,通过某种方式(例如,通过sneakernet)移动档案后。

也:

  

git clone可以使用创建的任何没有否定参考规范的捆绑包(例如new,但不能old..new)。   如果您想匹配git clone --mirror(其中包括诸如refs/remotes/*之类的裁判),请使用--all
  如果要提供与直接从源系统信息库获得的克隆相同的引用集,请对--branches --tags使用<git-rev-list-args>