我想在提交訊息中自動添加我的團隊名稱,我已使用以下命令在全域配置中注冊:
git config --global user.team "Seawolves"
有許多團隊在同一個專案中作業,我們共享一個在 gitconfig 檔案中指定的模板檔案。
[commit]
template = /mnt/share/gitmessage
這是我的 ~/.gitconfig 的一部分:
cat ~/.gitconfig
[user]
name = Rajesh Khanna
email = [email protected]
team = Seawolves
從 ~/.gitconfig 獲取團隊名稱并將 git 放入提交訊息的最佳方法是什么?我應該使用 prepare-commit-msg 鉤子嗎?或者它是一種更簡單的方式來獲取訊息,就像它為電子郵件和姓名自動完成的那樣?
或者我是否需要使用以下命令獲取它: git config user.team
并將其回顯到類似于我在這里找到的訊息中:https : //gist.github.com/bartoszmajsak/1396344/97081e76ab275f5fe526347908503febd1340495
uj5u.com熱心網友回復:
處理這個問題的最好方法確實是使用prepare-commit-msg鉤子。當你創建一個時,你應該注意傳遞給它的引數,除非你想讓你的生活變得不必要的困難,否則在你使用時避免修改它git commit --amend(例如當第二個引數是 時commit)。
請注意,鉤子需要修改作為第一個引數的檔案,這與許多人的期望不同。因此,你會經常要使用類似的-i引數給Perl,Ruby或sed,或者可執行腳本行編輯器一樣ed -s或ex -s與w命令。
如果您正在嘗試添加預告片,那么git interpret-trailers根據配置添加所需的條目可能會有所幫助,并且您可以對其進行自定義以不添加已存在的條目。它不能使用user.team,但它可以使用其他配置選項來設定預告片。
您嘗試簡單地將%(team)模板中的標記替換為值的示例user.team如下所示:
#!/bin/sh
file="$1"
from="$2"
[ "$from" = commit ] && exit 0
TEAM=$(git config user.team) perl -i -e 's/\%\(team\)/$ENV{TEAM}/g' "$file"
這會將配置值拉入TEAM傳遞給 Perl的環境變數中,然后將%(team)替換為該環境變數的值。您也可以這樣做sed,但您必須確保您的user.team值不包含斜杠(或您使用的任何其他分隔符):
sed -i -e "s/%(team)/$(git config user.team)/g"
請注意,此構造適用于 GNU sed;BSD sed 和 macOS 一樣,在-i使用時需要一個額外的引數。由于這不是可移植的,因此您應該避免使用這種語法并改用 Perl 或 Ruby,除非您確定它只會在單個作業系統上使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/405537.html
標籤:
上一篇:gitpush錯誤:dstrefspecrefs/heads/main匹配多個
下一篇:Git拒絕LFS覆寫
