Git 在Capistrano部署后提交生产回购

Git 在Capistrano部署后提交生产回购,git,capistrano,capistrano3,Git,Capistrano,Capistrano3,由于晦涩、痛苦的操作原因,生产代码需要将代码签入主Git回购 但是,Capistrano 3在部署时会: execute :git, :clone, '--mirror', repo_url, repo_path -mirror选项暗示了-bare,它创建了没有.git元数据的目录结构 在Capistrano 3中有没有办法覆盖这一点?因为您是从生产环境提交代码的,这通常是一个严格的“否”-您应该从diff创建一个补丁,并在本地应用它,然后进行推送,我假设您已经可以访问生产服务器 这是Capi

由于晦涩、痛苦的操作原因,生产代码需要将代码签入主Git回购

但是,Capistrano 3在部署时会:

execute :git, :clone, '--mirror', repo_url, repo_path
-mirror选项暗示了-bare,它创建了没有.git元数据的目录结构


在Capistrano 3中有没有办法覆盖这一点?

因为您是从生产环境提交代码的,这通常是一个严格的“否”-您应该从diff创建一个补丁,并在本地应用它,然后进行推送,我假设您已经可以访问生产服务器

这是Capistrano框架之外的解决方案。您需要执行以下操作:

在生产站点上进行提交 将它从服务器推送到主机 2.1. i、 例如,将其推送到托管的回购位置,如github/bitbucket/gitlab 2.2. 在此处使用https url,否则可能需要设置ssh密钥 将这些更改拉到本地开发人员机器中 从本地计算机使用capistrano重新部署。 但是,我建议创建一个补丁并按如下方式应用它:

转到生产服务器,不要在那里进行任何提交 使用git diff>diff.patch.date创建所有现有文件的diff文件 使用scp server/path/to/diff.patch.date local/path/to/repo将此修补程序文件复制到一个本地系统 使用git Apply diff.patch.date应用修补程序 使用git Add添加并提交更改git提交-m msg 现在进行cap部署 编辑

在重新阅读您的问题后,Capistrano似乎正在创建一个裸回购协议,因此您无法从那里进行提交。如果是这样的话,

只需使用git clone original_bare_rep non_bare_repo制作另一个非裸体的repo克隆 使用git-remote-Add-upstream-url/to/repo/hosting将您的gitlab/bitbucket url等添加为远程 提交您的更改并将其推送到上游 现在,您可以进行新的cap部署,或者直接推送到裸回购。
谢谢你的回答。我特别寻找CAP3的配置选项来覆盖这种行为。创建一个单独的回购协议是可行的,但如果可能的话,我想避免它。我可以用非镜像版本覆盖Cap任务