xdiff

xdiff (파일/문자열 차이와 패치)

파일의 여러 리비전 사이의 차이(diff)를 담은 패치 파일을 만들고 적용하는 확장이에요. 소스 코드 버전 관리처럼 텍스트의 변경 이력을 생성·병합할 때 씁니다.

출처: PHP: xdiff - Manual

본문

xdiff 확장을 사용하면 파일의 서로 다른 리비전 사이의 차이를 담은 패치 파일을 만들고 적용할 수 있어요.

이 확장은 문자열(string)파일(file) 두 가지 모드로 동작하며, unifiedbinary 두 가지 패치 형식을 지원합니다.

  • unified 패치 — 텍스트 파일에 매우 적합해요. 사람이 읽을 수 있고 리뷰하기 쉬우니까요.
  • binary 패치 — 아카이브나 이미지 같은 이진 파일에 적합해요. 바이너리 세이프(binary safe)하고 인쇄할 수 없는 문자도 잘 처리하죠.

버전 1.5.0부터는 이진 패치를 생성하는 두 가지 새로운 함수 집합이 추가됐어요. xdiff_string_rabdiff()xdiff_file_rabdiff()는 기존 함수와 호환되는 출력을 생성하면서도 대개 더 빠르고, 결과 크기도 더 작습니다. 이진 패치 생성 방식과 그 차이에 대한 자세한 내용은 libxdiff 웹사이트를 참고하세요.

이 확장은 위 함수들을 구현하기 위해 libxdiff 라이브러리를 사용합니다.

xdiff 파일 함수

함수 설명
xdiff_file_bdiff 두 파일의 이진 diff 생성
xdiff_file_bdiff_size 이진 diff를 적용해 만든 파일의 크기 읽기
xdiff_file_bpatch 이진 diff로 파일 패치
xdiff_file_diff 두 파일의 unified diff 생성
xdiff_file_diff_binary xdiff_file_bdiff의 별칭
xdiff_file_merge3 파일 3개를 하나로 병합
xdiff_file_patch unified diff로 파일 패치
xdiff_file_patch_binary xdiff_file_bpatch의 별칭
xdiff_file_rabdiff Rabin 폴리노미얼 핑거프린팅 알고리즘으로 두 파일의 이진 diff 생성

xdiff 문자열 함수

함수 설명
xdiff_string_bdiff 두 문자열의 이진 diff 생성
xdiff_string_bdiff_size 이진 diff를 적용해 만든 파일의 크기 읽기
xdiff_string_bpatch 이진 diff로 문자열 패치
xdiff_string_diff 두 문자열의 unified diff 생성
xdiff_string_diff_binary xdiff_string_bdiff의 별칭
xdiff_string_merge3 문자열 3개를 하나로 병합
xdiff_string_patch unified diff로 문자열 패치
xdiff_string_patch_binary xdiff_string_bpatch의 별칭
xdiff_string_rabdiff Rabin 폴리노미얼 핑거프린팅 알고리즘으로 두 문자열의 이진 diff 생성

텍스트 변경 이력은 xdiff_file_diff()로 unified 패치를 만들어 사람이 검토하게 두고, 이미지·압축파일 같은 이진 파일은 xdiff_file_bdiff() 계열을 쓰는 것을 권장해요.

더 알아보기