从 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 呢?

8533 次点击
所在节点    git
90 条回复
mio4kon
2015-09-09 13:19:02 +08:00
以前是第一种,现在是第二种
loveisbug
2015-09-09 13:28:26 +08:00
方案 2 。
startry
2015-09-09 14:16:21 +08:00
第一种方案。 一份代码理论上就应该保留一个发布的口, Trunk 是最好的选择。

如果在分支上发布, 那么 Trunk 不能保证是最新最稳定的, 分支上才是最稳定的。

如果使用第一种方案, 发布了 1.0 版本, 切换到分支开发下一版本, 1.0 出 bug 回 Trunk 进行修改。问题是 Trunk 有时候因为协同等原因会被破坏, 这个时候需要 tag 来恢复 Trunk (当然回滚也可以, tag 纯粹最为 bak )。保证无论何时多个部门多个团队协同不会出现太大的问题。

方案二的话需要无时无刻的把 Trunk 往分支里合并, 发布后合并进入主干, 每次需要下一个发布者承担相应的风险
582033
2015-09-09 14:17:35 +08:00
@zioc 可以的,只需要创建一个 "svn-remote" 加一个"git-remote",一个 git-svn dcommit ,一个 git push 即可
ch3n2k
2015-09-09 14:18:00 +08:00
可以用 subgit
LINAICAI
2015-09-09 14:33:35 +08:00
其实这种问题 svn 根本没法完美解决。。。

除非结合 git 或者纯 git , svn 的分支压根就只是个目录的概念
chemandy
2015-09-09 16:17:03 +08:00
听过 git-svn 吧...
loveminds
2015-09-09 16:41:46 +08:00
@zioc 展讯和 MTK 以及高通...内核级或者驱动级的东西么
holy_sin
2015-09-09 18:28:45 +08:00
居然从 git 到 svn +1
imbahom
2015-09-09 18:57:47 +08:00
评论看的乐的不行不行的
zonghua
2015-09-09 19:03:58 +08:00
开源中国的 gitsvn 可以混在一起用,好厉害的样子
billwang
2015-09-09 21:30:01 +08:00
切,你们光见过 git svn 之流,想想我现在用的 vss 是多么奇葩,每次使用我都会发牢骚,虽然只是用来管理文档。
leavic
2015-09-09 21:35:25 +08:00
你们太在意工具链了,很多芯片公司多年来一直都是用 svn ,自己修复了 bug 验证好了再提交合并
lenran
2015-09-09 22:47:31 +08:00
@imlinhanchao 确实如此。

可以提出不同见解。但麻烦各位还是以为 V 友“释疑,解惑”为主!

发扬“人人为我,我为人人”的精神。

最后,也是最重要的,不要歪楼!
juneszh
2015-09-09 23:06:19 +08:00
不明白你们说的 svn 逆天在哪里? 什么一 update 就没有, 难道你们是直接在 svn 检出的文件夹上做本地开发的? 你们的习惯才逆天吧, 用 svn 基本上都是 svn 文件夹和本地开发文件夹分离, 用 BC 做联系的, 实际上 git 就是融合了这个步骤而已. 注重分支的当然用 git , 注重权限管理和文件保密(配置文件)的 svn 是不二之选, 那些说的 svn 是一文不值的真是醉了. 一个工具也能产生优越感.
benatsh
2015-09-09 23:44:55 +08:00
@juneszh
嗯,我也觉得有点狂热了,一个工具而已, SVN 文件夹和本地开发文件夹分离,每次自己再做一个拷贝,以前我们一大帮子人用的也是好好的。而且什么场景用什么工具就好了,什么都要拔到信仰的高度,这楼歪的。。。
jianyunet
2015-09-09 23:57:51 +08:00
聪明的程序员用 git ,真正的程序员用 svn
lenran
2015-09-10 00:53:39 +08:00
该贴已发展为 git 与 svn 的优越性探讨贴!
jdlau
2015-09-10 09:18:34 +08:00
长见识
leefly
2015-09-10 09:26:19 +08:00
/t/219512 😂

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

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

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

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

© 2021 V2EX