如果修改了工作副本(除了ignore-on-commit changeset之外),我想在build上添加信息,但是恐怕檢查使用SharpSVN的所有更改可能會減慢100MB工作副本的構建速度擁有1000多個文件。因此 - 什麼是獲得只有有沒有未完成和/或非持續更改的信息的最快方法?什麼是檢查svn工作副本是否有變化的最快方法?
回答
如果你只需要結果:修改VS未修改你可以做這樣的事情C#代碼:
// using SharpSvn;
bool foundModification = false;
using (SvnClient client = new SvnClient()
{
client.Status(@"C:\my\working\copy",
delegate(object sender, SvnStatusEventArgs e)
{
foundModification = true;
e.Cancel = true;
});
}
這確實+ - 查找工作副本中是否存在實際更改並在找到第一個結果時停止的絕對最小值。
SubWCRev和svnversion使用類似的方法,但在wc.db中做了一些額外的檢查(假設Subversion 1.7或更高版本)。
您可能想要擴展委託以略過某些更改。 (Changelist可作爲SvnStatusEventArgs對象的屬性)
我還沒有與SharpSVN合作過。然而,Subversion本身在檢測變化方面相當快速 - 特別是1.7版本和更新版本。我們有10,000個或更多文件的項目,而Subversion只需幾秒鐘就可以找到所需的更改並列出所有文件。 NSvn(這是.NET Subversion庫的名稱)在執行此任務時應該相當快。如果沒有,請嘗試在PowerShell中使用Subversion命令行。
一個奇怪的問題:爲什麼你的工作副本如此之大?你有沒有在那裏檢查所有的.NET第三方庫?如果是這樣,你應該看看NuGet。 NuGet是.NET對Maven的回答。 Maven是Java的依賴管理系統。
而不是將第三方Java庫添加到您的存儲庫中,而是使用Maven的pom.xml
文件來描述您所需的依賴關係。然後,Maven從世界各地的各種Maven倉庫中提取這些庫。結果是較小的源代碼庫,更容易維護。更小的工作副本,更快的結賬,而不是神祕的第三方庫(這是從哪裏來的?這是什麼版本?),你有你的依賴關係的描述(我正在使用這個庫的1.2版本來自這個項目) 。
如果你不使用NuGet,我建議你看看它。它適用於您當前的Microsoft項目文件,因此您不必檢修當前的構建系統。
如果你只需要一個「是/否」是否有局部修改,你必須安裝TortoiseSVN,您可以使用SubWCRev:
SubWCRev是可以用來讀取Windows控制檯程序Subversion工作副本的狀態以及可選地在模板文件中執行關鍵字替換。
但更根據您的要求,如果你調用它是這樣的:
subwcrev C:\your\wc\path -n
它只是看起來在工作副本的變化,並返回一個錯誤代碼(它根據文檔的7)如有被發現。例如,從Powershell命令提示符:
> subwcrev C:\your\wc\path -n
SubWCRev: 'C:\your\wc\path'
Working copy has local modifications!
> $LASTEXITCODE
7
使用這可能是比分析的svn status
輸出更容易。
我覺得svn status
是你在找什麼:
> svn status
M auth\auth.c
M auth\auth_spnego.c
- 1. 什麼是檢查文件是否改變的最快方法?
- 2. svn:'。'不是工作副本
- 3. SVN不是工作副本
- 4. 檢測日期是否發生變化的最有效方法是什麼?
- 5. Svn-log'。' Svn不是工作副本
- 6. 檢查兩個條件是否爲真的最快方法是什麼?
- 7. 檢查一個類是否定義了函數的最快方法是什麼?
- 8. 檢查兩個Tbitmap是否相同的最快方法是什麼?
- 9. 檢查兩個給定數字是否互反的最快方法是什麼?
- 10. 算法:什麼是檢查集合包含的最快方法?
- 11. 檢查視窗是否可見的最佳方法是什麼?
- 12. 檢查FileInputStream是否關閉的最佳方法是什麼?
- 13. 什麼是檢查PDO是否存在的最佳方法
- 14. MySQL - 檢查InnoDB表中的數據是否發生變化的最快方法
- 15. 什麼是MySQL的最快的方法來檢查外國REFFERENCE
- 16. 什麼是檢查mongodb文檔存在的最快方法?
- 17. 檢查號碼重複數字的最快方法是什麼?
- 18. Tcl:什麼是檢查空白字符串的最快方法
- 19. 在Python中檢查重複項的最快方法是什麼?
- 20. 檢查SQL Server可用性的最快方法是什麼?
- 21. 什麼是檢查類型的最快方法?
- 22. 以編程方式檢查年份是否最有效的方法是什麼
- 23. 是什麼導致SVN「工作副本<path>被鎖定」?
- 24. 什麼是檢查JavaScript變量是否爲空的最可靠的方法?
- 25. 檢查所有字段是否有效的最佳方法是什麼?
- 26. 什麼是最快速的工作方式PHP腳本
- 27. 檢查變量是否爲列表的最佳方法是什麼?
- 28. 什麼是檢查圖像在PHP中是否有效的最好和最快的方法?
- 29. SVN-ANT錯誤 - 「不是工作副本」
- 30. SVN - 不是工作副本錯誤
好吧,我將檢查svn狀態有多快能工作 - 我認爲狀態會花費相當多的磁盤工作,這對構建會很痛苦。工作副本是相當大的,因爲它是一個使用MVC Web應用程序(以及大量資源,圖像等)的多項目解決方案,代碼與資源相比並不佔用太多。是的,我們使用NuGet來處理所有的軟件包,謝謝你對這個可能的問題的詳細瞭解:) – 2015-04-03 15:02:25
從未聽說過NSvn,你有鏈接嗎? [SharpSvn](https://sharpsvn.open.collab.net/)是我見過的唯一(成熟的).NET SVN綁定。 – 2015-04-03 15:18:15
NSvn是AnkhSVN舊的Subversion集成庫。由於AnkhSVN 2.0(閱讀:大約6年前),該庫已被SharpSvn所取代,並且NSvn不再更新。 – 2015-04-04 13:26:53