أساسيات استخدام الوسوم (Tags) في Git


محمد أحمد العيل

يتيح Git مثل الكثير من أنظمة إدارة النسخ VCS، إمكانية تعليم مواضع معينة خلال مرحلة التطوير على أنها مهمة باستخدام وسوم Tags.

git-tags.png

يستخدم المطورون كثيرا هذه الميزة لتحديد مواضع إطلاق الإصدارات (الإصدار 1.0؛ 1.1 وهكذا). سنرى في هذا المقال كيفية عرض الوسوم المستخدمة في المستودع، كيفية إنشاء وسوم جديدة وما هي أنواع الوسوم.

عرض الوسوم

يعرض الأمر التالي قائمة بالوسوم الموجودة في المستودع:

git tag

النتيجة:

v0.1
v1.3

يعرض الأمر أعلاه الوسوم حسب الترتيب الأبجدي.

يمكن أيضا البحث عن الوسوم التي تتبع نمطا معيّنا. يحوي مستودع الشفرة المصدرية لـGit على سبيل المثال أكثر من 500 وسم؛ إن كنت ترغب في إظهار الوسوم التي تتعلق بالإصدار 1.8.5 فقط دون غيره فالأمر التالي يؤدي المهمة:

git tag -l "v1.8.5*"

مثال على النتيجة:

v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2
v1.8.5-rc3
v1.8.5.1
v1.8.5.2
v1.8.5.3
v1.8.5.4
v1.8.5.5

إنشاء الوسوم

يستخدم Git نوعين من الوسوم: الخفيفة Lightweight والمشروحة Annotated.

يشبه الوسم الخفيف فرعا لا تدخل عليه تغييرات، إذ أنه ليس إلا مؤشر على إيداع محدّد.

الوسوم المشروحة على العكس من ذلك تخزّن بوصفها كائنات داخل قاعدة بيانات Git ويُنشأ لها مجموع تحقق، تحتوي على اسم من أضاف الوسم، بريده الإلكتروني والتاريخ. كما أن لديها رسالة وسم، ويمكن أن توثَّق ويُتحقَّق منها بواسطة GnuPG (برنامج تعمية تابع لمشروع GNU). يُنصَح باستخدام الوسوم المشروحة من أجل الحصول على كل هذه المعلومات، لكن إن كنت تريد وسما ظرفيا أو لا تريد لسبب ما حفظ البيانات المذكورة آنفا فإن الوسوم الخفيفة متاحة لهذا الغرض.

الوسوم المشروحة

كل ما عليك فعله لإنشاء وسم مشروح هو إضافة خيار a- إلى أمر git tag على النحو التالي:

git tag -a v1.4 -m "my version 1.4"
git tag
v0.1
v1.3
v1.4

يحدّد الخيار m- رسالة الوسم التي تخزَّن معه. إن لم تحدّد رسالة فسيظهر محرّر بعد تنفيذ الأمر لإضافتها.

يمكن عرض الوسم مع الإيداع الموسوم به باستخدام الأمر git show:

git show v1.4
tag v1.4
Tagger: Ben Straub <ben@straub.cc>
Date:   Sat May 3 20:19:12 2014 -0700

my version 1.4

commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700

    changed the version number

يعرض الأمر بيانات الواسِم (صاحب الوسم)، تاريخ وسم الإيداع ورسالة الوسم قبل أن يظهر بيانات الإيداع.

الوسوم الخفيفة

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

استخدم أمر git tag دون ذكر خيار لإنشاء وسم خفيف:

git tag v1.4-lw
git tag
v0.1
v1.3
v1.4
v1.4-lw
v1.5

إن نفذت أمر git show على الوسم الخفيف فلن تظهر سوى بيانات الإيداع:

git show v1.4-lw
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700

    changed the version number

الوسم المتأخر

يوفّر Git إمكانية وسم الإيداعات حتى بعد أن تكون تجاوزتها. فلنفترض أن سجلّ الإيداعات لديك يبدو كالتالي:

git log --pretty=oneline

15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment'
a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support
0d52aaab4479697da7686c15f77a3d64d9165190 one more thing
6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch 'experiment'
0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc added a commit function
4682c3261057305bdd616e23b64b0857d832627b added a todo file
166ae0c4d3f420721acbb115cc33848dfcc2121a started write support
9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile
964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo
8a5cbc430f1a9c3d00faaeffd07798508422908a updated readme

نفترض الآن أنك نسيت إضافة الوسم v1.2 على الإيداع ذي الرسالة updated rakefile. لا زال بإمكانك وسم الإيداع؛ لوسم هذا الإيداع حدّد مجموع التحقق منه (أو جزءًا من مجموع التحقق) في نهاية الأمر كالتالي:

git tag -a v1.2 9fceb02

يمكنك التحقق من وسم الإيداع:

git tag
v0.1
v1.2
v1.3
v1.4
v1.4-lw
v1.5

git show v1.2
tag v1.2
Tagger: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Feb 9 15:32:16 2009 -0800

version 1.2
commit 9fceb02d0ae598e95dc970b74767f19372d61af8
Author: Magnus Chacon <mchacon@gee-mail.com>
Date:   Sun Apr 27 20:43:35 2008 -0700

    updated rakefile
...

مشاركة الوسوم

لا ينقُل أمر git push مبدئيا الوسوم إلى الخواديم البعيدة. ستحتاج للتصريح بأنك تريد نقل الوسوم التي أنشأتها:

git push origin v1.5
Counting objects: 14, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (12/12), done.
Writing objects: 100% (14/14), 2.05 KiB | 0 bytes/s, done.
Total 14 (delta 3), reused 0 (delta 0)
To git@github.com:schacon/simplegit.git
* [new tag]         v1.5 -> v1.5

إن كانت لديك الكثير من الوسوم وتريد دفعها معا فخيار tags-- بدلا من اسم الوسم يؤدي المهمة:

git push origin --tags
Counting objects: 1, done.
Writing objects: 100% (1/1), 160 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@github.com:schacon/simplegit.git
* [new tag]         v1.4 -> v1.4
* [new tag]         v1.4-lw -> v1.4-lw

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

نقل ملفات وسم إلى مجلد العمل

إن كنت تريد وضع إصدار يستخدم وسما من المستودع في مجلد العمل فيمكنك إنشاء فرع جديد انطلاقا من الوسم باستخدام أمر git checkout كما يلي:

git checkout -b version2 v2.0.0
Switched to a new branch 'version2'

تحدّد الوسوم، على عكس الفروع، نقطة زمنية ثابتة من المستودع. من هذا المنطلق لا يتطور الوسم بتغير ملفاته لذا ينبغي الانتباه إلى أن الفرع version2 لن يكون موافقا للوسم v2.0.0 بعد إضافة إيداع إليه؛ إذ أن الفرع تقدم إلى الأمام بالتعديلات الجديدة التي أضافها الإيداع.

ترجمة -وبتصرّف- للفصل Git Basics - Tagging من كتاب Pro Git لصاحبه Scott Chacon.





تفاعل الأعضاء


لا توجد أيّة تعليقات بعد



يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن