﻿# 個人的文件檔案版本管理(Subversion)

我們有許多「暫存」的檔案常常亂擺一通，不然就是修修改改的，如果不敢刪除的時候，就會多複製一份起來存到另一個目錄去，等一段時間後檔案就亂七八糟了！

我個人是有將個人的檔案做版本管理的習慣，同一個檔案怎麼修修改改都沒關係，想要抓前天的版本就只要 Show log 一下就可以將前天的版本抓回來了。

以下是我設定 Subversion 的方式，全部都是在 Windows XP 下完成的。

**執行環境**

> 必須先安裝 [TortoiseSVN](http://tortoisesvn.net/) 工具

**設置 SVN 儲存庫(SVN Repository)**

>  1. 建立 SVN 儲存庫專用的目錄
> 
>     C:\\MySVN

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/24b22c6adea7ac729d20-Screenshot-071205-174159.png)

> 2\. 建立儲存庫

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/3cf6a4f682a7d9634d7a-Screenshot-071205-174440.png)

> 選取 Native Filesystem (FSFS)

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/141df6112ac9044c07f5-Screenshot-071205-174547.png)

>  儲存庫建立完成

 ![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/92c7ba9ac6bc85eb71a1-Screenshot-071205-174628.png)

**將個人常用的檔案匯入剛剛建立的 SVN 儲存庫**

> 1\. 先將常用的檔案放在一起

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/7dfcd492ce7ad22fbc78-Screenshot-071205-175108.png)

> 2\. 首次匯入檔案到剛剛建立的 SVN 儲存庫

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/75e64f345a71c7bdb6e9-Screenshot-071205-175332.png)

> 透過 "..." 按鈕選取剛剛建立的 SVN 儲存庫目錄, 注意: 目錄名稱是用 [file:///](file:///) 開頭的網址型態喔!! 

 ![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/4e0f0972ab20e027ae36-Screenshot-071205-184708.png)

> 3\. 刪除所有檔案

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/48711b1bd97163ecc056-Screenshot-071205-175639.png)

> 4\. 從 SVN 儲存庫取出(Checkout)所有檔案

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/d3ed8467134c5a4dae2b-Screenshot-071205-175728.png)

> 正常的情況下, 應該甚麼都不用改, 直接按下 OK 按鈕即可.

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/04ed2ab57f26abc0bb2e-Screenshot-071205-175801.png)

> 檔案已經取出! 而這些檔案都有一些打勾的綠色圖示!

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/dbe76fecc8e8c19740c0-Screenshot-071205-175934.png)

**每次修改後可以將變動的版本重新 Commit 回 SVN 儲存庫**

> 修改後檔案的圖示會變成紅色的驚嘆號

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/d9c73e25c6c3894d92fc-Screenshot-071205-183742.png)

> 將變更 Commit 到 SVN 儲存庫

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/37231dc4b8ea9e520426-Screenshot-071205-183836.png)

> 寫一些方便自己日後查詢的修訂日誌

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/4c9f58a19c1c649784bd-Screenshot-071205-183937.png)

**設置自動 Commit 批次檔 ( AutoCommit.bat )**

> @echo off
> 
> ::■■■■■■■■■■■■■■■■■  
> ::          取得日期時間  
> ::■■■■■■■■■■■■■■■■■
> 
> :: Setting environment variables with todoy's date values  
> for /f "tokens=1-4 delims=-/ " %%i IN ('date /t') DO (  
> set year=%%i  
> set month=%%j  
> set day=%%k  
> )
> 
> for /f "tokens=1-3 delims=:" %%i IN ('time /t') DO (  
> set hour=%%i  
> set minute=%%j  
> )
> 
> :for /f "tokens=1 delims= " %%i IN ("%hour%") DO (  
> :set hour=%%i  
> :)
> 
> set NOW=%year%-%month%-%day% %hour%:%minute%
> 
> svn add MyFiles\\\*.\* -q  
> set LogMessage="Backup on %NOW%"
> 
> svn commit -m %LogMessage%
