从 git 迁到 svn,求教大家单位上 svn 都是怎么用的?

2015-09-08 18:02:36 +08:00
 zioc

trunk 为主开发目录, branches 为分支开发目录, tags 为 tag 存档目录(不允许修改)。但是具体这几个目录应该如何使用, svn 并没有明确的规范,更多的还是用户自己的习惯。

对于这几个开发目录,一般的使用方法有两种。

1.第一种方法,使用 trunk 作为主要的开发目录
一般的,我们的所有的开发都是基于 trunk 进行开发,当一个版本 /release 开发告一段落(开发、测试、文档、制作安装程序、打包等)结束后,代码处于冻结状态(人为规定,可以通过 hook 来进行管理)。此时应该基于当前冻结的代码库,打 tag 。当下一个版本 /阶段的开发任务开始,继续在 trunk 进行开发。
此时,如果发现了上一个已发行版本( Released Version )有一些 bug ,或者一些很急迫的功能要求,而正在开发的版本( Developing Version )无法满足时间要求,这时候就需要在上一个版本上进行修改了。应该基于发行版对应的 tag ,做相应的分支( branch )进行开发。

2.第二种方法,在每一个 release 的 branch 中进行各自的开发, trunk 只做发布使用。
这种开发模式当中, trunk 是不承担具体开发任务的,一个版本 /阶段的开发任务在开始的时候,根据已经 release 的版本做新的开发分支,并且基于这个分支进行开发。

第一种好还是第二种呢?

需求就是:
1.0 发布了,做 2.0 时,发现 1.0 有很急的 bug 要解决(需要发布 1.0.1 版),如果这些 bug 在 1.0 解决了,怎么更新到 2.0 呢?

8520 次点击
所在节点    git
90 条回复
Phariel
2015-09-08 21:05:55 +08:00
竟然从 git 迁到 svn ,我真是日了 doge 了。。。
msg7086
2015-09-08 21:14:42 +08:00
#13 @zioc 你以为别人是为了什么才从 svn 换到 git 的?
zioc
2015-09-08 21:20:11 +08:00
@msg7086 都说了,没办法 公司的产品是全端,甚至包括 asha 、展讯、黑莓、 mtk 。。。都在 svn 。


@Phariel
@perpyy
@wizardoz
@Menng
...
zioc
2015-09-08 21:20:27 +08:00
@PINK0FLOYD 这个想过,麻烦
msg7086
2015-09-08 21:21:44 +08:00
@zioc 人们抛弃 SVN 就是因为分支反人类啊。
yhxx
2015-09-08 21:33:19 +08:00
好神奇。。。竟然从 git 迁移到 SVN 。。。。
LINAICAI
2015-09-08 21:37:00 +08:00
从 git 迁移到 SVN
+ 10086
xuxanwan
2015-09-08 21:40:32 +08:00
....git --> svn 你这是倒着走啊
lightening
2015-09-08 21:45:03 +08:00
不能用 git-svn 吗?
ChanneW
2015-09-08 21:45:32 +08:00
自己试过方案 1 ,感觉 trunk 不好。
当前的公司方案 2 , tag 作为发布,和 git 用的流程差不多。
ostholz
2015-09-08 22:06:15 +08:00
很多大公司的代码管理是比较拖后的。 这个是也没有办法的事儿。
JobsLong
2015-09-08 23:11:23 +08:00
有个工具好像叫做: git-svn 可以互相转换
billlee
2015-09-08 23:20:09 +08:00
公司 SVN 还能怎么用,当 FTP 用啊
jhdxr
2015-09-08 23:20:56 +08:00
这么多无意义的吐槽也真是醉了。。。虽然。。。我也想吐槽。。。

之前在阿里用的接近模式 2 ,每次任务基于 trunk 新开一个分支,上线的时候合并回 trunk 。
至于 LZ 你所提到的情况, svn 也是有分支合并功能的啊!!!
ibcker
2015-09-08 23:22:08 +08:00
@ifconfig 你口味好重···
FrankFang128
2015-09-09 01:15:43 +08:00
svn 很难用,你只用 update 和 commit 两个功能就好啦 ~~~
Tedko
2015-09-09 01:24:49 +08:00
你用 git svn 之类的工具好了 n 。开发时候还是用 git
incompatible
2015-09-09 01:42:02 +08:00
这帖子噪音真大。


我之前所在团队的做法:

- 严禁直接在 trunk 上开发
- 每个 feature 的开发启动后,从 trunk copy 至新的 branch ,在 branch 上开发、提测、测试
- 基于 branch 机制,可以同时有多个 feature 并行开发
- 测试通过后把 branch merge 至 trunk (此时的 trunk 可能已经被合并了其它 branch 的代码,跟当初 copy 至此 branch 时已经不一样了,所以需要回归测试)。此时锁定 trunk ,不允许任何 merge 或 copy from 。在 trunk 做回归测试
- 回归测试通过后,把 trunk copy 至 tag ,使用 tag 打包、部署上线。解锁 trunk
- 当线上代码发现 bug 时,依然是通过开新的 branch 来解决 bug 具体流程同上
- 如果某个 branch 的开发时间非常非常长,在它开发结束时, trunk 上可能已经被 merge 了好多 branch 。这时为了降低把 branch merge 回 trunk 时解决冲突需要的时间以及回归测试的成本,会采用先把 trunk merge 至 branch 、先在 branch 上回归测试的方式
Wangxf
2015-09-09 01:44:33 +08:00
svn 几乎 0 学习成本,下载个小乌龟就行了
forcecharlie
2015-09-09 03:54:59 +08:00
@zioc 查看 svn merge 命令,也可以获得 修改的 diff 然后 trunk 合并。

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

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

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

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

© 2021 V2EX