本文主要介紹了提交顯示用戶和云效賬號名不一致的原因,以及如何杜絕偽造提交。
提交顯示用戶和云效賬號名不一致原因
基于Git本身的機制,Git 提交者和作者信息來源是git config中自定義的user.email和user.name,由于支持自定義,所以可以設置為任意郵箱和名字,因此Git提交信息可以偽裝成任何人。
Codeup提交列表頁面顯示提交人信息的原則如下:
提交用戶識別原則
Codeup會使用當前登錄的云效賬號已綁定的主郵箱和Git提交信息中的user.email進行精準匹配(本地推送的情況下,提交信息中的郵箱由本地git config
配置),如果內容和大小寫均匹配一致,該提交將歸為當前用戶的貢獻,特別是在代碼提交量統計場景下,建議成員將user.email設置為和云效賬號綁定的主郵箱完全一致(注意大小寫敏感),避免貢獻計算誤差。
Codeup 支持推送規則檢查,如開啟代碼屬主檢查,則會啟動郵箱檢查,當提交信息中的郵箱和服務端云效賬號主郵箱不一致時,支持拒絕提交。具體參見推送規則設置。
如果提交信息中的郵箱沒有匹配當前使用的云效賬號的主郵箱,則會直接顯示提交信息中的 user.name 作為展示,所以可能會出現企業成員之外的提交人或作者名字,這并非是企業代碼庫被外部人員操作了。為了規范提交信息,建議開啟代碼屬主檢查,盡可能讓提交信息和云效賬號匹配一致。當然,如果要導入外部代碼庫,代碼庫提交歷史中很可能有非企業成員的提交(例如開源代碼庫),這時候不可避免地提交信息中會有外部人員的提交記錄,這是完全合理的。
如何杜絕提交偽造?
如果有人竊取了他人的賬密信息,并配置了他人的郵箱,想惡意偽造提交,向代碼倉庫提交惡意代碼,此時可以使用 GPG 在本地簽署提交記錄(commit)或者標簽(tag)。Codeup將對這些簽名做驗證,來確保提交記錄或者標簽來自受信任的來源。具體介紹,請參見GPG 簽名杜絕提交偽造。