Archived
更新版本號至 0.2.0 並補強 code-review-resolve 盤點規則 #35
@@ -12,7 +12,7 @@ argument-hint: "[--findings <findings.json 路徑>] [--target <目標分支>] [-
|
||||
| --- | --- |
|
||||
| A. Git 同步 | `git fetch` → 當前分支不在遠端則切換 develop(再退而 master)→ `git pull`/必要時解衝突 → 只有來源分支與 PR 目標分支相同時才建立新工作分支 |
|
||||
| B. 解決問題 | 讀 `findings.json` / `exclusions.json` → 依等級 🔴→🟠→🟡→🔵 逐條修復或判斷誤報 → 已解決者自 `findings.json` 移除,誤報寫入 `exclusions.json` 後也可移除;**無待處理問題則跳到階段 D** |
|
||||
| C. 分類提交 | 必須分析並涵蓋工作區所有變更(已修改/新增/刪除/改名,含 findings/exclusions 更新)→ 依 feat/fix/docs/style/refactor/perf/test/chore/revert 分組 → 各組一個 commit |
|
||||
| C. 分類提交 | 必須分析並涵蓋工作區所有變更(已修改/新增/刪除/改名,含已暫存與未暫存、未追蹤檔、findings/exclusions 更新)→ 依 feat/fix/docs/style/refactor/perf/test/chore/revert 分組 → 各組一個 commit |
|
||||
| D. Push 當前分支 | 認證管理器 → 失敗改 token → 再失敗詢問使用者;**無 commit 可 push 則跳到階段 E** |
|
||||
| E. 發出 PR | 確定目標分支(不明必問)→ 選 PR 描述(完整/簡單/自訂)→ token 呼叫 Gitea API 建 PR → 通知並清除內文 |
|
||||
|
||||
@@ -237,16 +237,17 @@ canonical 等級為 `critical` / `warning` / `info`;其他寫法容錯對應
|
||||
### C1. 盤點工作區變更
|
||||
|
||||
```bash
|
||||
git status --porcelain
|
||||
git status --porcelain=v1 -uall
|
||||
git diff # 已追蹤檔的未暫存變更
|
||||
git diff --staged # 已暫存變更
|
||||
git ls-files --others --exclude-standard # 未追蹤檔
|
||||
```
|
||||
|
||||
涵蓋**所有**變更:已修改、新增(未追蹤)、刪除、改名。**無任何變更** → 回報「工作區無變更可提交」,跳過提交直接進入階段 D(D 會因無 commit 可 push 而跳到階段 E)。
|
||||
盤點時必須以 `git status --porcelain=v1 -uall` 為主,不可只看 `git diff`,因為那會漏掉未追蹤檔。盤點範圍必須包含**所有**變更:已修改檔、新增檔(`??` 未追蹤檔)、刪除檔、改名檔,以及已暫存與未暫存變更。`git diff`、`git diff --staged`、`git ls-files --others --exclude-standard` 只作為輔助核對。**無任何變更** → 回報「工作區無變更可提交」,跳過提交直接進入階段 D(D 會因無 commit 可 push 而跳到階段 E)。
|
||||
|
||||
### C2. 依異動內容歸類 conventional commit 類型
|
||||
|
||||
逐一檢視每個變更檔的**實際異動內容**(不只看路徑),歸入下列其一:
|
||||
逐一檢視每個變更檔的**實際異動內容**(不只看路徑),歸入下列其一;**所有 `??` 未追蹤檔都必須納入分類**,不能因為它們不在 `git diff` 裡就漏掉:
|
||||
|
||||
| type | 適用情境 |
|
||||
| --- | --- |
|
||||
@@ -262,10 +263,11 @@ git diff --staged # 已暫存變更
|
||||
|
||||
- **同一檔案橫跨多型** → 以該檔**主要異動性質**歸類;難以拆分時就近歸入影響最大的一類,並在總結註記。
|
||||
- **階段 B 修復產生的變更**:依其性質歸類(修 bug→`fix`、補功能→`feat`、改文件→`docs`…)。`findings.json` / `exclusions.json` 的問題狀態更新歸 `chore`。
|
||||
- **未追蹤新檔**:必須照實際內容歸入對應 type,必要時在提交前明確 `git add -- <path>`,不可因為是新檔就略過。
|
||||
|
||||
### C3. 產出提交計畫
|
||||
|
||||
把變更檔依 type 分組,**每個 type 一個 commit**,輸出提交計畫;除非使用者要求確認或分組有不可忽略的取捨,否則直接提交:
|
||||
把變更檔依 type 分組,**每個 type 一個 commit**,輸出提交計畫;**所有變更項目都必須被追蹤並納入計畫,不能遺漏任何 `??` 未追蹤檔**。除非使用者要求確認或分組有不可忽略的取捨,否則直接提交:
|
||||
|
||||
| 順序 | type(範圍) | commit 訊息 | 納入檔案 |
|
||||
| --- | --- | --- | --- |
|
||||
@@ -280,6 +282,7 @@ git diff --staged # 已暫存變更
|
||||
- `一句總結`:把這個 commit 內所有異動**總結成一句**繁體中文(簡短、聚焦做了什麼)。
|
||||
- 範例:`feat(使用者登入): 新增帳密登入與 token 簽發`、`fix(結帳流程): 修正空購物車導致的結帳例外`、`perf(物件查詢): 改用批次查詢降低 DB 往返`、`docs(README): 補上安裝與呼叫方式說明`、`chore(ai-review 狀態): 更新 findings.json 與 exclusions.json`。
|
||||
- **提交順序建議**:`fix`/`feat` 等核心異動在前,`docs`/`style`/`chore` 在後(純屬建議,可依相依性調整)。
|
||||
- **盤點要求**:提交計畫必須完整對應 C1 盤點出的所有變更項目,若有新檔或未追蹤檔,必須明確列入對應 commit,不能只根據 `git diff` 下結論。
|
||||
|
||||
### C4. 執行分類提交
|
||||
|
||||
@@ -292,6 +295,8 @@ git commit -m "type(範圍): 一句總結" # 範圍=實際異動的功能/
|
||||
|
||||
- **逐組 add/commit**,確保每個 commit 只含該類異動;不要一次 `git add -A` 再混在一起。
|
||||
- 改名/刪除檔一併納入對應組的 `git add`(`git add -A -- <路徑>` 或明確列出)。
|
||||
- **所有 `??` 未追蹤檔都必須納入提交**;若是新檔,必要時要明確執行 `git add -- <path>`,不可漏掉。
|
||||
- **不可只根據 `git diff` 判斷變更**;C1 盤點出的所有異動都必須反映到分類與提交,否則視為提交計畫不完整。
|
||||
- commit 完成後進入階段 D(push)。`--no-commit` 時不進入後續階段;若工作區無變更而沒有產生任何新 commit,仍進入階段 D,由 D 判斷無 commit 可 push 後跳到階段 E。
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user