作者yoco315 (眠月)
看板CSSE
标题[问题] 专案原始码管理的问题……
时间Sun May 30 20:36:38 2010
不好意思,标题不知道怎麽下,只好下的很大概。
想请教一个关於版本管理的问题。
目前公司的的版本管理用的是 rcs,我想建议公司换成 mercurial。
但是遇到一些技术困难,主要是编译时间的问题,想请教一下如何解决。
目前的专案管理是这样:
1. 全部的程式码很大,大月两百万行,编译一次需要数个小时
2. 程式码被根据功能分成十几个 package。
3. 每天都会有个 script co 所有档案,进行编译,
编译完成的话,就会在 /newbuild/ 放一份通过编译的版本,
这个版本不一定是最新的,因为这个版本一天更新一次,
如果该天的编译没有通过,那 /newbuild/ 里面的就是前一天的版本。
/newbuild/ 里面除了有原始码,也有编译好的 .o .lib 等档案。
4. 程式员要进行开发之前,使用一个叫做 cloneAll 的 script,
这个 script 会从 /newbuild/ 建立一份拷贝在 local 端,
但是不是实体拷贝,而是对每个档案建立一个 symblic link。
5. 程式员就在 local 工作,要改档案之前先用 co -l 锁定档案,
改完之後用 ci check in。
这样的优点是程式员在 local 工作的时候,不需要去编译整个 project,
因为从 /newbuld/ cloneAll 的时候,连 .o .lib 也会建起 symblic link,
所以改了哪些就编哪些,不用先浪费几个小时 build 出整个版本。
至於这样的缺点…… T_T
每次改档案都得一个一个 ci,
有的时候改了几十个档案,光是打那几十个档名慢慢 ci 我就想要喷泪,
另外每次要 patch 到某些 release 的时候,都得一个一个档案慢慢 vimdff,
加上眼睛看漏、手滑按错的,几个小时就这样过去了。
所以我才会想用 mercurial,
但是问题在於,如果 mercurial 只 add 了 source code,
那每次 hg clone 下来之後都得先编译整个 project,那就是几个小时,
但是把 .o .lib 也加进 repo 好像又怪怪的,
所以我现在有点困惑,一般面对这种大型的专案,是怎麽进行管理的?
mercurial 是不是不适合?
还是说其实公司本来这样用 symbilic link 的方法是正确的?
感谢。
--
To iterate is human, to recurse, divine.
递回只应天上有, 凡人该当用回圈. L. Peter Deutsch
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.160.116.177
1F:推 jokker:用git如何? 05/30 22:55
2F:→ xam:用git换hg有解决yoco的任何问题吗? 05/31 01:52
3F:→ tinlans:我比较好奇,两百万行怎麽要编数小时,了不起 30 分钟吧? 05/31 16:33
4F:→ ykjiang:回 t 大,并不是每间公司都让 RD 用高档电脑 ~~>.<~~ 06/01 00:13
5F:→ tinlans:....我还以为是 -g -O0 / -g -O3 / -O3 各编一遍 06/01 03:03
6F:→ tinlans:这样员工等编译的时间能做什麽其它的事情吗?跑去开会? 06/01 03:03
7F:→ xlk:换了mercurial还是能由CI server做dailybuild copy来用吧? 06/01 08:19
9F:→ yoco315:其实我也很困惑这点,2M行是前辈讲的,但是我自己总觉得不只 06/01 23:19