是否有任何內置的方式來查找和刪除(tf destroy
)很長一段時間內不活動(我的意思是沒有檢查操作)的TFS項目分支,比方說1個月。無論是tfs工具或可能會做到這一點的sql腳本都可以。找到並刪除不活動的tfs分支
0
A
回答
0
嗯,整個事情並不難,在這裏張貼的代碼,可以幫助別人:
private static string _tfLocation; //location of tf.exe
private static string _tfProject; //our team project
static void Main(string[] args)
{
_tfLocation = ConfigurationManager.AppSettings.Get("tfLocation");
_tfProject = ConfigurationManager.AppSettings.Get("tfProject");
var keepAliveBranches = ConfigurationManager.AppSettings.Get("keepAliveBranches").Split(',').ToList(); //branches that we keep anyway
var latestDate = DateTime.Now.AddMonths(-3); //we delete all branches that are older than 3 months
var folders = ExecuteCommand(string.Format("dir /folders \"{0}\"", _tfProject));
var branches = folders.Split('\r', '\n').ToList();
branches = branches.Where(b => !string.IsNullOrEmpty(b) && b.StartsWith("$")).Select(b => b.Remove(0, 1)).Skip(1).ToList();
branches.ForEach(b => b = b.Remove(0, 1));
foreach (var branch in branches)
{
if (keepAliveBranches.Contains(branch))
continue;
//get latest changeset
var lastChangeset = ExecuteCommand(string.Format("history \"{0}/{1}\" /recursive /stopafter:1 /format:brief /sort:descending /noprompt", _tfProject, branch));
var changesetDate = DateTime.Parse(Regex.Match(lastChangeset, @"\d{2}\.\d{2}\.\d{4}").Value); //get it's date
if (changesetDate < latestDate)
//destroy
ExecuteCommand(string.Format("destroy \"{0}/{1}\" /recursive /stopafter:1 /startcleanup /noprompt /silent", _tfProject, branch));
}
}
//execute console command and get results
private static string ExecuteCommand(string command)
{
var process = new Process()
{
StartInfo = new ProcessStartInfo(_tfLocation)
{
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true,
Arguments = command
},
};
process.Start();
var result = process.StandardOutput.ReadToEnd();
process.WaitForExit();
return result;
}
2
1
未使用的分支包含元素修改歷史記錄,而不是刪除它們寫入分支並保留它。恢復的空間並不重要。
相關問題
- 1. 找到合併分支的tfs路徑
- 2. 刪除分支文件夾中的TFS
- 3. 找到刪除分支的人?
- 4. 從TFS分支中刪除更改
- 5. 以編程方式刪除TFS分支
- 6. 刪除不活動的舊git分支比
- 7. 如何刪除分支並回滾到工作的主分支
- 8. SVN:未找到文件時合併刪除分支
- 9. 如何合併本地分支到TFS
- 10. TFS:頻繁合併到開發分支
- 11. 用-rD刪除git分支而不刪除遠程svn分支
- 12. 刪除本地「遠程分支」而不刪除遠程分支?
- 13. 將一個分支合併到另一個分支的自定義TFS 2013活動
- 14. TFS分支和合並
- 15. TFS 2010分支和合並
- 16. TFS分支和合並
- 17. TFS 2015分支和合並
- 18. 移動後TFS合併+刪除組合
- 19. 用git tfs合併兩個TFS分支
- 20. 合併到主人後自動刪除git分支
- 21. TFS修改合併刪除要合併而不刪除
- 22. 如何在TFS分支中找到一組非合併更改?
- 23. 如何找出TFS變更集已合併到哪個分支
- 24. 使用gitflow刪除「特性」分支,而不合併到主分支中
- 25. Git:不要刪除分支?
- 26. 刪除歷史中合併的分支?
- 27. 在TFS中,如何將分支合併到不直接分支的Trunk?
- 28. 尋找支持集成測試分支的TFS分支機制
- 29. 用git合併分支,除了文件移動和刪除
- 30. Git將branchX合併到master中。刪除branchX並啓動新的新分支X?
答案是肯定的,但它是一點努力建立一個工作示例。 –
是的,您可以使用SSRS針對具有某些API的Warehouse數據庫執行此操作,但我們的BI開發人員對其進行了設置,因此我沒有除API查詢以外的其他詳細信息。不過,除非在合併到Main之前確實不關心變更的歷史,否則我會建議謹慎使用tf destroy。 – DaveShaw