الحصول على رقم مستودع التخريب في التعليمات البرمجية

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

سؤال

أرغب في تنفيذ طريقة لتسجيل إصدار المشروع ضمن التعليمات البرمجية، بحيث يمكن استخدامه عند الاختبار وللمساعدة في تتبع الأخطاء.يبدو أن أفضل رقم إصدار يمكن استخدامه هو رقم المراجعة الحالي من 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"
...

الآن:

  1. sed يستبدل RevNumber في .dox مع إخراج svnversion (يتم تنفيذه في المجلد الرئيسي لمستودعك) ويحفظ الملف المعدل فيه YourFileDummy.dox
  2. doxygen يتم تنفيذه على YourFileDummy.dox لتوليد الوثائق
  3. ستحتوي وثائقك الآن على رقم المراجعة!
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top