2010/12/28

svn server on win-xp

自從兩年多前寫過一篇 svn 至今,終於「穩定」下來了,現在來寫一下 subversion server 安裝的部份。

先轉述一篇好文章的話:
匪夷所思的是國內資訊軟體公司中的資訊工程師似乎對其非常陌生」,
沒有 CVS/SVN 這類版本控制工具,任何修改程式碼的動作都會增加 programmer 大腦記憶體的負擔, programmer 將會浪費許多時間在搜尋與比對程式碼的工作之上』


subversion 原先由 CollabNet 維護,目前由 Apache 納入其專案中,可以至 Apache Subversion 專案查詢相關資訊。


---server---


1. 下載: 自 VisualSVN 下載最新的 binary, 我目前抓到的是 2.1.5
2. 執行它....這不必我多說,它是個 MSI 檔,可以自動進行大部份自動安裝工作,內含 svn server 2.1.5, 及 apache 2.2.17, svn client 1.6.15
3. 在安裝中,我選的是『Use Windows authentication』,畫面如下

4. 安裝之後,會問你要不要執行 VisualSVN Server Manager, 可以不執行,也可以叫出來看,當然看完可以按右上角的叉叉關掉,背景的 server 仍然會一直跑。畫面如下:
5. 接下來算是要維持日常的 server 維護工作,第一件事當然就是準備倉庫給 client 使用。做法很簡單,透過上面的管理界面跟檔案總管非常相像的按右鍵新增即可,畫面如下。仔細看的話,其實我是在最上層用『Create New Repository」新增了 EE1 這個倉庫,並在其下用『新增』『Project Structure』的方式新增了 android-testsuite 及 mfg-dll 兩個專案:
6. 檢查一下硬碟。根據上面的設定,我是把倉庫(Repository)放在 D:\SVN, 會發現 D:\SVN 確實有 EE1, 可是 D:\SVN\EE1\ 卻沒有 android-testsuite, 或是 mfg-dll 兩個目錄!!! 這是為什麼?原因是 EE1 是倉庫,而 android-testsuite, mfg-dll 兩個只是倉庫中的存貨。所有存貨都是在版本控制內的實體,而 subversion 並不是依靠存實體檔案的方式來控管,因此,請勿自行處理 D:\SVN\ 下面的目錄或檔案,這樣很容易損毀 subversion server system.

7, 接下來就是 client 端的操作了,可以看我那篇 svn 裡面的『TortoiseSVN (Client端) 使用流程』 一節。或是繼續往下看

---client---

1. 上傳新專案,通常新專案都是寫好一堆檔案了,此時可以一批次的上傳,在裝好 subversion client 之後,在要上傳的目錄按滑鼠右鍵,選擇 TortoiseSVN-->Import 即可,畫面如下

2. 在 Import 畫面照理說,應該填上面 server Manager 新增出來的倉庫網址,不過我習慣在一個倉庫裡放不同的 Project,其觀念與正統版本控制不太相符,但是帳號比較好管理。畫面如下:
  值得注意的是,我在硬碟中的目錄名稱是 SDC_FactoryDLL,而在 svn server  放的卻是 mfg-dll ,兩個可以是不一致。而完整的 subversion url 是 https://an970100770.quanta.corp:8443/svn/EE1/mfg-dll 而不是倉庫 url https://an970100770.quanta.corp:8443/svn/EE1

3. 如此一來,svn server 已經有所有檔案,而你原來上傳的目錄是在尚未管理的原始狀態。我這麼說你可能不是很懂,底下有兩個作法可以讓你體驗,看你喜歡哪一種挑選之實作一下:
  a. 刪除原來的整個目錄
  b. 選一個跟原來的目錄不同層的新工作目錄
然後.....在新工作目錄下,用滑鼠右鍵選 SVN Checkout, 在 url of repository 中填入 https://an970100770.quanta.corp:8443/svn/EE1/mfg-dll 即可完成工作,不過 Checkout Directory 則仍然會是倉庫的網址,我是另外存到相對應的目錄。畫面如下。當然第一次免不了要輸入帳號密碼。因為我在設定 svnserver 時用的是 windows 的認證機制,因此請填入你登入 windows 的帳號密碼即可。


檢查一下新下載的目錄,會發現每一層新的目錄都會多了一個 .svn 的子目錄,代表目前正受版本控制當中。

4. 若你想移除檔案的話,請不要直接刪除,而是透過 TortoiseSVN-->delete 來操作,因為這樣才會通知 server 做刪檔動作,若只是透過檔案總管操作刪檔的話,server  並不知道你要刪檔,這樣一來下次與系統同步更新時又會把你想刪除的檔抓下來。

5. 當你修改完程式之後,可以在檔案總管發現目錄變成紅色的驚嘆號,代表該目錄已經有被更動,你可以選擇馬上上傳到 server, 或是等工作到一段落後再上傳,畫面如下:



6. 所謂上傳到 svn server, 其實就是 svn commit 命令,畫面如下
7. 以上已經可以完成大部份的工作....不過最強的不是上傳檔案,否則你大概也會想說還不如直接壓縮來放就好。我們來看看一個基本的操作,跟前一版比對,畫面如下:
你可以發現右邊是新版的,它把變動的部份用黃色標註出來了

8. 若養成好習慣的話,每次上傳更新檔時都寫 log 訊息的話,這樣你可以透過 svn log 去取得上傳的 log 訊息,畫面如下:

9. 這樣一來,你知道了每次的更改,也就能隨時回到你想要的版本去,畫面中有個選項我一直沒提,就是 HEAD, 這代表最新的版本,例如我要回到「最原始」的狀態,以這邊來說是 revision 12....那就 checkout 的畫面填入 12, 要回到最新的版本,就勾選 HEAD, 勾選回到 revision 13 的畫面如下:


0 意見: