儘管這些文件位於.gitignore文件中,但我的開發團隊中的人員仍在繼續將構建特定文件(node_modules和其他文件)推送到我們的回購站,可能與git add --all -f
或其他相關內容有關。什麼是比.gitignore更強大的方式來保持(強制)文件回購嗎?
這是一個巨大的痛苦,讓人們停止這樣做是困難的。
是否有某種方法可以使某些文件無法推送到回購站點?
儘管這些文件位於.gitignore文件中,但我的開發團隊中的人員仍在繼續將構建特定文件(node_modules和其他文件)推送到我們的回購站,可能與git add --all -f
或其他相關內容有關。什麼是比.gitignore更強大的方式來保持(強制)文件回購嗎?
這是一個巨大的痛苦,讓人們停止這樣做是困難的。
是否有某種方法可以使某些文件無法推送到回購站點?
有什麼辦法可以使某些文件無法推送到回購站點嗎?
是的,你可以使用像這樣的鉤子來防止提交多個文件。
pre-receive hook
#!/bin/sh
# Check to see if this is the first commit in the repository or not
if git rev-parse --verify HEAD >/dev/null 2>&1
then
# We compare our changes against the previous commit
against=HEAD^
else
# Initial commit: diff against an empty tree object
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi
# Redirect output to screen.
exec 1>&2
# Check to see if we have updated the given file
if [ $(git diff-tree -r --name-only $against | grep <ANY FILE YOU WANT TO FIND OUT HERE>) ];
then
# Output colors
red='\033[0;31m';
green='\033[0;32m';
yellow='\033[0;33m';
default='\033[0;m';
# personal touch :-)
echo "${red}"
echo " "
echo " |ZZzzz "
echo " | "
echo " | "
echo " |ZZzzz /^\ |ZZzzz "
echo " | |~~~| | "
echo " | |- -| /\ "
echo " /^\ |[]+ | |^^^| "
echo " |^^^^^^^| | +[]| | | "
echo " | +[]|/\/\/\/\^/\/\/\/\/|^^^^^^^| "
echo " |+[]+ |~~~~~~~~~~~~~~~~~~| +[]| "
echo " | | [] /^\ [] |+[]+ | "
echo " | +[]+| [] || || [] | +[]+| "
echo " |[]+ | || || |[]+ | "
echo " |_______|------------------|_______| "
echo " "
echo " "
echo " ${green}You have just committed code "
echo " ${red}Your code ${yellow}is bad.!!! "
echo " ${red} Do not ever commit again "
echo " "
echo "${default}"
fi;
# set the exit code to 0 or 1 based upon your needs
# 0 = good to push
# 1 = exit without pushing.
exit 0;
Github上不支持以這種方式使用掛鉤。
他們有自己的WebHooks
在這種情況下,你也可以使用鉤子,但在客戶端。
相同的代碼可以放在pre-commit
鉤子上客戶端。
爲了達到這個目的,這不一定要安裝在服務器上嗎?這在我看來有點太花哨...... –
客戶端鉤子的問題是你可以刪除它們(用戶)。在服務器端只有git admin可以改變它們 – CodeWizard
是的,但這也意味着你必須訪問服務器本身;如果代碼是由像Github這樣的服務託管的,那麼他們將無法獲得像這樣的鉤子。 –
這不是一個容易解決的問題,因爲git是分佈式的。
服務器端過濾器像後置提交鉤子(或提交過濾器插件,如果你使用的是藏匿處)允許用戶陷入混亂,這是不是很好。
客戶端預先提交的鉤子更清潔,因爲它可以防止用戶污染他們的回購,但是這個解決方案不是防彈的。
您可以從另一個角度來處理問題,並將構建工件和中間文件移出您的存儲庫目錄。
你使用的是類似GitHub的東西嗎?您使用什麼來託管存儲庫? –
打敗你的同事,直到他們明白他們不應該提交不適當的文件。 –
@DavidDeutsch這可能是下一步 –