MERCURIALIZE
- RCS or CVS or SVN
- 了解歷史的重要性
- 明白合作的價值
- File based.
- File set based.
- Directory based.
通通都是 centralized。
努力 coding 的時候:
努力 debug 的時候:
- 貯庫轉換 OK for SVN, CVS, BZR, GIT, DARCS (by tailor)。
- TortoiseHg (pre-alpha)。
- 也有像 svk 一樣的 hgsvn (alpha)。
- 安裝 setuptools。
- easy_install mercurial
- 如果在 windows 下,可安裝 PyWin32,這樣 hg clone 就會用 NTFS 的 hardlink。
hg clone blahblah
C:\worktmp>hg clone http://hg.seety.org/software/bambook
destination directory: bambook
requesting all changes
adding changesets
adding manifests
adding file changes
added 51 changesets with 185 changes to 76 files
59 files updated, 0 files merged, 0 files removed, 0 files unresolved
- 先 clone:把別的貯庫拉回來。
- 再 pull:從來源貯庫拉回新資訊。
- 工作之後再 push:把本地貯庫的變更推給來源貯庫。
- ci:把 working copy 變更記入本地貯庫。
- up:把貯庫的變更套進 working copy。
- merge:合併 changeset。
- hg merge; hg commit -m "Merged blahblah."
- 噗的一聲就好了。
- 為了避免麻煩,沒必要的話我們不會在兩處同時修改同一個原始碼檔案。
- 貯庫裡出現兩個 head 時就要 merge。(除非....
和 SVN 不一樣!
- 不是目錄,而是 meta information。
- 各 branches 間不主動 merge。
- 貯庫允許 branch 有自己的 head,不必和別人 merge。
- 不過單個 branch 裡若出現了兩個 head,還是得要 merge 才能繼續長。
- 貯庫本身也可視為 branch。
- branch 出去的貯庫和 mainline branch 獨立作業。
- hg push
- hg push http://the.host/of/the/repository/
- 都可以。
- 所以不是一定要推回「原來那個貯庫」。
- 專案管理員建立公開的共用貯庫,只讓管理員 push。
- 所有開發人員的貯庫都 read-only。
- 大家改好程式 checkin、push 到自己的貯庫。
- 專案管理員決定把誰的哪些變更 pull 到公開的共用貯庫。
- 專案管理員進行發佈工作。
有圖就是比較棒。
- 畫出貯庫的歷史演進。
- hgk 工具是要角。
- 以 TCL/TK script 撰寫。
- 在 Windows 下請安裝 ActiveTcl。
- 如果用 wx 改寫一個一定很酷。
- mercurial 內建 CGI 支援。
- 自己的貯庫用 CGI 就好,省得麻煩。
- 佈署零煩惱;有支援 Python 的 shared hosting 都可以用。
- 喜歡的話也可以用 FastCGI。
- 允許從客戶端 pull 和 push。
- 使用 HTTP basic authentication 資訊。
- 貯庫不能放空目錄。
- mercurial 的 changeset 只記檔案資訊。
- 真要加空目錄,得補個 placeholder 檔案。
- Patch 管理:mercurial queue。
- mercurial queue 就是在主貯庫之外,專門給 patch 建的貯庫。
- Trac 0.10/11 已經有可用的 mercurial plugin。