除了可以很方便的追蹤,交換,合併,比對檔案外,
更能保護檔案不會受到一些意外而讓心血的結晶損毀,
也可以讓團隊合作時,更加有效率。
以下簡單介紹 Subversion (Server端) 及TortoiseSVN (Client端)
在單人工作,及多人工作時的一些設定及用法,希望能幫助更多人上手
1.
在完全個人的環境下,在沒有多人共用及網路的需求下
其實不需要Subversion 去架設Server ,僅僅使用 TortoiseSVN 即可
可以在自己電腦上進行檔案版本的控制,
不過建議至少要兩顆以上硬碟,並將檔案庫及工作目錄分開放置
假設工作目錄為 C:\MyDocuments ,檔案庫目錄為 D:\SVN
首先先到 TortoiseSVN 的官方網站下載最新版軟體 並且安裝
建立好目錄後,在檔案總管 D:\SVN 當中 按下滑鼠右鍵
選擇 TortoiseSVN ->在此建立檔案庫 選擇原生檔案系統 按下確定
再來到 C:\MyDocuments 按下滑鼠右鍵選擇 SVN取出 (SVN Check Out)
在檔案庫URL中輸入 "file:///D:/SVN" (或是點擊 "..."按鈕直接選取)
按下確定完成第一次的Check Out
之後就可以在 C:\MyDocuments 目錄下進行工作
另外 記得 D:\SVN目錄要備份定時備份
2.
在多人工作或是在公司內、實驗室內做檔案管理時
架一台Server就是必要的工作了
以Windows為例 要架設Server實在是非常簡單
首先先下載 Subversion 並且安裝他 (預設路徑 C:\Program Files\Subversion)
在命令列環境下 下達命令
sc create "svnservice" binpath= "C:\Program Files\Subversion\bin\svnserve.exe --service --listen-port 5678 --listen-host 0.0.0.0 -r D:\SVN" displayname= "SVN Service" depend= Tcpip
可以將 SVN 設為 Windows 的 Service 讓他每次開機自動執行
並且指定 D:\SVN 為預設的檔案路徑
以及指定 5678 為網路連線的Port (請自行更換)
到 控制台 -> 系統管理工具 ->服務 當中 找到"SVN Service"
把他設為自動 並且啟動之後 就可以開始使用 (請確定防火牆是否開啟)
如果 D:\SVN 還沒建立檔案庫 請使用 (1) 的方式
或是在命令列鍵入以下指令來建立檔案庫
svnadmin create D:\SVN --fs-type fsfs
而Client端的設定一樣 要先下載 TortoiseSVN 並安裝後
在你所選擇的工作目錄中 按下滑鼠右鍵選擇 SVN取出 (SVN Check Out)
並在檔案庫URL中輸入 svn://ServerIp:5678/
其中 ServerIP 為 你所架設SVN Server的IP (或是Domain Name)
3.
對於檔案庫 可以對他進行權限的控管
首先打開檔案庫中 conf目錄下的 svnserve.conf檔案
拿掉命令前的 # 結果為以下所視
[general]
anon-access = none #表示匿名者存取不能 若改為read表示可讀不可寫入
auth-access = write #表示登入者可以存取
password-db = passwd #存放帳號密碼的檔案
authz-db = authz #可對使用者分群組 以及對檔案庫中的目錄進行控管(非必要)
再開啟 檔案 passwd
並且依照 "帳號" = "密碼" 的原則輸入即可
請注意 這裡的密碼是明文 (和Apache的不一樣)
如要分群組 如要分群組請再打開 檔案 authz
以類似以下的方式進行設定 (請不要使用中文 XD)
[groups]
群組 = 使用者
群組1 = 使用者1,使用者2
群組2 = 使用者1,使用者3
群組3 = 使用者3,使用者4
[/]
@群組 = rw #群組擁有整個資料庫的存取權限
* = #其他人不能存取
[/目錄]
@群組1 = rw
使用者3 =
使用者4 = rw
* = r
4.
以上介紹的是所謂的單一檔案庫的方式
其實也可以共存多個檔案庫
例如 將 D:\SVN設為SVN Server的跟目錄 不過不在這裡建立檔案庫
在 他的子目錄建立檔案庫 例如 D:\SVN\Proj1
在客戶端存取時一樣只要加上路徑Proj1即可
建立多個檔案庫的優點是可以分散風險 避免當檔案庫損毀的危險
另外也可以使的檔案版本編號成長的慢一些 ^^
缺點就是 設定跟權限都要各自維護
5.
這是我使用SVN幾年來的一點點心得
不要將一些不該存的檔案放到檔案庫中
以程式設計為例 不要將*.o *.obj *.dll *.exe *.tmp等檔案上傳
這些除了有些是暫存檔外 有些可以利用其他檔案 經由簡單步驟所產生(編譯)
但是 相對的 *.sln *.vcproj (Visual Studio的專案檔)或是其他專案檔 就一定要保留
才能讓其他人也利用檔案庫中有的檔案 快速的產生結果
另外 也不需要將檔案壓縮起來之後 在放入檔案庫
檔案庫會自動幫你做檔案的壓縮
壓縮起來反而不利做版本之間的比對
要大幅度修改文件內容 或是要將原文件修改到另外一個用途
不需要先將原文件複製到另一個文件夾或是加一個.bak做區隔
反而浪費容量 也不易管理
直接使用SVN提供的 分支(branch) 或是 標記(tag) 功能即可
如果有一個文件會有多人要修改 尤其是 Word , Excel 這種文件
(存成二進位檔 非明文 的文件)
在開始修改前 要先將他鎖定 等修改完之後在解除
因為這類檔案 不像程式碼 或是一般txt 存成明文的文件
可以簡易的進行比對 分析差異 當你在修改時 有其他人已經修改並上傳
就會非常麻煩....
修改前最好先進行 更新 (Update)的動作 讓自己要修改的版本是最新的
修改完成後(測試後)也要馬上進行 上傳修改(Commit)的動作
6.
SVN本身還可以搭配Apache使用http / https 的協定
或是搭配 SSH 軟體 使用安全的加密通道來存取
不過這屬進階設定 就不在這裡討論
Subversion官方網站 http://subversion.tigris.org/
TortoiseSVN官方網站 http://tortoisesvn.tigris.org/
SVN Book(英文) http://svnbook.red-bean.com/nightly/en/index.html
SVN Book(中譯) http://svn.stu.edu.tw/svnbook/book.html
jedi.org 旅行必備、居家良伴、送禮自用兩相宜的「版本控制系統」http://jedi.org/blog/archives/004784.html
Jserv's blog 淺談版本控制系統 http://blog.linux.org.tw/~jserv/archives/001148.html
Seety 利用 SVN 進行版本控制 http://www.seety.org/technote/programming/svn_intro
7.
以上文章歡迎轉載 請保留文章完整並註明出處 JoStudio
有任何錯誤歡迎指正 感謝
7 comments:
想請問一下,windows下備份SVN的repository用哪種方法比較好?
1.用svn dump d:\svn > svn.dump
2.用您說的方法把整個d:\svn整個壓縮備份
PS:所謂的比較好是說重新安裝windows以及SVN之後,哪種比較容易回復而不用繁雜的設定即可馬上開始使用。
其他備份及同步的作法請看
http://jostudio.blogspot.com/2007/06/svn.html
抱歉,還是SVN的新手所以還有點疑問:
1.hotcopy也會保存歷次版本資訊嗎?SVN本來就是拿來做版本控制,所以備份的時候不備份以前的版本似乎有點怪?
2.SVN我只安裝在本機給自己使用,repository也只有一個(平常就是在用這個),這應該算是服務中吧?我其實也還沒搞懂…
3.dump的使用時機為何呢?
hotcopy 就是將現有檔案庫複製一份到其他地方 他會保留所有原始資訊在 當然也包括所有舊的版本
SVN 只有自己在用就直接壓起來就好XD
dump也是可以拿來備份啦 只是他要先將檔案轉存 再用load重新匯入 感覺就麻煩許多...
另外 如果怕放在自己電腦不安全 可以多多利用sync同步的功能 備份到另一台電腦或是另一顆硬碟
修正一下 dump作為備份或是檔案庫搬遷也蠻方便的
還可以跟其他檔案庫進行合併 只要目錄或檔名不衝突即可
不過一樣 沒有辦法匯出檔案庫設定 不過應該不是問題才是
大大,方便請教您svn的問題嗎?
張貼留言