Repolode
ivankovic

ivankovic/omnidiff

tree-sitter로 코드를 구조적으로 비교하고 이미지, 폰트, 아카이브, PDF도 비교하는 Rust 기반 콘텐츠 인식 diff 도구입니다.

스타
1,168
포크
28
열린 이슈
9
마지막 커밋
6시간 전

어떤 프로젝트인가요?

OmniDiff는 파일 형식에 따라 비교 방식을 선택하는 CLI 및 터미널 diff 도구입니다. 25개 언어의 소스 코드는 tree-sitter 문법으로 파싱해, 줄 전체를 삭제 및 추가로 표시하는 대신 이름이 바뀐 표현식처럼 실제로 변경된 부분만 강조합니다. 확장자를 알 수 없는 파일은 일반 텍스트로 비교합니다.

텍스트가 아닌 파일은 이름이 아니라 콘텐츠를 기준으로 처리합니다. 이미지는 픽셀 단위로, 애니메이션은 프레임 단위로 비교합니다. 폰트는 글리프 단위로, 아카이브는 파일 단위로, PDF는 페이지 단위로 비교하고, 각 변경 사항에는 독자가 얼마나 눈에 띄게 알아차릴 수 있는지 표시합니다. 그 밖의 바이너리 파일은 두 파일이 다르다는 한 줄 알림으로 표시합니다.

OmniDiff는 두 패널을 사용하는 인터랙티브 뷰어, 스크립트와 CI용 일반 텍스트 또는 JSON 출력으로 실행할 수 있으며, git difftool, GIT_EXTERNAL_DIFF를 통한 git diff, Jujutsu (jj)의 백엔드로도 사용할 수 있습니다. Cargo, Homebrew, apt, Nix 및 Linux, macOS, Windows용 사전 빌드 바이너리로 설치할 수 있습니다.

핵심 기능

  • 01tree-sitter 문법을 사용해 25개 프로그래밍 및 마크업 언어의 구조적 diff를 제공합니다.
  • 02애니메이션 프레임을 포함해 이미지를 픽셀 단위로 비교합니다.
  • 03폰트는 글리프 단위로, PDF는 페이지 단위로 비교합니다.
  • 04중첩 아카이브를 포함해 아카이브를 파일 단위로 비교합니다.
  • 05인터랙티브 TUI, 헤드리스 텍스트 출력, JSON 출력을 지원합니다.
  • 06git difftool, git diff, Jujutsu (jj)와 연동합니다.

활용 사례

  • 몇몇 표현식만 바뀐 코드 리팩터링을 검토할 때.
  • git으로 관리하는 폰트, 아이콘 세트 또는 PDF 다이어그램의 변경 사항을 확인할 때.
  • 기계가 읽을 수 있는 diff 출력이 필요한 스크립트나 CI 파이프라인에서 사용할 때.
  • 기본 git difftool을 구문을 인식하는 뷰어로 교체할 때.

빠른 시작

  1. 1

    Homebrew로 설치(macOS 및 Linux)

    brew install ivankovic/omnidiff/omnidiff
  2. 2

    또는 Cargo로 소스에서 빌드(C 컴파일러와 Rust 1.92 이상 필요)

    cargo install --locked omnidiff
  3. 3

    대화형 뷰어에서 파일 두 개 열기

    omnidiff BEFORE AFTER

사용 전 알아둘 점

  • README 배지에는 카피레프트 라이선스인 AGPL-3.0-only가 표시되어 있지만, 저장소 메타데이터에서는 감지된 라이선스가 없습니다.
  • 소스에서 빌드하려면 C 컴파일러와 Rust 1.92 이상이 필요하며, 처음 cargo install을 실행할 때는 몇 분 정도 걸립니다.

포함된 컬렉션

토픽

자주 묻는 질문

omnidiff은(는) 무엇인가요?
tree-sitter로 코드를 구조적으로 비교하고 이미지, 폰트, 아카이브, PDF도 비교하는 Rust 기반 콘텐츠 인식 diff 도구입니다. OmniDiff는 파일 형식에 따라 비교 방식을 선택하는 CLI 및 터미널 diff 도구입니다. 25개 언어의 소스 코드는 tree-sitter 문법으로 파싱해, 줄 전체를 삭제 및 추가로 표시하는 대신 이름이 바뀐 표현식처럼 실제로 변경된 부분만 강조합니다. 확장자를 알 수 없는 파일은 일반 텍스트로 비교합니다.
omnidiff은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
omnidiff은(는) Other 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
omnidiff은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. omnidiff의 마지막 커밋은 2026년 11월 6일입니다.
omnidiff은(는) 어디에 사용할 수 있나요?
몇몇 표현식만 바뀐 코드 리팩터링을 검토할 때. git으로 관리하는 폰트, 아이콘 세트 또는 PDF 다이어그램의 변경 사항을 확인할 때. 기계가 읽을 수 있는 diff 출력이 필요한 스크립트나 CI 파이프라인에서 사용할 때. 기본 git difftool을 구문을 인식하는 뷰어로 교체할 때.
omnidiff는 어떻게 설치하나요?
Homebrew로 설치(macOS 및 Linux): brew install ivankovic/omnidiff/omnidiff 또는 Cargo로 소스에서 빌드(C 컴파일러와 Rust 1.92 이상 필요): cargo install --locked omnidiff 대화형 뷰어에서 파일 두 개 열기: omnidiff BEFORE AFTER
omnidiff은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/ivankovic/omnidiff

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트