안녕하세요.
libgit2sharp
라이브러리를 Commit History Graph
를 구현하고 있는데요.
(참고 이미지)
(또는 터미널에서 graph 보기)
git log --oneline --graph --decorate --all
그리고 아래는 제가 작업중인 화면입니다.
우선 커밋 정보는 libgit2sharp 라이브러리를 통해 쉽게 가져올 수 있지만 Graph를 그리기 위한 정보를 가져오지 못했습니다.
커밋정보를 구하는 코드는 간단했습니다.
// libgit2sharp 라이브러리
string path = "c:\github\git-gui-app";
var repo = Repository(path);
var commits = repo.Commits();
var list = new List<CommitItem>();
foreach (var item in commits)
{
var commitItem = new CommitItem();
commitItem.Name = item.Message;
commitItem.Sha = item.Sha;
commitItem.ParentSha = item.Parents.FirstOrDefault().Sha;
list.Add(commitItem);
}
하지만 그래프 부분은 토폴리지 위상정렬 알고리즘을 이용해서 계산하는 방식이라고 하는데 갈피를 못잡고 있어 질문 올리게 되었습니다.
혹시 비슷한 사례나 토폴리지 위상정렬 등의 조언 부탁 드립니다!
(소스코드도 정리해서 샘플 올려보겠습니다!)