سؤال

لا يمكنني معرفة كيفية وضع معرف مراجعة الزئبق في بناء Maven الخاص بي (من الناحية المثالية ، أود ذلك في ظهور الجرار والحرب).

أقرب حل يمكن أن أجده هو:

mvn -DbuildNumber=`hg id -i`

الذي لن يعمل حقًا مع Windows أو خادم Hudson الخاص بي. لحسن الحظ ، يقوم Hudson بتصميماتي ، لكنني أرغب في مزيد من التأكيد إذا تم وضع علامة على التصميم أيضًا بمعرف Changset الزئبقي.

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

المحلول

القي نظرة على هذا السؤال السابق والرابط من الإجابة المقبولة. في الأساس ، تريد أن تفعل الشيء نفسه إلا أنك ستحتاج إلى استخدام buildnumber:hgchangeset الهدف مع الزئبق للحصول على ملف changeset خاصية مع محتوى hg id -i.

نصائح أخرى

للأسف، hg id -i طويل جدا للاستخدام. لقد قمت بإنشاء برنامج نصي يحسب رقم بناء دقيق. ومع ذلك ، هناك استثناءان. إذا لم يكن هناك إصدار سابق على الفرع ، فلا يمكن أن يكون صالحًا. إذا كانت هناك تغييرات في الريبو المحلي ، فلا يمكن أن تكون صالحة. في برنامج Build Script الخاص بي ، حددت البناء على أنه "XXUNSTable" كلما حدث ذلك.

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

#!/bin/bash
REL_PATTERN="release-[0-9]*\.[0-9]*\.[0-9]*"
BRANCH=$( hg branch )
CURR_REV=$( hg id -n )
if [  "${CURR_REV: -1}" = "+" ] ; then
  echo "ERROR: This workspace contains uncommitted code. Cannot calculate build number" >&2
  echo "UNSTABLE"
  exit 1
fi
RELEASE=$( hg log --rev="branch($BRANCH) and tag() and 1:$CURR_REV" -T "{tags} {rev}\n"|grep "${REL_PATTERN} "|tail -1 )
if [ "$RELEASE" = "" ] ; then
  echo "ERROR: Unable to locate version tag" >&2
  echo "UNSTABLE"
  exit 1
fi
RELEASE_REV=$( echo $RELEASE|cut -f 2 -d ' ' )
RELEASE_TAG=$( echo $RELEASE|cut -f 1 -d ' ' )
REVS=$( hg log -P $RELEASE_REV -b $BRANCH -T "{rev}\n"|wc -l )
BUILD=$( hg log -r1:$CURR_REV -P $RELEASE_REV -b $BRANCH -T "{rev}\n"|wc -l )
echo "BRANCH=$BRANCH" >&2
echo "CURR_REV=$CURR_REV" >&2
echo "RELEASE_REV=$RELEASE_REV" >&2
echo "RELEASE_TAG=$RELEASE_TAG" >&2
echo "BUILD=$BUILD" >&2
echo $BUILD
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top