외부 프로세스를 시작하는 것이 LibGit2Sharp의 책임이라고 생각하지 않습니다. LibGit2Sharp의 목표는 git 저장소를 쉽게 조작 할 수있는 방법을 제공하는 것입니다. WORKDIR에서 파일 (색인) 이전 버전과의 DIFF를 가져옵니다
:
그것은 당신이 그것을 사용할 수 있다는 것을 의미한다. 이를 수행하려면 Repository.Diff.Compare(IEnumerable<string> paths, bool includeUntracked, ExplicitPathsOptions explicitPathsOptions)
오버로드를 사용하면 TreeChanges
오브젝트를 리턴합니다. 거기에서 TreeEntryChanges
개체를 treeChanges의 인덱서를 통해 가져올 수 있습니다.이 파일은 .Patch 속성을 사용하여 패치의 실제 내용을 가져 오는 데 사용됩니다. 합니다 (Get()
메소드에 의해 반환되는 값이 경우에는 DIFF 도구는 사용자가 구성되지 않은 null의 경우, 당신은 또한 확인해야하지만, 예컨대 : repo.Config.Get<string>("diff.tool").Value
)
- 는
Repository.Config
네임 스페이스를 사용하여 구성은 diff 도구를 가져옵니다. 그렇게하면 직접 diff 도구를 시작할 수 있습니다.
추가 리소스 (v0.11.0) :
참고 : 어느 시점에서 선이 변경되었는지 여부를 알아야합니다. 나는 수동으로 패치 내용을 파싱하는 것 외에는 지금 당장 할 수있는 쉬운 방법이 없다고 생각한다. 그러나 LibGit2Sharp issue tracker에서 문제를 열면 해당 문제에 대한 토론이 시작될 수 있습니다. 어떤 API를 사용하고 싶습니까?
편집 : 외부은 diff 도구를 실행하기 전에 임시 폴더에있는 인덱스에있는 파일의 내용을 복사해야합니다. 다음과 같이하여 색인에서 파일의 얼룩을 찾을 수 있습니다.
- var indexEntry = repo.Index [fileName];
- var blob = repo.Lookup (indexEntry.Id);
그러나 블롭 내용을 가져올 때 현재 필터가 적용되지 않으므로 비교하면 크기 차이로 인해 오탐 (false positive)이 발생할 수 있습니다. 현재 필터 적용을 허용하는 API를 제안하기 위해 libgit2에 열린 issue이 있습니다.
감사합니다. yorah! 그동안 Repository.Config에 대해 알아 냈고 자세한 내용을 살펴볼 것입니다! 라인 변경에 관해서는 이미 diff를 구문 분석하는 것이 있지만이 변경을 기다리고 있습니다. https://github.com/libgit2/libgit2sharp/pull/423 –