fix(gitignore): 넓은 부정이 빌드 산출물을 되살렸다 — catalog 아래 .pyc 재제외 - #64
Merged
Conversation
`pytest` 를 한 번 돌리면 **추적 중인 바이너리가 더러워진다**:
M catalog/__pycache__/draft_specimen.cpython-310.pyc
원인은 "규칙 생기기 전에 커밋돼서"가 아니다(그럴듯하지만 틀렸다). `.gitignore` 1~2행에
`__pycache__/`·`*.pyc` 가 **있고**, 26행의 **`!catalog/**`** 가 그보다 **뒤에 있어
그걸 다시 포함**시킨 것이다.
그 부정은 07-27 에 **다른 버그**를 고치려고 넣었다 — `*promo*` 가 경로 어디든 매칭돼
`bug_derived_headroom_promoted_to_target.md` 같은 정상 도감 항목을 조용히 삼켰다.
그 수리는 옳았지만 **범위가 넓어 빌드 산출물까지 되살렸다.**
⇒ **넓은 부정에는 좁은 재제외가 따라와야 한다.**
!catalog/**
catalog/**/__pycache__/ ← 추가
catalog/**/*.pyc ← 추가
+ `git rm --cached` 로 이미 추적 중이던 .pyc 한 장 제거
검증 셋:
① 그 .pyc 이 이제 무시된다(`check-ignore` → `.gitignore:30`)
② 도감 `.md` 는 여전히 무시 안 된다 — **07-27 부정의 원래 목적이 살아 있다**
③ `pytest` 뒤 워킹트리에 의도한 변경만 남는다(더럽혀지는 바이너리 없음)
분모: `catalog/` 아래 추적 중인 비-`.md` 파일은 **2개**였다 — 이 `.pyc`(제거)와
`draft_specimen.py`(정상 도구). 나머지 추적-그러나-무시 대상은 **0**.
⚠️ 이 분모를 처음엔 **틀리게 셌다**: `git check-ignore` 는 `--no-index` 없이는 추적 파일을
보고하지 않아 "0건"이 나왔다. 도구를 고쳐 다시 센 값이 위의 것이다.
발견 = [자생](오늘 `git diff --stat` 에서 보고 `.pyc` 를 PR 에 실을 뻔했다).
⚠️ 원인 진단은 그쪽 것과 다르다 — 위에 적은 대로 **부정 규칙**이 범인이다.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
앞 커밋이 *"`!catalog/**` 가 되살렸고 **그래서** pytest 가 바이너리를 더럽혔다"* 라고
썼는데 그 **"그래서"가 틀렸다.**
실험으로 확인:
printf '*.pyc\n' > .gitignore ; git add -f a.pyc ; git commit
echo v2 > a.pyc ; git status --porcelain
→ M a.pyc # 무시 규칙에 걸려도 추적 파일이면 수정이 보고된다
⇒ **.gitignore 는 추적 파일에 아예 안 듣는다.** 그러니
· 증상(`pytest` 뒤 ` M …pyc`)의 원인은 **추적 상태**이지 26행이 아니고
· 26행이 설명하는 것은 **어떻게 추적으로 들어왔나 · `git rm --cached` 뒤에 왜 되살아나나** 다
· `check-ignore` 가 기본값에서 추적 파일을 안 보는 것도 같은 이유다 — 그 도구에겐
추적 파일이 애초에 "무시 여부를 물을 대상"이 아니다
**수리 자체는 안 바뀐다** — 오히려 왜 둘 다 필요했는지가 분명해진다:
`git rm --cached` 만 하면 다음 넓은 `git add` 에 되살아나고, 재제외만 하면 이미 추적 중인
건 그대로다.
정정 출처 = [자생]. 앞 커밋 본문은 **지우지 않고** 이 커밋으로 덧댄다.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Collaborator
Author
|
증상(pytest 뒤 M …pyc)의 원인 |
추적 상태 — 26행이 아니다 |
| 26행이 설명하는 것 | 어떻게 추적으로 들어왔나 · git rm --cached 뒤 왜 되살아나나 |
check-ignore 가 기본값에서 안 보는 이유 |
그 도구에겐 추적 파일이 애초에 "무시 여부를 물을 대상"이 아니다 |
수리 자체는 안 바뀐다 — 오히려 왜 둘 다 필요했는지가 분명해진다: git rm --cached 만 하면 다음 넓은 git add 에 되살아나고, 재제외만 하면 이미 추적 중인 건 그대로다.
정정 출처 = [자생]. 앞 본문은 지우지 않고 덧댄다. 473 passed 유지.
Collaborator
Author
|
자율 머지 (대장님 세션 위임). .gitignore에 catalog/ 아래 pycache/·*.pyc 좁은 재제외 추가(넓은 !catalog/** 부정이 빌드산출물 되살린 것 수리) + 실수로 추적된 .pyc 삭제. 빌드 위생·민감경로 아님·CI 4/4. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
pytest를 한 번 돌리면 추적 중인 바이너리가 더러워진다:원인 — "규칙 생기기 전에 커밋돼서"가 아니다
그럴듯하지만 틀렸다.
.gitignore1~2행에__pycache__/·*.pyc가 있다. 범인은 26행이다:!catalog/**가 1~2행보다 뒤에 있어 그 규칙을 되돌린다.그 부정은 07-27 에 다른 버그를 고치려고 넣은 것이다 —
*promo*가 경로 어디든 매칭돼bug_derived_headroom_promoted_to_target.md같은 정상 도감 항목을 조용히 삼켰다(그 사연이.gitignore22~25행 주석에 그대로 남아 있다). 그 수리는 옳았지만 범위가 넓어 빌드 산출물까지 되살렸다.⇒ 넓은 부정에는 좁은 재제외가 따라와야 한다.
고친 것
+ 이미 추적 중이던
.pyc한 장을git rm --cached로 제거.검증 셋
.pyc이 이제 무시된다 —check-ignore→.gitignore:30.md는 여전히 무시 안 된다 — 07-27 부정의 원래 목적이 살아 있다pytest뒤 워킹트리에 의도한 변경만 남는다473 passed.
분모 (오늘 규율)
catalog/아래 추적 중인 비-.md파일은 2개였다 — 이.pyc(제거)와draft_specimen.py(정상 도구). 그 밖에 추적-그러나-무시 대상은 0.git check-ignore는--no-index없이는 추적 파일을 보고하지 않아 "0건"이 나왔다 — 정확히 내가 찾던 경우가 조용히 빠진 것이다. 도구를 고쳐 다시 센 값이 위의 것이다.출처
[자생] 이
⚠️ 원인 진단은 그쪽 것과 다르다 — 위에 적은 대로 부정 규칙이 범인이고, "먼저 커밋돼서 ignore 가 못 뺀다"가 아니다.
git diff --stat에서 보고.pyc를 PR 에 실을 뻔했다고 알려왔다.