-
Notifications
You must be signed in to change notification settings - Fork 3
CLI Tools
Won-Kyu Park edited this page Aug 4, 2026
·
2 revisions
tools/ 아래에 있는 명령줄 스크립트들이다. 전부 저장소 루트에서
uv run tools/<이름>.py로 실행한다. 라이브러리를 직접 코드로 쓰지
않고 터미널에서 빠르게 시험해보고 싶을 때 쓰면 된다.
uv run tools/srcs_commit.py my_doc.txt -m "initial commit"-
content_file(필수) — 커밋할 원본 파일 -
rcs_file(선택) —.srcs파일 경로. 생략하면.srcs/<파일명>.srcs로 자동 배치 -
-m/--message(필수) — 커밋 로그 메시지 -
-a/--author— 기본값은$USER -
--no-sign— GPG 서명 끄기 -
--binary— 텍스트로 디코딩 가능해도 강제로 바이너리 커밋 -
--srcs-dir— 자동 배치 시 사용할 디렉토리 (기본.srcs)
파일을 먼저 바이트로 읽은 뒤, 첫 8KB 안에 NUL 바이트가 없고 UTF-8로
디코딩되면 텍스트로 커밋한다 (git이 텍스트/바이너리를 구분하는 방식과
같음). 그 판단은 라이브러리가 아니라 이 스크립트가 한다 —
SimpleRCS.commit() 자체는 bytes를 넘기면 무조건 바이너리 경로로
간다.
uv run tools/srcs_log.py my_doc.txt.srcs
uv run tools/srcs_log.py my_doc.txt.srcs -n 5 --reverse --show-signature-
-n/--limit— 최근 N개만 -
-r/--reverse— 오래된 것부터 -
--show-signature— GPG 서명 검증까지 같이
uv run tools/srcs_diff.py my_doc.txt.srcs -r 1.1:1.3
uv run tools/srcs_diff.py my_doc.txt.srcs --engine ses-
-r/--revision—'1.1'(HEAD와 비교) 또는'1.1:1.2'(두 버전 간) -
--engine—difflib(기본) /pydifflib/myers/ses/dmp.ses/dmp는 Cython 확장을 빌드해뒀을 때만 동작
엔진별 비교가 필요할 때, 즉 Diff Engines에서 설명한 여러 diff 알고리즘을 실제로 눈으로 비교해보고 싶을 때 쓰는 도구다.
uv run tools/srcs_blame.py my_doc.txt
uv run tools/srcs_blame.py my_doc.txt --depth 10-
content_file— 원본 파일 (또는.srcs파일 자체를 직접 지정 가능) -
rcs_file(선택) — 명시적.srcs경로 -
--srcs-dir— 자동 탐색 디렉토리 (기본.srcs) -
--depth— 이 개수만큼만 뒤로 거슬러 올라가고, 그 이전 라인은 가장 오래된 도달 버전에 귀속시킴
HEAD가 바이너리면 blame을 지원하지 않는다(라인이라는 개념이 없으니까).
uv run tools/srcs_verify.py my_doc.txt.srcs해시체인 전체와 GPG 서명을 검증한다. 실패하면 exit code 1과 함께
❌ VERIFICATION FAILED를 출력한다.
uv run tools/srcs_sign_head.py my_doc.txt.srcs -s <GPG_KEY_ID>-
-s/--signer— 서명자 GPG 키 ID. 여러 번 지정하면 다중 서명 - 지정하지 않으면
SRCS_SIGNING_KEY환경변수를 본다 - v1 파일에는 쓸 수 없다 (서명은 v2 전용 기능)
uv run tools/bench_diff.py
uv run tools/bench_diff.py --size 500 --diff-ratio 0.1 --runs 5-
--size(KB) — 합성 테스트 데이터 크기 -
--diff-ratio— 두 입력 사이 변경 비율 -
--file-a/--file-b— 합성 데이터 대신 실제 파일로 비교 -
--runs— 반복 횟수 (평균/최솟값 계산용) -
--skip— 특정 엔진 제외
시간과 peak 메모리(tracemalloc)를 함께 보여준다. 순수 파이썬 Myers,
Cython SES/DMP, StreamSequenceMatcher, StreamTextSequenceMatcher,
표준 difflib까지 전부 한 번에 비교된다.
메모리 사용량만 따로 비교하는 보조 유틸리티. bench_diff.py가 이미
메모리까지 측정하기 때문에 지금은 거의 쓸 일이 없다.