سؤال

أرغب في الحصول على عدد عمليات تنفيذ مستودع Git الخاص بي، يشبه إلى حد ما أرقام مراجعة SVN.

الهدف هو استخدامه كرقم بناء فريد ومتزايد.

أفعل ذلك حاليًا على Unix/Cygwin/msysGit:

git log --pretty=format:'' | wc -l

لكنني أشعر أنه نوع من الاختراق.

هل هناك طريقة أفضل للقيام بذلك؟سيكون رائعًا إذا لم أكن بحاجة إليه بالفعل wc أو حتى Git، حتى يتمكن من العمل على نظام Windows المجرد.ما عليك سوى قراءة ملف أو بنية دليل ...

هل كانت مفيدة؟

المحلول

لتحصل على ارتكاب عدد لتنقيح (HEAD، master، وارتكاب التجزئة):

git rev-list --count <revision>

لتحصل على حساب الالتزام في جميع فروع:

git rev-list --all --count

وأوصي بعدم استخدام هذا لبناء المعرف، ولكن إذا كنت لا بد، هو على الأرجح الأفضل استخدام عدد لفرع كنت بناء ضده. بهذه الطريقة نفس المراجعة سوف يكون دائما نفس العدد. إذا كنت تستخدم حساب لجميع الفروع، ويمكن أن النشاط على الفروع الأخرى تغيير الرقم.

نصائح أخرى

وgit shortlog هي طريقة واحدة.

وgit rev-list HEAD --count

بوابة مراجعة القائمة

وgit rev-list <commit>: قائمة تلتزم التي يمكن الوصول إليها عن طريق اتباع الروابط الأم من إعطاء ارتكاب (في هذه الحالة، <م> الرأس ).

و--count: طباعة عدد تفيد كم يرتكب قد أدرجت، وقمع كل الإخراج الأخرى

والأمر بإرجاع هذا العدد من يرتكب مجمعة حسب مقترفوا:

git shortlog -s

وإخراج:

14 John lennon
9  Janis Joplin

وأنت قد تريد أن تعرف أن الحجة -s هو الشكل انكماش --summary.

إذا كنت تبحث عن معرف فريد ولا تزال قابلة للقراءة تماما ليرتكب، بوابة وصف قد يكون مجرد شيء بالنسبة لك.

أنت لست أول من يفكر في أ "رقم المراجعة" في جيت, ، لكن 'wc' أمر خطير للغاية، حيث يمكن مسح الالتزام أو سحقه وإعادة النظر في التاريخ.

كان "رقم المراجعة" مهمًا بشكل خاص لـ Subversion منذ ذلك الحين كانت هناك حاجة في حالة الدمج (لقد تحسن SVN1.5 و1.6 على هذه الجبهة).

قد ينتهي بك الأمر إلى ربط الالتزام المسبق والذي سيتضمن رقم مراجعة في التعليق باستخدام خوارزمية لا تنطوي يبحث عن الجميع تاريخ الفرع لتحديد العدد الصحيح.

بازار جاء في الواقع مع مثل هذه الخوارزمية , ، وقد تكون نقطة بداية جيدة لما تريد القيام به.

(مثل إجابة بومبي كما يشير، فإن Git لديه في الواقع خوارزمية خاصة به، استنادًا إلى أحدث علامة، بالإضافة إلى عدد الالتزامات، بالإضافة إلى القليل من مفتاح SHA-1).يجب أن ترى (وتصوت لصالح) إجابته إذا كانت مناسبة لك.


لتوضيح فكرة هارون, ، بامكانك ايضا قم بإلحاق تجزئة التزام Git بملف "معلومات" التطبيق الذي تقوم بتوزيعه مع طلبك.

بهذه الطريقة، سيبدو المربع "حول" كما يلي:

About box

يعد رقم الطلب جزءًا من الالتزام، ولكن يتم إنشاء "ملف "معلومات" التطبيق" أثناء عملية التعبئة، مما يؤدي بشكل فعال إلى ربط تطبيقي رقم البناء للمراجعة الفنية بطاقة تعريف.

وU يمكن استخدامها فقط:

git shortlog -s -n

والنتيجة:

 827  user one
    15  user two
     2  Gest 

لسهولة الحصول عليها إلى متغير، وأسهل طريقة هي:

export GIT_REV_COUNT=`git rev-list --all --count`

وهناك طريقة بسيطة هي:

 git log --oneline | wc -l

وoneline يضمن ذلك.

وبوابة shortlog هي طريقة واحدة للحصول على تفاصيل ارتكاب:

git shortlog -s -n

وهذا سيعطي عدد تلزم يليه اسم المؤلف. يزيل الخيار -s جميع ارتكاب رسائل لكل تلزم أن مقدم البلاغ أدلى. إزالة الخيار نفسه إذا كنت ترغب في مشاهدة الرسائل ارتكاب أيضا. تم استخدام الخيار -n لفرز القائمة بأكملها. ويساعد هذا الأمل.

وبوابة القس تحليل --short الرأس

وهناك سيناريو المساعد لطيفة التي يستخدمها الناس جيت للمساعدة في توليد رقم إصدار مفيد استنادا إلى ما جيت صفها. تبين لي السيناريو وتفسير ذلك في ردي على <وأ href = "https://stackoverflow.com/questions/514188/how-would-you-include-the-current-commit-id-in-a المشاريع -git ملفات / 514668 # 514668 "> كيف تقوم بتضمين ارتكاب معرف الحالي في ملفات مشروع بوابة ل؟ .

إذا كنت فقط باستخدام فرع واحد، مثل سيد، وأعتقد أن هذا من شأنه أن العمل العظيم:

git rev-list --full-history --all | wc -l

وهذا سيتم إخراج سوى عدد. يمكنك الاسم المستعار لشيء من هذا القبيل

git revno

ولجعل الامور مريحة حقا. للقيام بذلك، قم بتحرير ملف .git/config وإضافة هذا في:

[alias]
    revno = "!git rev-list --full-history --all | wc -l"

وهذا لن يعمل على ويندوز. أنا لا أعرف ما يعادل "مرحاض" لذلك OS، ولكن كتابة سيناريو بيثون للقيام العد بالنسبة لك سيكون حلا منصة متعددة.

وتوليد عدد أثناء الإنشاء والكتابة إلى ملف. كلما قمت بإجراء الإفراج عنهم، ارتكاب هذا الملف مع التعليق "بناء 147" (أو أيا كان عدد الإنشاء حاليا). لا يرتكبون الملف أثناء التطور الطبيعي. بهذه الطريقة، يمكنك تعيين بسهولة بين أرقام الإنشاء والإصدارات في بوابة.

في شركتنا، ونحن انتقلنا من SVN إلى الجهاز الهضمي. وكان عدم وجود أرقام المراجعة مشكلة كبيرة!

هل git svn clone، ثم علامة على SVN الماضي ارتكاب بواسطة رقم المراجعة SVN بها:

export hr=`git svn find-rev HEAD`
git tag "$hr" -f HEAD

وبعد ذلك يمكنك الحصول على رقم المراجعة بمساعدة

git describe --tags --long

وهذا الأمر يعطي شيئا مثل:

7603-3-g7f4610d

والوسائل: العلامة الأخيرة هي 7603 - انها التنقيح SVN. 3 - هو عدد من يرتكب منه. نحن بحاجة إلى إضافة لهم.

وهكذا، ورقم المراجعة يمكن الاعتماد بواسطة هذا البرنامج النصي:

expr $(git describe --tags --long | cut -d '-' -f 1) + $(git describe --tags --long | cut -d '-' -f 2)

وواحد اعتدت على استخدام و:

git log | grep "^commit" | wc -l

وبسيط لكنه يعمل.

وعن طريق تركيب باش،

$(git rev-list --count HEAD)

وتبدو على ما يرام للتاريخ الخطي بحتة. إذا كنت تريد أيضا أن يكون في بعض الأحيان "أرقام" من فروع (القائم قبالة master)، النظر فيما يلي:

$(git rev-list --count $(git merge-base master HEAD)).$(git rev-list --count ^master HEAD)

عند تشغيل من الخروج من master، تحصل ببساطة 1234.0 أو ما شابه ذلك. عند تشغيل من الخروج من فرع ستحصل على شيء مثل 1234.13، إذا كانت هناك 13 يرتكب المحرز في هذا الفرع. ومن الواضح أن هذا هو مفيد فقط بقدر ما كنت مستندة في معظم فرع واحد من مراجعة master معينة.

يمكن إضافة

و--first-parent لعدد الجزئي لقمع بعض يرتكب الناشئ فقط عن دمج الفروع الأخرى، على الرغم من أنه ربما لا داعي لها.

ويمكنك محاولة

git log --oneline | wc -l

وأو لسرد كافة يرتكب الذي قام به الشعب المساهمة في مستودع

git shortlog -s

git config --global alias.count 'rev-list --all --count'

إذا قمت بإضافة هذا إلى التكوين الخاص بك، يمكنك فقط الرجوع إلى الأمر؛

git count

واستخدام بوابة shortlog تماما مثل هذا

وgit shortlog -sn

وأو إنشاء اسم مستعار (لمحطة مقرها ZSH)

و# show contributors by commits alias gcall="git shortlog -sn"

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