11.14.2006

Use SVN for Personal SourceCode control

其實自己寫code也有版本控制需求,否則一天到晚copy rename 也很浪費時間(空間),但是用到VSS又有點麻煩,也不適合個人使用。所以就用SVN。
安裝部份,為了怕麻煩,所以裝SVN就好,不裝apache。ref link : http://blog.yam.com/jaceju/archives/2150759.html
(為了避免lost,已將內容copy 到notes中)

安裝svn-win32-1.4.2
安裝其實很linux style,就是解開zip,放到硬碟裡,然後把folder的bin 加到系統的path中。
為了將repository folder區分開來,所以新增一個folder: C:\Repository,用來存放d repository用。

因為沒有安裝apache,所以create repository 都要用command line:
到C:\Repository下,svnadmin create test01
這樣就create一個"test01"的repository。

在C:\Repository下會產生一個test01 folder,conf folder裡面會有一些設定:
svnserv.conf , passwd, authz. 每個repository 都可以分別設定r/w權限。

client端為了方便,可以安裝TortoiseSVN,安裝完後,會跟shell整合在一起,所以用起來比較方便,但是shell 反應會比較慢。
使用上..

CE 中最常變更的就是platform 下的*.bib, *.reg。

  • 在repostory create mimicpc folder (project). 修改conf 下檔站,設好權限。
  • 在WINCE500 右鍵, checkout 選 svn://localhost/mimicpc
    這時候只有將WINCE500 和 mimicpc repository sync,沒有加入任何source。
  • 到WINCE500,對platform 右鍵,選"Add" 之後再"Commit",會等一陣子,將WINCE500下所有sorce都列出,讓你選擇實際要Add 的哪幾個file。
    可以選deselect all,然後再將platform.bib check - 這樣就只有platform.bib會被 commit。不用將整個folder都checkin。
  • SVN會將該folder的root folder 也 commit in,也就是說會perserve source hierichy。
之後,只要每次有修改source前,就把該file "Add" 就可以。
每次build success 也不要忘記 commit。

這樣,就可以任意修改,也可以隨時找回任一次的修改內容。

* 這樣作有一個壞處,因為file 是一點一點加進去的,SVN 會紀錄file加進去的時機,所以如果回到某一個file 還沒加進去的revision,SVN反而會把那一個file 刪掉。

如果是這樣,就要手動,用View Repository 把那個file "save as" 回來... 當然,你要知道有哪些file被刪掉才行。



採用incremental approach 開發(修改),每次修改一個不在svn control 的source時,記得將他Add and Commit 一次",之後修改過N次都不用處理,直到某一function 完成(build and test OK) 時,才將整個project commit。


有時候,update folder 時會出現"Not Authorize to open root of edit operation"。
這是一個buf,只要在該reposfitory folder的conf\svnserve.conf 中,有:
 anon-access = read
允許anonymouse read,同時在conf\authz 中[\] 有
 * = r
允許guest read,就會出現這個message。
所以..把svnserv.conf中anon-access=read comment掉就可以。
但是注意,[\]要加入 " * = r "

要將某個file 回到前面的revision:
  • 用 "Show Log" 列出 該file相關的revision history
  • 選擇你要的revision
  • 然後 "Revert to this revision"
這樣該file 就會顯示"not sync" (modified) 的狀態,如果要回到最新,要用"revert"。

要到任一個revision,一樣,用Show Log,然後 update to the revision

沒有留言: