承诺在Capistrano部署后回购生产

时间:2014-07-31 21:31:50

标签: git capistrano capistrano3

出于模糊,痛苦的操作原因,生产代码需要将代码检入主Git仓库。

然而,Capistrano 3,在部署时,确实:

execute :git, :clone, '--mirror', repo_url, repo_path

--mirror选项隐含--bare,它创建的目录结构没有.git元数据。

有没有办法在Capistrano 3中覆盖它?

1 个答案:

答案 0 :(得分:0)

由于您要从生产中提交代码(通常是严格的否 - 您应该从patch创建diff,并在本地应用它然后再推送),我假设您已经可以访问您的生产服务器。

这是Capistrano框架之外的灵魂。您需要执行以下操作:

  1. 在生产网站上进行提交
  2. 从那里(从您的服务器)推送到您的主机
    2.1。即,将其推送到托管的仓库位置(如github / bitbucket / gitlab) 2.2。在这里使用http(s)网址(因为否则您可能需要设置ssh密钥)
  3. 将这些更改提取到本地开发者计算机
  4. 使用本地计算机上的capistrano进行全新部署。
  5. 但是,我建议创建一个补丁并按如下方式应用它:

    1. 转到您的生产服务器,不要在那里进行任何提交
    2. 使用git diff > diff.patch.date
    3. 创建所有现有文件的差异文件
    4. 使用scp server/path/to/diff.patch.date local/path/to/repo
    5. 将此修补程序文件复制到您的本地系统之一
    6. 使用git apply diff.patch.date
    7. 应用修补程序
    8. 使用git add . && git commit -m "msg"
    9. 添加并提交更改
    10. 现在进行上限部署
    11. 修改

      重新阅读你的问题之后,似乎Capistrano正在创建一个简单的回购,因此你无法从那里做出提交。如果是这样的话,

      1. 使用git clone original_bare_rep non_bare_repo
      2. 创建另一个非裸版克隆版
      3. 使用git remote add upstream url/to/repo/hosting
      4. 将您的gitlab / bitbucket网址等添加为远程
      5. 提交您的更改并将其推送到上游
      6. 您现在可以进行新的上限部署,或直接推送到裸仓库。