الحصول على رقم مستودع التخريب في التعليمات البرمجية
سؤال
أرغب في تنفيذ طريقة لتسجيل إصدار المشروع ضمن التعليمات البرمجية، بحيث يمكن استخدامه عند الاختبار وللمساعدة في تتبع الأخطاء.يبدو أن أفضل رقم إصدار يمكن استخدامه هو رقم المراجعة الحالي من Subversion.هل هناك طريقة سهلة لربط هذا الرقم بملف رأس (C++ في حالتي) أو شيء من هذا القبيل، والذي يمكنني بعد ذلك الحصول عليه في الكود؟أعتقد أن هذا هو ربط ارتكاب ما بعد أو شيء من هذا؟
هل لدى أي شخص أي خبرة في تنفيذ هذا (مع رمز لمشاركته، من فضلك؟) أو يمكنه اقتراح بديل أفضل؟شكرًا.
المحلول
على الرغم من كونها أنيقة، إلا أن خدعة الكلمات الرئيسية للمراجعة تقوم فقط بتحديث الملف عندما يتم تغييره في تلك المراجعة - إذا لم تقم بتغيير الملف، فسوف يستمر في عكس المراجعة القديمة.
إذا كنت تريد أن يعكس البرنامج دائمًا رقم المراجعة الإجمالي، فسيتعين عليك التعمق في ذلك ملف إدخالات SVN ذي الصلة واستخرجه، وهو أمر ليس بالصعب للغاية (إنه ملف XML).
ويكيبيديا تفعل هذا صفحة الإصدار الخاصة بهم للإشارة إلى مراجعة البرنامج الذي يتم تشغيله مباشرة؛ الرمز هنا - بحث عن getSvnRevision() طريقة.
نصائح أخرى
بطريقتين:
تضمين $المعرف$ أو $المراجعة$ داخل الكود.ثم اضبط svn:keywords = "مراجعة الهوية" الملكية على الملف.سيعطيك هذا آخر مراجعة معدلة لهذا الملف المصدر.جيد للمشاريع والبرامج النصية الصغيرة.
وبدلاً من ذلك، استخدم عملية تعتمد على Makefile وأداة سطر الأوامر svnversion.(لغة محددة - يجب أن يعمل هذا مع C/C++)
echo -n "#define VERSION 1.0.1-" > version.h
svnversion -n . >> version.h
أو بعض البرامج النصية الأكثر تعقيدًا مع sed وversion.h.in.ثم فقط #تشمل الإصدار.ح
سيعطيك ذلك رقم إصدار المستودع، والذي سيتغير مع كل التزام/تحديث، وربما يكون رقم إصدار أكثر ملاءمة لمعظم المشاريع.
ملحوظة:لقد استخدمت أيضًا سلسلة إصدار يمكن قراءتها بواسطة الإنسان والتي أقوم بتحديثها يدويًا.المثال سيعطي: إصدار:1.0.1-r13445
~ج
يمكنك أيضًا استخدام SubWCRev الذي يعد جزءًا من TortoiseSVN.
SubWCRev هو برنامج وحدة تحكم Windows والذي يمكن استخدامه لقراءة حالة نسخة عمل Subversion وإجراء استبدال الكلمات الرئيسية بشكل اختياري في ملف قالب.يُستخدم هذا غالبًا كجزء من عملية الإنشاء كوسيلة لدمج معلومات نسخة العمل في الكائن الذي تقوم ببنائه.عادةً ما يمكن استخدامه لتضمين رقم المراجعة في مربع "حول".
http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-subwcrev.html
في ملف Makefile الخاص بك، أضف:
SVNDEV := -D'SVN_REV="$(shell svnversion -n .)"'
CFLAGS := $(SVNDEV) ...
ثم يمكنك استخدام الماكرو SVN_REV
في أي مكان في التعليمات البرمجية الخاصة بك، على سبيل المثال:
printf ("Version: SVN %s\n", SVN_REV);
يمكنك استخدام ال svn:keywords
خاصية لتمكين Rev
الكلمة الرئيسية.
يمكنك بعد ذلك استخدام $Rev$
في التعليمات البرمجية الخاصة بك وسوف يقوم SVN بتوسيعها تلقائيًا عند التحديث إلى $Rev: 256 $
والتي يمكن بعد ذلك تحليل ...
حل جيد وحديث:
إنشاء Makefile
يحتوي على السطر التالي (في نفس المجلد مثل YourFile.dox
):
sed "s~RevNumber~$(shell svnversion ../)~g" YourFile.dox > YourFileDummy.dox; doxygen YourFileDummy.dox
و YourFile.dox
يجب أن تحتوي على هذا:
...
PROJECT_NUMBER = "Revision RevNumber"
...
الآن:
sed
يستبدلRevNumber
في .dox مع إخراجsvnversion
(يتم تنفيذه في المجلد الرئيسي لمستودعك) ويحفظ الملف المعدل فيهYourFileDummy.dox
doxygen
يتم تنفيذه علىYourFileDummy.dox
لتوليد الوثائق- ستحتوي وثائقك الآن على رقم المراجعة!