使用 git 管理代码,开发分支和线上分支有不同文件,如何处理

2015-11-13 19:06:23 +08:00
 shiziwen

在使用 git 进行代码管理时候,有开发分支 dev ,线上分支 pro 。

在开发的时候,每个人会从 dev 分支上拉出自己的分支,进行开发,完成后合并到 dev 分支上面。
线上环境进行更新的时候,会从 pro 分支上面 pull 最近的代码,然后重启服务运行。

这里有一个问题, dev 分支和 pro 分支,往往会存在几个文件不同情况,例如配置文件 setting 等等。在这种情况下应该如何处理比较合适?

如果 git 中不包含 setting 文件的话,如果配置文件需要更新的话,在线上环境就需要手动修改代码。

请问大家是如何做的?结合 git 做到自动化部署和回退?

多谢

5656 次点击
所在节点    git
11 条回复
raysmond
2015-11-13 19:10:05 +08:00
配置文件不是都区分出 setting-dev 和 setting-prod 不同的文件么?以及 prod 的配置文件为什么要放在 repository 中?各种配置不是放在服务器上单独的目录或环境变量中比较好么?
cxbig
2015-11-13 19:10:13 +08:00
项目的自动化部署用 capistrano ,部署和回滚都很方便
至于 settings ,方法有很多,可以用 capistrano 文件模板,或者直接放在 repo 以外的地方 link 进来
lee015
2015-11-13 19:48:51 +08:00
今天刚好也处理这个问题,我现在是这样:配置文件存两个如 config.php.devconfig.php.pro ,在具体环境复制一份去掉后缀,然后 gitignore config.php 。这样配置在 repo 里,也不相互影响。不过改了 repo 里配置要生效的话得手动再复制一份去后缀。
HentaiMew
2015-11-13 20:10:34 +08:00
有些情况下,例如开发环境中的部署环境中有一些配置不一样,比如 zookeeper 的 ip 地址不同等。

一般这种情况下,直接提交开发环境中的配置。在开发和部署(运行环境)之间有一个 CI 过程,例如 jenkins ,利用 CI 工具替换不同的配置文件。然后再部署。

毕竟整个发布过程都是 CI 工具自动化做的,不需要人为干预。
lightening
2015-11-13 20:32:16 +08:00
你的自动化部署工具会管的吧……

Capistrano, Docker 都可以 link 进其他的文件。
ETiV
2015-11-13 20:37:08 +08:00
settings 复制一份成为 settings-example. 里面实际填的值改成 example 值

.gitignore 增加 settings 文件名

git 删掉 settings, 增加 settings-example

线上部署前, cp settings-example settings
编辑 settings 里的设置, 开跑
cwek
2015-11-13 21:24:24 +08:00
从同一个主线分开分支后,每个对应的配置文件改一次,以后不要乱后回去就是了。
现在就是这样干。
clino
2015-11-13 21:29:04 +08:00
把 settings 用另外一个 git 库管理起来然后 link 进去
konakona
2015-11-13 21:39:43 +08:00
Git Flow.
msg7086
2015-11-14 12:01:16 +08:00
Rails 项目的话有自动部署可以用。
很多系统都可以做约定优于配置,开发机上用约定参数,线上机器用配置参数就行了。
比如 PHP 的话

$database = 'xxx';
$user = 'uuu';
if (file_exists('config.php')) require_once('config.php');
jakehu
2016-03-23 10:55:47 +08:00
好吧 我现在也遇到这个问题了 楼主最后怎么解决的?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/236035

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX