TortoiseSVN 有個我非常喜歡的功能:可以匯出指定的兩個版本之間的差異檔案。比方說我從第三版到第十版只修改了 abc.html,那麼它就只會匯出這支檔案。這個功能在 TortoiseSVN 的詳細用法可以參考保哥寫的《如何讓 TortoiseSVN 僅匯出新增或修改過的檔案 》。
但是,在 TortoieHg 好像只能匯出「最新版本與前一版之間的差異檔案」,我在它本身的功能裡找不到 TortoiseSVN 的這項功能哩。用了 TortoiseHg 一陣子,一直覺得這點非常困擾我。最近透過搜尋找到這篇文章:"TortoiseHg - How to export changed files",作者寫了一個擴充套件,有了這個套件就能輕鬆取出指定的檔案來。
安裝步驟很簡單:
1. 取得 exportfiles.py。
我是透過 TortoiseHg 的 Clone 設定來源為 "https://bitbucket.org/albert_brand/hgexportfiles"、目的為我本機的任意資料夾,取得這支檔案。
你也可以點選 downloads 頁籤,直接從網頁上下載檔案。(我後來下載了 tip 的 zip 格式檔案,解壓縮後,其中的 exportfiles.py 內容和我透過 Clone 取得的內容無異)
2. 把 exportfiles.py 放在正確的位置。找出你的 TortoiseHg 安裝路徑,在裡面開一個 extensions 的資料夾,把檔案放進去。完整的路徑可能是 "c:\Program Files\TortoiseHg\extensions\exportfiles.py",實際路徑視你的 TortoiseHg 安裝路徑而定。
3. 在全域設定 (global settings) 將這個擴充套件設定起來。
[extensions]
exportfiles = c:\Program Files\TortoiseHg\extensions\exportfiles.py
設定存檔後,TortoiseHg 會將 exportfiles.py 編譯為 exportfiles.pyo,你也會在擴充套件頁面上看到 exportfiles 這個套件出現在畫面上。既然已經設定妥當,那就可以透過命令列模式使用這個工具了。
比方說我想要在 D:\Test 這個專案匯出第 10 版到第 20 版之間的差異檔案,把檔案存到 OK-20111110 這個資料夾,我可以先開啟命令提示字元 (cmd),切換到 D:\Test 這個目錄,然後輸入指令,格式為:
hg exportfiles -r 啟始版本:迄止版本 目的資料夾
實際的輸入可能長這樣:
D:\Test\hg exportfiles -r 10:20 D:\OK-20111110
執行後若沒有出現錯誤訊息,那就可以在 D:\OK-20111110 看到我們想要的檔案了。
作者也建議大家可以寫個批次檔,方便日後使用。因為以我現在的作業系統語系設定,%date% 會印出「2011/11/10 週四」這樣的日期格式,因此我調整了作者的範例裡頭日期的部分;而作者原本將版本寫死在批次檔裡,我也把版本改成參數。
echo off
rem This will export changed set of files between two arbitrary commints
rem see https://bitbucket.org/albert_brand/hgexportfiles
rem Run this file in directory with HG repository
rem get date string for file name
set YEAR=%date:~0,4%
set MONTH=%date:~5,2%
set DAY=%date:~8,2%
set HOUR=%time:~0,2%
set MIN=%time:~3,2%
set SEC=%time:~6,2%
rem set the "from revision" and "to revision"
set FROM=%1
set TO=%2
rem set target output directory
set DESTINATION=D:\FROM_%FROM%_TO_%TO%_%YEAR%%MONTH%%DAY%_%HOUR%%MIN%%SEC%
echo From: %1
echo To: %2
echo Exporting into %DESTINATION%...
rem simple export only with "from revision"
rem hg exportfiles -r %FROM% %DESTINATION%
rem exporting "from - to revision"
hg exportfiles -r %FROM%:%TO% %DESTINATION%
將上述程式碼複製起來,存成 "exportFiles.bat",放在和專案同一層的目錄裡,假設要匯出第 10 版與第 20 版之間的差異檔案,可以下這樣的指令:
exportFiles.bat 10 20
這樣就能輕鬆匯出我們自第 10 版之後、第 20 版之前,所有新增、修改過的檔案囉!
在我的批次檔裡,檔案固定會匯出到 D 槽,如果你想要修改匯出的路徑,可以修改 "set DESTINATION" 這行的值。
留言列表