1
A
回答
1
首先是一些基本知識:
git的日誌topic..master
var filter = new CommitFilter {
SortBy = CommitSortStrategies.Time,
Since = master,
Until = topic,
};
var commitList = repo.Commits.QueryBy (filter);
git的日誌topic..master --merges
var filter = new CommitFilter {
SortBy = CommitSortStrategies.Time,
Since = master,
Until = topic,
};
var commitList = repo.Commits.QueryBy (filter);
var mergeList = commitList.Where (p => p.Parents.Count() >= 2);
現在你的問題:
git的日誌topic..master --ancestry路徑--merges
祖先路徑=
When given a range of commits to display (e.g. commit1..commit2 or commit2 ^commit1), only display commits that exist directly on the ancestry chain between the commit1 and commit2, i.e. commits that are both descendants of commit1, and ancestors of commit2.
的-merges
容易一旦我們擁有祖先路徑,就可以過濾具有多個父代的提交。獲取祖先路徑需要一些編碼;-)
,因爲這是從commitList
通過.Parents
屬性返回在上面第一個例子包含DAG(向無環圖)的ICommitLog
,我們需要走的圖形,並得到「所有通過深度優先搜索的簡單路徑」找到所有非週期性路徑一旦你擁有的所有simple
路徑列表只是過濾它通過承諾有>=2
父母
注意:我已經在這樣做了很少有C#項目,甚至簡單的項目,比如計算與特定提交相關的拉取請求,都會使用這個深度優先的祖先。我傾向於遠離Linq來執行此操作,因爲我有huge
提交列表(僅在我搜索的子DAG內的開始到結束節點之間的100k +節點),並且由於堆棧大小而避免遞歸方法,但您的用例可能會/會有所不同。如果您在這一點上遇到困難,請在算法/代碼問題中發佈另一個問題。
相關問題
- 1. 返回所有祖先/父路徑的列表
- 2. 找到所有懸掛與給定的祖先提交 - Git的
- 3. Umbraco:媒體節點的路徑(所有節點ID路徑,而不是文件路徑定義爲umbracoFile)並不總是包含所有的祖先
- 4. 遞歸找到給定孩子的所有祖先
- 5. 如何在Ansible的所有父母,祖先的給定路徑上設置acl?
- 6. 與當前提交的祖先合併
- 7. 找到我所有的caches_action路徑
- 8. Git合併重新申請祖先?
- 9. 讓所有的祖先不工作
- 10. 使用lxml查找所有xml節點python的祖先
- 11. Git合併2個版本沒有共同的祖先
- 12. 的Kohana 3.3 ORM - 如何找到在樹中的所有祖先(自引用表)
- 13. Android路徑:合併幾條路徑並在合併路徑上繪製文本
- 14. 瞭解祖先的路徑谷歌應用程序引擎
- 15. 匹配最接近的祖先與路徑層次結構Tokenizer
- 16. 無法合併:與工作目錄合併祖先沒有效果
- 17. 將子變更集Y合併到祖先中X
- 18. 分支合併到主幹不共享祖先
- 19. 爲什麼Mercurial有時允許與祖先合併?
- 20. fs unlink找不到所需的路徑
- 21. 尋找JUNG的所有路徑?
- 22. 查找路徑上的所有點AS3
- 23. 路徑沒有找到
- 24. git-shell合併到不同的路徑
- 25. Rails的路線與祖先的模型
- 26. 在Google App Engine中從祖先路徑生成密鑰
- 27. 有向無環圖:找到特定節點的所有路徑
- 28. 找到沒有指定結束節點的所有路徑?
- 29. Netbeans沒有找到我所有的include_once路徑
- 30. WordPress的菜單祖先沒有給祖先類