بناء التسلسل عند استخدام التحكم في الإصدار توزيعها

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

  •  02-07-2019
  •  | 
  •  

سؤال

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

أود أن التحول إلى استخدام نظام توزيع (ربما git) لتسهيل فرع للعمل من المنزل.(وكلاهما من الممكن تماما مع قهرا, ولكن العمل بوابة لديه بعض المزايا.) حتى على الرغم من أن "روافد التنمية" ستوزع وليس الرجوع إلى مراجعة التسلسل كنا لا تزال تحافظ على درجة الماجستير بوابة الريبو أن جميع التغييرات سوف تحتاج إلى تغذية قبل بناء تم إنشاؤه.

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

هذا هو عملي, ولكن أنا أتساءل عما اذا كان هناك أسهل أو بالفعل تنفيذها ، أو معيار/"أفضل الممارسات" طريقة لإنجاز هذا.

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

المحلول

أنا أؤيد اقتراح باستخدام git describe.شريطة أن يكون لديك عاقل الإصدارات السياسة و أنت لا تفعل أي الأشياء المجنونة مع مستودع ، git describe سوف تكون دائما رتيب (على الأقل كما رتيب كما يمكنك أن تكون عند مراجعة التاريخ هو مجموعة جدول أعمال التنمية بدلا من شجرة) و فريدة من نوعها.

القليل من المظاهرة:

git init
git commit --allow-empty -m'Commit One.'
git tag -a -m'Tag One.' 1.2.3
git describe    # => 1.2.3
git commit --allow-empty -m'Commit Two.'
git describe    # => 1.2.3-1-gaac161d
git commit --allow-empty -m'Commit Three.'
git describe    # => 1.2.3-2-g462715d
git tag -a -m'Tag Two.' 2.0.0
git describe    # => 2.0.0

إخراج git describe يتكون من العناصر التالية:

  1. أحدث الوسم يمكن الوصول إليها من ارتكاب كنت طالبا في وصف
  2. عدد من يرتكب بين ارتكاب العلامة (إذا كان غير الصفر)
  3. في (مختصر) معرف ارتكاب (إذا #2 غير الصفر)

#2 هو ما يجعل الناتج رتيب, #3 هو ما يجعلها فريدة من نوعها.#2 و #3 يتم حذف عند ارتكاب هو علامة, صنع git describe أيضا مناسبة لإنتاج الإصدارات.

نصائح أخرى

مفردة النغمة زيادة عدد المقابلة الحالي ارتكاب يمكن أن تكون ولدت مع

git log --pretty=oneline | wc -l

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

هذا النهج هو أفضل من git describe, لأنها لا تحتاج إلى إضافة أي فئة ، وأنه يعالج تلقائيا يدمج.

قد يكون لديك مشاكل مع اتخاذ ولكن اتخاذ هو "خطير" العملية على أي حال.

    git rev-list BRANCHNAME --count

هذا هو أقل بكثير من الموارد مكثفة من

    git log --pretty=oneline | wc -l

git tag قد يكون كافيا للحصول على ما تحتاجه.اختيار الوسم شكل أن الجميع سوف توافق على عدم استخدام خلاف ذلك.

ملاحظة:عندما الوسم محليا ، git push سوف يتم تحديث العلامات على الملقم.استخدام git push --tags من أجل ذلك.

يجب التحقيق git describe.أنه يعطي سلسلة فريدة من نوعها التي توضح فرع الحالية (أو أي مرت ارتكاب id) حيث أحدث المشروح الوسم عدد من يرتكب منذ أن العلامة مختصر ارتكاب معرف من رئيس الفرع.

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

على افتراض أن كنت لم الترجيع الفرع عدد من التالية يرتكب دائما تحديد نقطة فريدة في فرع التاريخ.

على سبيل المثال(باستخدام باش أو ما شابه)

# make an annotated tag to an early build in the repository:
git tag -a build-origin "$some_old_commitid"

# describe the current HEAD against this tag and pull out a build number
expr "$(git describe --match build-origin)" : 'build-origin-\([0-9]*\)-g'

أود أن استخدام "التسميات" إنشاء تسمية كلما كان لديك ناجح (أو حتى غير ناجحة) بناء, وعليك أن تكون قادرا على تحديد ذلك بناء الأبد.انها ليست تماما نفس ، ولكنها توفر تلك بناء الأرقام, في حين لا يزال توفير فوائد توزيع التنمية.

كما تعلمون, بوابة يحسب تجزئة (عدد) الذي يعرف بشكل فريد عقدة التاريخ.باستخدام هذه ، على الرغم من أنها ليست بدقة زيادة, ويبدو أنها ستكون جيدة بما فيه الكفاية.(حتى ، دائما تتوافق مع المصدر, حتى إذا كان لديك تجزئة لديك نفس القانون.) إنهم أرقام كبيرة, ولكن في الغالب يمكن أن تحصل من قبل مع 6 أو نحو ذلك من أبرز أرقام.

على سبيل المثال ،

أن علة ثابتة في 064f2ea...

مع الزئبقي يمكنك استخدام الأمر التالي :

# get the parents id, the local revision number and the tags
[yjost@myhost:~/my-repo]$ hg id -nibt
03b6399bc32b+ 23716+ default tip

انظر hg تحديد

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