Trawling

개발 · 최신기사

언어와 프레임워크, SDK와 개발 방식·도구의 변화를 다룹니다.

발행

OmniDiff, Git 변경을 코드 구문과 파일 내용 단위로 비교합니다

OmniDiff는 Git의 파일 변경사항을 코드에는 구문 구조로, 이미지·압축파일·폰트 등에는 내부 내용 단위로 비교해 보여줍니다. 대화형 Git difftool에서는 터미널 화면을 열고, `git diff`와 `git log -p`에서는 pager에 맞춘 텍스트 결과를 출력합니다. 지원하지 않는 코드 문법은 줄 단위로 비교하고 다른 바이너리는 파일이 다르다는 안내만 표시합니다.

발행

Roku 개발자 저장소, GitHub에서 GitLab으로 이전

Roku가 개발 문서와 샘플 앱, 도구 저장소를 GitHub에서 GitLab으로 옮겼습니다. 저장소 이름은 유지되지만 URL과 raw 파일 경로가 바뀌어 기존 Git remote, 서브모듈, CI 설정과 문서 인덱스를 갱신해야 합니다.

발행

10월의 Gitoxide: 객체 데이터베이스 33% 가속과 안정 API 준비

gitoxide 개발자는 Rust 기반 DEFLATE 압축 해제기 Sirocco를 도입해 객체 데이터베이스 작업 속도를 높였다고 보고합니다. 워크트리 생성·삭제와 안정 API 준비도 진행했으며, diff 호환성 개선과 Cargo 체크아웃 가속 계획을 공유합니다.

발행

Git 커밋 하나는 디스크를 얼마나 차지할까요?

Git 커밋이 차지하는 공간은 파일 내용의 압축률과 변경된 디렉터리 트리 크기에 따라 달라집니다. 팩파일을 만들지 않은 실험에서는 파일 하나의 3바이트 변경에도 8~17KB가 늘었지만, 큰 텍스트 파일은 원본 크기의 약 10%만 차지했습니다.

발행

Git 저장소를 SHA-256으로 이전하기

Git 저장소를 SHA-1에서 SHA-256으로 바꾸는 절차와 서브모듈 처리 방법을 설명합니다. 서브모듈 저장소를 먼저 변환하고 marks 파일로 객체 ID를 다시 연결해야 하며, Forgejo 저장소를 제자리에서 바꾸는 방법에는 기존 커밋 참조가 깨질 위험이 있습니다.

발행

Git 참조(refs)를 이해하는 법

Git은 변경되지 않는 콘텐츠 주소 기반 객체 저장소뿐 아니라, 문자열 키로 객체를 가리키는 변경 가능한 참조(ref) 저장소도 사용합니다. 브랜치와 태그가 ref라는 점을 바탕으로 fetch 인수와 로컬·원격 브랜치의 차이를 풀어 설명합니다.

발행

Git 2.55 reftable 백엔드, 참조 1만 개 생성 시간 650ms에서 40ms로 단축

Git 2.55의 reftable은 참조를 대량으로 만들 때 기존 files 백엔드보다 10~60배 빠르고 디스크도 덜 씁니다. 하지만 여러 프로세스가 동시에 참조를 만들면 기본 잠금 대기 시간 탓에 실패가 잦아져, CI처럼 쓰기가 몰리는 저장소는 마이그레이션 전에 동시성 테스트가 필요합니다.

발행

git worktree의 함정들 — .git이 디렉터리가 아니라 파일일 때

git worktree가 코딩 에이전트 시대를 맞아 주류 도구가 됐지만, linked worktree에서는 .git이 디렉터리가 아니라 포인터 파일이라는 사실에서 비롯되는 함정들이 있습니다. 리포지터리 루트 탐색 로직이 어긋나고, 샌드박스 안에서는 git hooks가 끊기는 문제까지, 저자는 git rev-parse 계열 명령과 core.hooksPath 설정으로 해결책을 제시합니다.

발행

이슈 트래킹의 재발명 — 로컬 퍼스트와 Git 네이티브로

코드 포지(forge) Manganin을 만드는 저자가 Git 안에 이슈 데이터를 저장하면서도 로컬 퍼스트로 쓸 수 있는 이슈 트래킹을 설계한 과정을 다룹니다. 리포지토리 안에 .issues/ 디렉터리를 두는 방법과 refs/issues/ 특수 ref를 쓰는 방법의 실패를 거쳐, 최종적으로 이슈를 별도의 숨겨진 자매 리포지토리에 일반 파일로 저장하는 단순한 구조에 도달합니다.