04 / 07
輸出、顏色與符號
格式從 1.0 起沒有變過,而且顏色永遠不是唯一承載資訊的方式。
每個儲存庫的標題
每個儲存庫之前會印出一段用 80 個 = 框起來的標題,內容是資料夾名稱與目前的分支;detached HEAD 時顯示短雜湊。
================================================================================
📂 Folder: web-console │ Branch: main
================================================================================
M src/main.rs
-q/--quiet 會拿掉標題,只留下 git 自己的輸出(儲存庫之間仍然隔一個空行)。
統計摘要
有任何儲存庫失敗時,結束前會印出一段摘要;加上 --summary 則是一律印出。
────────────────────────────────────────────────────────────────────────────────
mgit: 6 repositories, 5 succeeded, 1 failed
✗ web-console (exit code 128)
stdout 與 stderr
這是 mgit 可以安全放進腳本的關鍵:摘要預設寫到 stderr,不會汙染 stdout。所以 mgit status -s > status.txt 得到的是乾淨的資料,而失敗仍然看得見。
| 內容 | 送到哪裡 |
|---|---|
| 每個儲存庫的標題列 | stdout |
| git 自己的輸出 | git 自己決定,mgit 不攔截 |
| 失敗時自動印出的摘要 | stderr |
--summary 要求的摘要 | stdout |
| 找不到儲存庫的警告、讀不到目錄的警告 | stderr |
--list 的路徑 | stdout |
試著把輸出導到檔案,再 cat 回來: mgit --summary > status.txt
顏色
顏色只在輸出接到終端機、而且終端機支援時才會出現。優先順序是:命令列選項 → MGIT_* → CLICOLOR_FORCE → NO_COLOR/CLICOLOR → 終端機偵測。
| 情境 | 結果 |
|---|---|
| 輸出被導向檔案或管線 | 自動關閉顏色 |
NO_COLOR 設為非空值 | 關閉顏色(no-color.org 慣例) |
CLICOLOR_FORCE 設為非空且非 0 | 強制開啟顏色 |
--color=always | 一律開啟,覆蓋以上全部 |
--color=never、--no-color | 一律關閉,覆蓋以上全部 |
試 NO_COLOR: NO_COLOR=1 mgit --summary
符號與 ASCII 退回
預設使用 📂、│、✗、─ 這幾個符號。當終端機無法正確顯示時會自動換成純 ASCII:Folder: … | Branch: …、x、-。
- Windows 主控台的輸出代碼頁不是 UTF-8 時自動改用 ASCII。
- POSIX locale 不是 UTF-8(
LANG=C、LC_ALL=POSIX)時自動改用 ASCII。 --ascii強制 ASCII;MGIT_ASCII=1也可以,MGIT_ASCII=0則強制回復 Unicode。