请问代码发布系统中,如何避免多人发布造成冲突而产生发布错了文件?

2017-03-10 17:19:26 +08:00
 pizida

RT. 在下自己打算写一个发布系统,大概思路是通过打 tag 和线上版本进行对比,团队确认没有问题就通过 rsync 同步代码。但是现在有个问题,是假设 A 同事打了一个 tag1 , tag1 和线上版本对比,只有 a 文件有修改。 但这个时候同事 b 也提交了一个 b 文件, b 同事也打了个 tag2 ,和线上版本对比,只有 b 文件有修改。这时候 b 同事先发布。 那么!问题来了,这个时候如果 a 同事进行发布(假设 a 延迟发布了),那么就会把 tag1 发出去,此时将 b 文件给覆盖了。要如何解决呢?我的思路是创建一个发布流程前就加锁,但是这样死感觉很有点 low 。

各位有好的办法吗?

3471 次点击
所在节点    问与答
27 条回复
pizida
2017-03-11 14:42:14 +08:00
@SoloCompany 你好,我用的是 svn 管理项目。是不是应该新建分支开发( svn branch ),然后测试 ok 就 merge 到 master 。然后发布 master 。
pizida
2017-03-11 14:44:47 +08:00
@paulagent 如果 merge 到 master 之后,发现有点问题,这个时候没有回滚,但是其他同事就发布出去了呢?
pizida
2017-03-11 14:53:09 +08:00
@nicevar 如果是用 svn 管理,要如何实现呢 merge request 呢?
julyclyde
2017-03-11 18:40:39 +08:00
@SpicyCat git commit 不记录变更啊
Infernalzero
2017-03-11 19:13:32 +08:00
基于 svn 的这种蛋疼发布系统我之前也有搞过,无非就是仅同步想要发布的文件, php 之类的可能还好些, java 的话一旦有人漏提交就会导致 build 失败,而且还得去发布系统填个发布请求,填上对应的文件,特别蛋疼,只会降低工作效率。讲道理,发布系统就不应该管版本控制的事,做些静态检查倒是可以的,版本控制用 git 或者 hg 完全足够了
Felldeadbird
2017-03-11 22:31:35 +08:00
svn 的话我没解决的方案。
我在的公司内部是用 git 的。每个人都通过分支开发,然后我进行合并到 master 分支。最后通过发布系统推送到对应的服务器。
akira
2017-03-12 01:23:02 +08:00
svn 的话 你要看看分支代码的合并那一块怎么处理的

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

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

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

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

© 2021 V2EX