WinMerge 폴더 비교 정확도 높이기 — 필터·인코딩·바이너리 구분

WinMerge로 두 폴더를 비교했는데 모든 파일이 다르게 보이거나, 제외한 폴더가 다시 나타나면 복사부터 하지 마세요. 비교 방법, 파일 필터, 표시 필터, 인코딩은 각각 다른 단계에 개입합니다. 어느 단계가 결과를 바꿘는지 먼저 확인해야 합니다.

삭제·덮어쓰기 전 안전 준비

비교 결과는 백업이 아닙니다. 왼쪽과 오른쪽 경로를 스크린샷이 아닌 텍스트로 남기고, 파일 복사를 시작하기 전에 복구 가능한 사본을 만드세요.

Full Contents와 Quick Contents의 차이

방법특징주의할 점
Full Contents내용을 전체 비교하고 플러그인·이동 블록 탐지를 적용가장 완전하지만 큰 폴더에서 느릴 수 있음
Quick Contents내용 비교를 간소화해 빠르게 판정라인 필터가 적용되지 않고 이동 블록 탐지가 생략됨
Binary Contents크기와 바이너리 내용을 빠르게 비교텍스트의 의미 단위 차이를 설명하지 못함

처음에는 Full Contents로 작은 범위를 검증하세요. 예상한 결과와 맞은지 확인한 뒤에 큰 폴더에서만 Quick Contents를 검토하는 것이 안전합니다.

파일 마스크와 파일 필터

파일 마스크는 비교에 포함할 확장자를 줄입니다. *.cpp;*.h처럼 쓰면 해당 파일만 포함합니다. 공식 매뉴얼에서는 2.16.19 이후 !.git;!.vs처럼 폴더를 제외하는 형식도 안내합니다. 복잡한 규칙은 PCRE 정규식을 사용하는 파일 필터로 분리하세요.

표시 필터는 비교 결과를 바꾸지 않는다

폴더 비교 창의 표시 파일/폴더 필터는 이미 계산된 결과 중 보이는 항목을 줄입니다. 반면 파일 마스크와 파일 필터는 비교 대상 자체를 바꿉니다. 숨겨진 항목이 사라진 것으로 오해하지 마세요. 필요하면 View → Show Skipped Items로 제외된 항목을 다시 보이게 합니다.

인코딩과 줄바꿈 차이

같은 문장인데 전체가 다르게 보이면 코드페이지, BOM, CRLF·LF를 확인합니다. 필터 표현식에서 Codepage, HasBOM, EOL같은 속성을 쓸 수 있지만, 처음부터 제외하면 실제 차이를 놓칠 수 있습니다. 먼저 두 파일의 인코딩을 표시하고, 변환이 필요하면 사본에서 실행하세요.

안전한 병합 순서

  1. 왼쪽·오른쪽 경로와 백업 시각을 기록합니다.
  2. 작은 하위 폴더를 Full Contents로 비교합니다.
  3. 표시 필터를 비우고 제외 항목을 확인합니다.
  4. 텍스트와 바이너리 파일을 나누고 인코딩·줄바꿈 차이를 먼저 설명합니다.
  5. 복사 방향을 한 번에 하나로 제한하고, 완료 후 다시 비교합니다.

공식 출처

파일 동기화가 목적이라면 Syncthing 충돌·버전 보관 가이드도 함께 확인하세요.

비교 결과가 예상과 다를 때 확인할 다섯 가지

  1. 두 경로가 파일-파일 또는 폴더-폴더로 같은 유형인지 확인합니다.
  2. 하위 폴더 포함 여부와 심볼릭 링크·연결 지점 처리를 봅니다.
  3. 비교 방법을 Full Contents로 돌려 결과가 달라지는지 봅니다.
  4. 파일 마스크와 표시 필터를 모두 비워 숨겨진 항목을 제거합니다.
  5. 대표 텍스트 파일 하나를 열어 인코딩, BOM, EOL을 확인합니다.

자동 병합을 피해야 하는 상황

설정 파일, 데이터베이스 덤프, 바이너리, 문서 포맷은 줄 단위 병합으로 의미가 보존된다고 보장할 수 없습니다. 같은 텍스트처럼 보여도 생성 도구가 순서와 참조를 관리할 수 있습니다. 이런 파일은 전용 도구로 비교하거나, 한 쪽을 기준으로 삼은 후 생성 절차를 다시 실행하세요.

병합 후에는 다시 폴더 비교를 실행하고, 예상한 차이만 남았는지 확인한 뒤 테스트·빌드·문서 렌더링으로 결과를 검증하세요.