LibGit2Sharp에서 TreeChanges
을 반복하는 가장 좋은 방법은 무엇입니까?LibGit2Sharp의 diff 변경 반복
.Patch
속성에 액세스하면 전체 내용을 검색합니다. 이것은 나를 위해 충분하지 않다 ... 이상적으로 나는 diff 라인을 반복 할 수 있고, 각 라인마다 라인의 상태 (수정, 추가, 삭제)를 가져 와서 자신의 출력을 빌드 할 수 있기를 바란다.
업데이트 :
의 내가 내 자신은 diff 출력을 구축하고자한다고 가정 해 봅시다. 내가하고 싶은 것은 변경된 라인을 반복하고, 반복하는 동안 변경 (추가, 제거)의 유형을 확인하고 출력을 구성하는 것입니다. 예를 들어
:
var diff = "";
foreach (LineChange line in changes) // Bogus class "LineChange"
{
if (line.Type == LineChange.TYPE_ADDED)
diff += "+";
else
diff += "-";
diff += line.Content;
diff += "\n";
}
위의 내가 찾고 있어요 유연성 어떤 종류의 단순한 예입니다. 변경 사항을 검토하고 라인 변경 유형에 따라 일부 논리를 실행할 수 있습니다. Patch
속성은 이미 "빌드"되어 있습니다. 한 가지 방법은 구문 분석하는 것이지만, 라이브러리가 먼저 출력을 작성한 다음 바스를 분석하는 것은 어리석은 것처럼 보입니다. 건물 구성 요소를 직접 사용하고 싶습니다.
위의 간단한 예제보다 훨씬 더 많은 코드와 로직이 포함 된 변경 사항을 시각적으로 표시 할 수 있도록 이러한 종류의 기능이 필요합니다.
(* "내 자신의 diff 출력을 올바른 파일 순서대로 빌드하고 싶습니다.") 그리고 이미 사용 가능한 것은 무엇입니까? 이것은 "주문"문제를 명확하게 이해할 수 없으므로 매우 도움이 될 것입니다. – nulltoken
@nulltoken 질문을 업데이트했습니다. :) – Tower
당신의 질문과 관련이 없지만, 끔찍한 성능 (O (n²))이 있기 때문에 그런 루프에서 문자열을 절대로 연결해서는 안됩니다. 대신에'StringBuilder' (또는'StringWriter')를 사용하십시오. – svick