精華區beta CSSE 關於我們 聯絡資訊
不好意思,標題不知道怎麼下,只好下的很大概。 想請教一個關於版本管理的問題。 目前公司的的版本管理用的是 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
jokker:用git如何? 05/30 22:55
xam:用git換hg有解決yoco的任何問題嗎? 05/31 01:52
tinlans:我比較好奇,兩百萬行怎麼要編數小時,了不起 30 分鐘吧? 05/31 16:33
ykjiang:回 t 大,並不是每間公司都讓 RD 用高檔電腦 ~~>.<~~ 06/01 00:13
tinlans:....我還以為是 -g -O0 / -g -O3 / -O3 各編一遍 06/01 03:03
tinlans:這樣員工等編譯的時間能做什麼其它的事情嗎?跑去開會? 06/01 03:03
xlk:換了mercurial還是能由CI server做dailybuild copy來用吧? 06/01 08:19
poga:Compile時間就是要 http://xkcd.com/303/ 06/01 22:31
yoco315:其實我也很困惑這點,2M行是前輩講的,但是我自己總覺得不只 06/01 23:19