如何优雅地维护多个 release 的 git 分支

2022-06-27 05:52:59 +08:00
 runningowl

多个 release 不是不同版本,而是不同客户
比如,main 程序里连的服务器地址不同,总之区别就是一两行字符串的值

现在我们做的是,在一个分支开发(可能并行开几个 feature 分支)
然后完成后 merge 到其他几个 release 分支各自发布
但如果几个客户还好说,如果以后客户多了,这 git 岂不是要开花了
不知道各位有没有什么好的实践分享下

1816 次点击
所在节点    问与答
15 条回复
msg7086
2022-06-27 06:23:11 +08:00
有没有一种可能,放在配置文件里。
HeapOverflow
2022-06-27 07:25:34 +08:00
这个难道不应该用配置文件吗….
wanacry
2022-06-27 07:27:24 +08:00
我的意思是:有没有有这么一种可能🤔
arch9999
2022-06-27 07:37:38 +08:00
目前来说,你是错的,但是过一段时间之后,你会发现楼上几位是错的。
runningowl
2022-06-27 08:03:46 +08:00
额,谢谢,忘了说,是个安卓 app ,不上市场
其实本来默认就是空的,让大家装好 app 自己配,然后客户觉得费事,老板就让给每个客户配好
Chad0000
2022-06-27 08:18:29 +08:00
那其实你不需要不同分支啊,你只需要不同配置文件,每个客户打包使用不同的就行了。
estk
2022-06-27 08:20:28 +08:00
那就根据域名来区分,判断不同域名就连不同服务器地址
estk
2022-06-27 08:20:54 +08:00
@runningowl
不好意思,那就根据包名连不同服务器
onetown
2022-06-27 09:06:43 +08:00
Android 可以在 build 里设置 product flavor , 你可以根据不同的 flavor 来设置资源文件里的值, 你可以搜索 Android product flavor 相关的关键字, 不知道这个是不是 OP 想要的

比如

productFlavors {
app1 {
resValue "string", "app_name", "App 1"
resValue "string", "api_url", "app1.xxx.com/v1/api"
}

app2 {
resValue "string", "app_name", "App 2"
resValue "string", "api_url", "app2.xxx.com/v1/api"
}
}

也可以根据 Flavor 产生不同的包名

applicationVariants.all {
variant ->
variant.outputs.all { output ->
def SEP = "_"
def flavor = variant.productFlavors[0].name
def buildType = variant.buildType.name
def version = variant.versionName
def date = new Date();
def formattedDate = date.format('yyMMdd_HHmm')
def apkName = "android_" + flavor + SEP + buildType + SEP + version + SEP + formattedDate + ".apk"
outputFileName = new File(apkName)
}
}
dqzcwxb
2022-06-27 09:24:25 +08:00
@arch9999 #4 分支隔离配置是对的无论配置是代码还是配置文件,把配置全写一块代价就是完全泄密
msg7086
2022-06-27 09:34:40 +08:00
@dqzcwxb 分支隔离到最后不还在一个 git 库里么,泄密什么的有区别么。
Harry
2022-06-27 09:38:45 +08:00
如果是后端应用,应该进来考虑使用“环境变量”或类似的方式处理。

如果是安卓应用,楼上 @onetown 是正解。不同的渠道包也是这个方式来打。
dzdh
2022-06-27 09:43:24 +08:00
@runningowl #5

启动时从服务器拉配置包传 package 参数啊
maichael
2022-06-27 09:44:30 +08:00
CI/CD 配置好,只要不大幅度涉及业务逻辑层的改动,怎么搞都行。
runningowl
2022-06-27 09:47:57 +08:00
product flavor 好像不错,这就研究下,谢谢

@estk 但我们用的一个名字丢给不同客户,onetown 提供的思路可以试试,应该就有不同包名和对应连接了

@dqzcwxb 因为都是自己维护,而且只是个服务器地址,应该没有泄密问题

当然,所以,不管怎样,好像这个不是 git 应该管的事了?

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

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

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

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

© 2021 V2EX