開發過程中少不了要提交一些代碼,文件,雖然操作過程簡單,但是容易遺漏提交文件,寫個editor工具可以減少文件漏提交的情況。
提交到SVN的代碼很簡單,不過有一個前提,就是要先配置SVN的環境變量。代碼如下:
public class SvnTool : EditorWindow
{
[MenuItem("GameTools/Svn工具")]
public static void ShowWindow()
{
var w = EditorWindow.CreateInstance<SvnTool>();
w.Show();
}
void OnGUI()
{
OnCsCommit();
OnCsUpdate();
}
void OnCsCommit()
{
if(GUILayout.Button("提交CS代碼")
{
string path = Application.dataPath + "/Scripts";
Process.Start(fileName: "TortoiseProc.exe", arguments: "/command:commit /path:" + path + " /logmsg:modify" + " /closeonend:0");
}
}
void OnCsUpdate()
{
if(GUILayout.Button("更新CS代碼")
{
string path = Application.dataPath + "/Scripts";
Process.Start(fileName: "TortoiseProc.exe", arguments: "/command:update /path:" + path + " /closeonend:0");
}
}
}
這裏面有幾個地方要注意:
1 命令裏面參數之間是空格格開,比如“/command:update空格/path”。
2 如果要提交多個路徑,用"*"連接,比如:
path = Application.dataPath + "/Scripts" + "*" + Application.dataPath + "/Editor";
TortoiseProc.exe的一些命令參數如下:
-
/closeonend:0
不自動關閉對話框 -
/closeonend:1
如果沒發生錯誤則自動關閉對話框 -
/closeonend:2
如果沒發生錯誤和衝突則自動關閉對話框 -
/closeonend:3
如果沒有錯誤、衝突和合並,會自動關閉 -
/closeonend:4
如果沒有錯誤、衝突和合並,會自動關閉
命令 | 描述 |
---|---|
:about | 顯示關於對話框。如果沒有給命令也會顯示。 |
:log | 打開日誌對話框,路徑指定了日誌顯示的文件或目錄,另外還有三個選項可以設置: /revstart:xxx 、/revend:xxx 和/strict |
:checkout | 打開檢出對話框,/path 指定了目標路徑,而/url 制定了檢出的URL。 |
:import | 打開導入對話框,路徑制定了數據導入路徑。 |
:update | Updates the working copy in /path to HEAD. If the option /rev is given then a dialog is shown to ask the user to which revision the update should go. |
:commit | 打開提交對話框,路經指定了目標路徑或需要提交的文件列表,你也可以使用參數/logmsg給提交窗口傳遞預定義的日誌信息,或者你不希望將日誌傳遞給命令行,你也可以使用/logmsgfile:path,path 指向了保存日誌信息的文件。爲了預先填入bug的ID(如果你設置了集成bug追蹤屬性),你可以使用/bugid:"the bug id here" 完成這個任務。 |
:add | 將/path 的文件添加到版本控制 。 |
:revert | 恢復工作副本的本地修改,/path 說明恢復哪些條目。 |
:cleanup | 清理中斷和終止的操作,將工作副本的/path 解鎖。 |
:resolve | 將/path 指定文件的衝突標示爲解決,如果給定/noquestion ,解決不會向用戶確認操作。 |
:repocreate | 在/path 創建一個版本庫。 |
:switch | 打開選項對話框。路徑參數指定目標目錄。 |
:export | 將/path 的工作副本導出到另一個目錄,如果/path 指向另一個未版本控制目錄,對話框會詢問要導出到/path 的URL。 |
:merge | Opens the merge dialog. The path specifies the target directory. |
:copy | 帶來branch/tag對話框,/path 是branch/tag在工作副本中的出處。 |
:settings | 打開設置對話框。 |
:remove | 從版本控制裏移除/path 中的文件。 |
:rename | 重命名/path 的文件,會在對話框中詢問新文件,爲了防止一個步驟中詢問相似文件,傳遞/noquestion 。 |
:diff | 啓動TortoiseSVN設置的外置比較程序,/path 指定了第一個文件,如果設置了/path2 ,比較程序會啓動兩個文件,如果省略/path2 ,比較程序會比較/path 和它的BASE。 |
:conflicteditor | 打開TortoiseSVN設置的衝突工具,在/path 中需要設置衝突文件的正確文件。 |
:relocate | 打開重定位對話框,/path 指定了重定位的工作副本路徑。 |
:help | 打開幫助文件 |
:repostatus | 打開爲修改檢出對話框,路經指定了工作副本目錄。 |
:repobrowser | 打開版本庫瀏覽對話框,URL爲工作副本/path 指向的或/path 直接指出的,另外一個選項是/rev:xxx ,可以用來指定要顯示的修訂版本號,如果省略/rev:xxx ,缺省是HEAD。 |
:ignore | 將/path 中的對象加入到忽略列表,也就是將這些文件添加到svn:ignore屬性。 |
:blame | 打開/path 指定文件的追溯對話框,如果設置了startrev 和endrev ,對話框詢問追溯範圍的對話框不會顯示,如果設置了/line:nnn ,TortoiseBlame會打開特定文件的某一行。 |
:cat | 將/path 指定的工作副本或URL的文件保存到/savepath:path ,修訂版本號在/revision:xxx ,這樣可以得到特定修訂版本的文件。 |
:createpatch | 創建/path 下的補丁文件。 |
:revisiongraph | 顯示/path 目錄下的版本變化圖。 |
:lock | Locks a file. The 'lock' dialog is shown so the user can enter a comment for the lock. /path |
:rebuildiconcache | 重建windows的圖標緩存,只有windows的圖標緩存出了問題才需要這樣做,一個副作用就是(不可避免)桌面的圖標會重新組織。/noquestion |