إيقاف التزام git بواسطة مؤلف محدد باستخدام ربط الالتزام المسبق

StackOverflow https://stackoverflow.com//questions/9627198

  •  09-12-2019
  •  | 
  •  

سؤال

خطتي هي استخدام git لتتبع التغييرات في /etc ولكن عند الالتزام أريد أن أجعل الشخص الذي يجري التغيير يحدد نفسه كمؤلف عن طريق إضافة خيار --author في سطر الأوامر.

لذلك أود إيقاف عمليات ارتكاب الأخطاء غير المقصودة كجذر.

لقد حاولت إنشاء خطاف الالتزام المسبق هذا ولكنه لا يعمل - لا يزال git var يعيد الجذر حتى لو قمت بتحديد المؤلف في سطر الالتزام.

AUTHOR=`git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/\1/p'`
if [ "$AUTHOR" == "root <root@localhost>" ];
then
   echo "Please commit under your own user name instead of \"$AUTHOR\":"
   echo 'git commit --author="Adrian"'
   echo "or if your name is not already in logs use full ident"
   echo 'git commit --author="Adrian Cornish <a@localhost>"'
   exit 1
fi
exit 0
هل كانت مفيدة؟

المحلول

الإصدار الحالي من Git لا يصنع --author المعلومات المتاحة لخطافات Git عبر متغيرات البيئة أو وسائط سطر الأوامر أو stdin.ومع ذلك، بدلاً من المطالبة باستخدام --author سطر الأوامر، يمكنك إرشاد المستخدمين لتعيين GIT_AUTHOR_NAME و GIT_AUTHOR_EMAIL متغيرات البيئة:

#!/bin/sh
AUTHORINFO=$(git var GIT_AUTHOR_IDENT) || exit 1
NAME=$(printf '%s\n' "${AUTHORINFO}" | sed -n 's/^\(.*\) <.*$/\1/p')
EMAIL=$(printf '%s\n' "${AUTHORINFO}" | sed -n 's/^.* <\(.*\)> .*$/\1/p')
[ "${NAME}" != root ] && [ "${EMAIL}" != "root@localhost" ] || {
    cat <<EOF >&2
Please commit under your own name and email instead of "${NAME} <${EMAIL}>":
GIT_AUTHOR_NAME="Your Name" GIT_AUTHOR_EMAIL="your@email.com" git commit
EOF
    exit 1
}

مثل ال --author الوسيطة، تتحكم متغيرات البيئة هذه في مؤلف الالتزام.نظرًا لأن متغيرات البيئة هذه موجودة في بيئة Git، فهي أيضًا موجودة في بيئة pre-commit خطاف.ولأنهم في بيئة pre-commit هوك، لقد تم تمريرها إلى git var GIT_AUTHOR_IDENT الذي يستخدمهم مثل git commit يفعل.

ولسوء الحظ، فإن تعيين هذه المتغيرات أقل ملاءمة بكثير من استخدامها --author.أقترح الاتصال بمطوري Git ومطالبتهم بتعيين متغيرات البيئة هذه (باستخدام القيمة التي تم تمريرها عبر --author) قبل إطلاق pre-commit خطاف.

نصائح أخرى

استخدمت ما يلي، مضيفا هذا إلى الأنظمة .bashrc.

لن يصطاد الشعبية التي في الواقع إلى الجذر والعيش في تلك الشل، (سيئة!) لكنها تحتفظ بسجلاتي مفيدة عند استخدام القوم فقط Sudo. أحاول أيضا الاحتفاظ / إلخ سجل التغيير مع GIT - حتى أتمكن من رؤية ما تم إجراؤه شهريا. giveacodicetagpre.

href="https://serverfault.com/Questions/256754/correct-user-names-when-Tracking-TC-in-Git-Repository- و-committing-as-as-root"> HTTPS: //serverfault.com/questions/256754/correct-user-names-when-tracking-etc-in-git-Repository- و-commiting-as-as-root

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top