作者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