diffIndexToWorkdir
리포지토리의 인덱스(index)와 작업 디렉터리(workdir) 간의 차이를 비교(diff)해요.
이 메서드는 git diff
명령과 동일한 동작을 해요.diffTreeToWorkdir
과의 차이점에 대한 설명은 해당 메서드의 문서를 참고하세요.
(git diff
와 git diff HEAD
의 차이 및 git diff <treeish>
를 libgit2에서 구현하는 방법)
시그니처
class Repository {
diffIndexToWorkdir(index?: Index, options?: DiffOptions): Diff;
}
파라미터
- indexnull | Index
변경 전 파일(oldFile) 측에 사용할 인덱스예요. 변경 후 파일(newFile) 측에는 작업 디렉터리가 사용돼요. 인덱스를 전달하지 않으면 리포지토리의 기존 인덱스를 사용하며, 이 경우 diff를 생성하기 전에 인덱스가 변경되었는지 확인하고 디스크에서 새로 고쳐요.
- optionsnull | DiffOptions
diff 실행 방식을 설정하는 옵션이에요.
- contextLinesnumber
변경된 부분 주변에서 표시할 동일한 코드 줄 개수를 설정해요. 기본값은 3이에요.
- disablePathspecMatchboolean
패스스펙(pathspec)을 사용할 때, 기본적으로 와일드카드(`fnmatch`)가 적용돼요. 이 옵션을 활성화하면 정확한 문자열 비교로 동작해요.
- enableFastUntrackedDirsboolean
기본적으로 Git은 추적되지 않은 디렉터리를 찾으면 내부 파일을 검사해요. 이 옵션을 활성화하면 이러한 검사를 생략하고, 디렉터리를 바로 "추적되지 않음" 상태로 설정해요.
- forceBinaryboolean
모든 파일을 바이너리 파일로 간주하고 텍스트 diff를 비활성화해요.
- forceTextboolean
모든 파일을 텍스트 파일로 간주하고 바이너리 속성 감지를 비활성화해요.
- idAbbrevnumber
OID(Object ID) 축약 길이를 설정해요. 기본값은
core.abbrev
설정값이며, 설정되지 않았을 경우 7이에요. - ignoreBlankLinesboolean
빈 줄을 무시하고 diff를 수행할지 설정해요.
- ignoreCaseboolean
대소문자를 구분하지 않고 diff를 수행할지 설정해요.
- ignoreFilemodeboolean
파일 권한(mode) 변경을 무시할지 설정해요. 활성화하면 실행 권한 변경과 같은 파일 모드 변경 사항이 diff에서 제외돼요.
- ignoreSubmodulesboolean
모든 서브모듈을 변경되지 않은 상태로 간주할지 설정해요. 활성화하면 diff에서 서브모듈 변경 사항을 무시해요.
- ignoreWhitespaceboolean
모든 공백을 무시하고 diff를 수행할지 설정해요.
- ignoreWhitespaceChangeboolean
공백 개수 변경을 무시할지 설정해요. (예: 공백 1개 → 2개 변경은 무시되지만, 문자 변경은 감지됨)
- ignoreWhitespaceEolboolean
줄 끝의 공백을 무시할지 설정해요.
- includeIgnoredboolean
Git에서 무시(ignore)된 파일을 diff에 포함할지 설정해요.
- includeTypechangeboolean
파일 타입이 변경된(typechange) 항목을 diff에 포함할지 설정해요. 활성화하면, 예를 들어 파일에서 디렉터리로 변경된 경우 이를 감지할 수 있어요.
- includeTypechangeTreesboolean
includeTypechange
가 활성화된 경우, 기본적으로 삭제된 블롭(blob)으로 표시되던 항목을 올바르게 타입 변경(typechange) 기록으로 처리해요. 이때,newFile
의 모드는 트리(tree)로 설정되지만, 트리의 SHA 값은 제공되지 않아요. - includeUnmodifiedboolean
변경되지 않은 파일도 diff에 포함할지 설정해요. 기본적으로 변경되지 않은 파일은 diff에서 제외돼요.
- includeUnreadableboolean
읽을 수 없는(unreadable) 파일을 diff에 포함할지 설정해요.
- includeUnreadableAsUntrackedboolean
읽을 수 없는(unreadable) 파일을 diff에서 추적되지 않은(untracked) 파일로 간주할지 설정해요.
- includeUntrackedboolean
추적되지 않은(untracked) 파일을 diff에 포함할지 설정해요.
- indentHeuristicboolean
들여쓰기와 공백을 고려하는 휴리스틱(heuristic) 알고리즘을 사용해요. 이를 활성화하면 애매한 diff 구간(hunk)에서도 더 나은 비교 결과를 얻을 수 있어요.
- interhunkLinesnumber
두 개의 diff 구간(hunk) 사이에 변경되지 않은 줄이 이 값보다 많으면 hunk를 하나로 병합해요. 기본값은 0이에요.
- maxSizenumber
이 크기(바이트 단위)보다 큰 블롭(blob)은 자동으로 바이너리로 처리돼요. 음수 값을 설정하면 이 기능을 비활성화할 수 있어요. 기본값은 512MB예요.
- minimalboolean
최소한의 diff를 찾기 위해 추가 연산을 수행할지 설정해요. 활성화하면 더 정확한 diff 결과를 얻을 수 있지만, 속도가 느려질 수 있어요.
- newPrefixstring
새로운 파일 이름 앞에 붙일 가상 디렉터리 이름을 설정해요. 기본값은
"b"
예요. - oldPrefixstring
이전 파일 이름 앞에 붙일 가상 디렉터리 이름을 설정해요. 기본값은
"a"
예요. - pathspecsstring[]
diff를 적용할 파일 경로나
fnmatch
패턴을 설정해요. 지정한 패턴과 일치하는 파일만 diff에 포함돼요. - patienceboolean
"patience diff" 알고리즘을 사용할지 설정해요. 이 알고리즘은 변경된 줄을 보다 정확하게 매칭하지만, 성능이 느릴 수 있어요.
- recurseIgnoredDirsboolean
무시(ignore)된 디렉터리를 재귀적으로 탐색할지 설정해요. 활성화하면 내부의 파일까지 확인해요.
- recurseUntrackedDirsboolean
추적되지 않은(untracked) 디렉터리를 재귀적으로 탐색할지 설정해요. 활성화하면 내부의 파일까지 포함해 diff를 수행해요.
- reverseboolean
diff의 비교 방향을 반대로 할지 설정해요. 기본적으로 "old → new" 비교가 수행되지만, 이 옵션을 활성화하면 "new → old" 순서로 비교돼요.
- showBinaryboolean
diff 결과에 바이너리 파일 정보를 포함할지 설정해요.
- showUnmodifiedboolean
diff 결과를 생성할 때, 변경되지 않은 파일의 이름을 포함할지 설정해요. 일반적으로 파일 목록을 출력하는 형식(name-only, name-status, raw)에서는 변경되지 않은 파일이 생략돼요. 하지만 패치 형식에서는 이 옵션을 활성화해도 포함되지 않아요.
- showUntrackedContentboolean
패치 형식의 diff를 생성할 때, 추적되지 않은(untracked) 파일의 내용을 포함할지 설정해요. 이 옵션을 활성화하면
includeUntracked
도 자동으로 활성화되지만,recurseUntrackedDirs
는 활성화되지 않아요. 모든 추적되지 않은 파일의 내용을 포함하려면recurseUntrackedDirs
도 추가해야 해요. - skipBinaryCheckboolean
diff에서
binary
플래그를 업데이트하지 않도록 설정해요. 이 옵션을 사용하면 diff를 반복적으로 순회할 때 파일을 완전히 로드하지 않고도 hunk와 데이터 콜백을 건너뛸 수 있어요. - updateIndexboolean
작업 디렉터리의 파일이 인덱스와 다르게 변경되었지만, OID(Object ID)가 동일한 경우 인덱스의 stat 정보를 업데이트할지 설정해요. 이 옵션을 활성화하지 않으면 diff는 인덱스를 수정하지 않아요.
- contextLinesnumber
반환 값
- Diff
인덱스와 작업 디렉터리 간의 diff 결과를 반환해요.