상황
모델 별칭 하나를 추가하는 작은 작업이다. 작업 레인은 "코드 한 곳, 테스트 한 곳, 문서 한 곳, 총 파일 세 개"라고 보고하고 변경 요청을 연다. 설명과 목적이 모두 맞고, 테스트도 초록이다. 리뷰어가 할 일은 세 파일의 diff를 읽는 것뿐인 것처럼 보인다.
흔한 착각
보고서의 파일 목록을 변경의 범위로 믿는다. 리뷰어는 보고된 세 파일만 열어 보고, 목록 밖에 무엇이 들어왔는지는 묻지 않는다. 특히 바이너리 파일은 diff 화면에서 한 줄짜리 "변경됨"으로만 보여서, 그냥 넘기기 쉽다.
실제로 일어난 일
커밋에는 파일이 네 개 있었다. 보고된 세 파일 말고 약 6MiB짜리 패키지 압축 파일이 저장소 최상위에 함께 커밋되어 있었다. 패키징을 확인할 때 작업 트리에 남는 종류의 파일이다. 처음 이걸 잡은 것은 사람이 아니라 자동 리뷰 봇이었다. 커밋을 고쳐 그 파일을 빼고 다시 푸시하자 파일 수가 보고와 같은 세 개가 되었고, 그 뒤에 머지되었다.
무엇을 확인해야 하는가
파일 목록은 보고서가 아니라 커밋에서 읽는다. 기준 브랜치와 비교한 파일별 변경 요약을 뽑아, 보고된 목록과 개수와 이름이 정확히 같은지 본다. 목록에 없는 파일이 하나라도 있으면 그 이유가 설명될 때까지 리뷰를 멈춘다. 크기도 함께 본다. 몇 줄 고친 작업에 수 MiB짜리 파일이 있다면 거의 항상 실수다.
고치는 방향
커밋할 때 작업 트리 전체를 한꺼번에 담지 말고 바꾼 파일을 경로로 지정해 스테이징한다. 커밋 직전에는 스테이징된 파일 목록을 한 번 읽는다. 패키지 압축 파일이나 빌드 결과물처럼 로컬 확인 과정에서 생기는 파일은 무시 목록에 넣어, 실수로 담으려 해도 담기지 않게 한다. 이미 들어갔다면 커밋을 고쳐 빼고, 그 파일이 이력에 남지 않았는지 확인한다.
확인 방법
변경 요청에 "보고된 파일 목록"과 "커밋의 실제 파일 목록" 두 줄을 나란히 남긴다. 두 줄이 같고, 목록에 바이너리나 큰 파일이 없을 때만 리뷰로 넘어간다. 둘이 다르면 그 차이 자체가 첫 번째 리뷰 코멘트다.
The setup
A small task: add one model alias. The work lane reports "one code file, one test, one doc, three files total" and opens a change request. The description matches the goal and the tests are green. It looks like the reviewer only has to read three diffs.
The usual mistake
Treating the report's file list as the scope of the change. The reviewer opens the three reported files and never asks what else came along. Binary files make this easy to miss: in a diff view they show up as a single "changed" line with nothing to read.
What was actually happening
The commit had four files. Besides the three that were reported, a package tarball of about 6 MiB sat committed at the repository root, the kind of file a local packaging check leaves in the working tree. The first to catch it was not a person but an automated review bot. After the commit was amended to drop the file and pushed again, the file count matched the report at three, and only then was it merged.
What to check
Read the file list from the commit, not from the report. Pull the per-file change summary against the base branch and check that the count and the names match the reported list exactly. If any file is missing from the report, stop reviewing until that file is explained. Check sizes too: a multi-MiB file in a change that edits a few lines is almost always a mistake.
Which way to fix it
When committing, stage the files you changed by path instead of sweeping in the whole working tree. Right before committing, read the list of staged files once. Put files produced by local checks, such as package tarballs and build output, into the ignore list so they cannot be staged even by accident. If one already went in, amend the commit to drop it and confirm it did not stay in the pushed history.
How to check
Put two lines side by side in the change request: the reported file list and the commit's actual file list. Move on to review only when the two match and neither contains binaries or unusually large files. If they differ, that difference is the first review comment.
场景
一个很小的任务:加一个模型别名。工作通道报告“一个代码文件、一个测试、一个文档,一共三个文件”,然后开了变更请求。描述和目标都对得上,测试也是绿的。看起来评审者只需要读三份 diff。
常见的误判
把报告里的文件列表当成改动的范围。评审者只打开报告里的三个文件,从不问还有什么一起进来了。二进制文件尤其容易漏掉:在 diff 页面里它只显示成一行“已更改”,没有可读的内容。
实际发生了什么
提交里其实有四个文件。除了报告里的三个,仓库根目录还一起提交了一个大约 6MiB 的软件包压缩文件,就是本地做打包检查时会留在工作区里的那种文件。最先发现它的不是人,而是自动评审机器人。修改提交、去掉这个文件并重新推送之后,文件数才和报告一样变成三个,然后才合并。
该检查什么
文件列表要从提交里读,不要从报告里读。拿出相对于基准分支的逐文件改动摘要,确认数量和文件名与报告完全一致。只要有一个文件不在报告里,就先停下评审,直到这个文件被解释清楚。大小也要看:只改了几行的任务里出现一个几 MiB 的文件,几乎一定是失误。
修复方向
提交时不要把整个工作区一把装进去,而是按路径暂存自己改过的文件。提交前把暂存区的文件列表读一遍。软件包压缩文件、构建产物这类本地检查过程中产生的文件,放进忽略列表,让它们就算误操作也进不了暂存区。如果已经进去了,就修改提交把它去掉,并确认它没有留在已推送的历史里。
如何确认
在变更请求里并排写两行:报告的文件列表,和提交里实际的文件列表。只有两行一致、而且里面没有二进制或异常大的文件时,才进入评审。两者不一致时,这个差异本身就是第一条评审意见。
状況
小さな作業だ。モデルのエイリアスを一つ追加する。作業レーンは「コード一つ、テスト一つ、ドキュメント一つ、計三ファイル」と報告して変更リクエストを開く。説明は目的と合っていて、テストも緑だ。レビュアーは三つの差分を読めば済むように見える。
よくある思い込み
報告のファイル一覧を変更の範囲だと信じてしまう。レビュアーは報告された三ファイルだけを開き、一覧の外に何が入ってきたかは問わない。バイナリファイルは特に見落としやすい。差分画面では「変更あり」の一行として表示されるだけで、読む中身がないからだ。
実際に起きていたこと
コミットにはファイルが四つあった。報告された三つのほかに、約 6MiB のパッケージアーカイブがリポジトリの最上位に一緒にコミットされていた。ローカルでパッケージングを確認したときに作業ツリーに残る種類のファイルだ。最初に見つけたのは人ではなく、自動レビューボットだった。コミットを修正してそのファイルを外し、プッシュし直すと、ファイル数は報告どおりの三つになり、それからマージされた。
何を確かめるべきか
ファイル一覧は報告ではなくコミットから読む。ベースブランチと比べたファイルごとの変更サマリーを出し、数と名前が報告の一覧と完全に一致するかを見る。報告にないファイルが一つでもあれば、その理由が説明されるまでレビューを止める。サイズも見る。数行を直す作業に数 MiB のファイルがあれば、ほぼ確実にミスだ。
直す方向
コミットするときは作業ツリーをまるごと入れず、変更したファイルをパスで指定してステージする。コミットの直前に、ステージされたファイル一覧を一度読む。パッケージアーカイブやビルド成果物のように、ローカルの確認で生まれるファイルは無視リストに入れ、うっかり入れようとしても入らないようにする。すでに入ってしまったなら、コミットを修正して外し、プッシュ済みの履歴に残っていないことを確かめる。
確認方法
変更リクエストに「報告されたファイル一覧」と「コミットの実際のファイル一覧」の二行を並べて残す。二行が一致し、どちらにもバイナリや大きすぎるファイルがないときだけレビューに進む。食い違っていれば、その差分そのものが最初のレビューコメントになる。