الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

خطواتك الأولى لإستخدام SVN

بدأه C++er في 28 يونيو 2010 · 8 رد · 7,760 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

1) ماهو SVN ؟

الكلمه هى اختصار لـ Subversion و هى نظام يتيح لأكثر من مبرمج مشاركة الملفات بينهم و امكانية وجود اكثر من اصدار لملف واحد و امكانية استرجاع اى نسخه فى اى وقت.

2) فيما يمكن أن يفيدنى؟

إذا كنت أحد الأشخاص التالى ذكرهم فهو بالفعل ذات فائده جمه لك

  • تقوم بأخذ نسخ من مشاريعك قبل اجراء تعديلات عليها تحسبا أنك تريد الرجوع لنسخه سابقه
  • اكثر من شخص معك يعملوا على نفس المشروع و تريد معرفة من أجرى تعديلات معينه على ملف معين و فى اى وقت
  • تريد الغاء تعديلات قام بها شخص ما عىل ملف ما.
  • تريد منع تغيير ملف معينو كل ما تفعله هو جعل الملف read-only :blink:
  • تعطى صلاحيات الدخول على مشروع بإنشاء مستخدمين على نظام التشغيل بالصلاحيات التى تريدها :wacko:
  • تعانى من استخدام microsoft source safe

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

3) من أين استطيع على الأدوات اللازمه كي ابدء فى استخدام SVN؟

  • الموقع الرسمى لـ SVN يمكنك من خلاله تحميل السورس كود و ادوات اخرى.
  • TortoiseSVN: من أفضل الـ Clients التى تعمل على نظام ويندوز و الذى يندمج بشكل ممتاز مع Windows Explorer مجانى
  • SmartSVN: من أقوى البرامج التى تستخدم فى التعامل مع SVN، البرنامج مصنوع بلغة الجافا و يعمل على العديد من انظمة التشغيل. غير مجانى
  • VisualSVN: هذا البرنامج هو plugin لمحرر Visual Studio حيث يستخدم TortoiseSVN ليقوم العمليات التى يريدها غير مجانى
  • AnkhSvn: هو plugin لمحرر Visual Studio ليعطى دعم SVN بشكل Native دون الحاجه لأى أدوات خارجيه مجانى

سأعتبر هنا انك تعمل على نظام تشغيل ويندوز و تستخدم محرر فيجوال ستديو لذا التطبيق التالى سيكون بإستخدام TortoiseSVN و AnkhSvn

4) هل توجد مصطلاحات احتاج لمعرفتها حتى استطيع التعامل مع SVN؟

نعم توجد العديد من المصطلحات التى تحتاج أن تكون على درايه بها و لكن الأن سأعطيك ما نحتاج منهم:

  • Repository : و يطلق عليها اختصارا الإسم repo و هى قاعدة البيانات التى ستحتوى فيما بعد على مشاريعك، يمكن للـ repo الواحده ان تحتوى على مشروع فأكثر.
  • Checkout : إذا قمت بالإنضمام لمشروع موجود ستحتاج للحصول على كامل المشروع لديك حتى تستطيع ان تكمل التطوير، قم بإستخدام هذا الأمر للحصول على نسخه من شجرة المشروع بأكمله لديك على جهازك.
  • Import : اذا كنت قد انشئت المشروع و عملت عليه لفتره و اردت وضعه داخل repo لديك فأستخدم هذا الأمر لوضع مشروعك داخل الـ repo. أستخدم هذا الأمر مره واحده فقط أو إذا كنت تعلم ماذا تفعل.
  • Add : يقوم هذا الأمر بإضافة ملف او مجلد داخل repo
  • Delete : يقوم هذا الأمر بحذف ملف او مجلد من repo
  • Commit: بعد أن تجرى تعديلات على ملف (ملفات) موجود بالـ repo تقوم بتنفيذ هذا الأمر عليهم لحفظ التعديلات داخل الـ repo، عملية حفظ التعديلات تقوم بإنشاء نسخة جديده من هذه الملفات بالبيانات الجديده و تعطى لها رقم، هذا الرقم يسمى revision number
  • Update: إذا قام أحد المبرمجين معك فى نفس المشروع بعمل Commit لبعض الملفات ستحتاج لتنفيذ هذا الأمر للحصول على أخر التعديلات التى تمت على الـ repo

5) كيف انشئ repo على جهازى حتى استطيع التجربه؟

post-135620-018207600 1277745173_thumb.p

بإفتراض انك قمت بتحميل TortoiseSVN و قمت بتثبيته لديك قم بالدخول على الـ C و قم بإنشاء مجلد و اطلق عليه svn_db (بالطبع هذا مثال فيمكنك إنشاء المجلد بأى اسم تريد و فى أى مكان تشاء) بعد ذلك قم بفتح المجلد و من داخل اضغط Right Click ثم حدد TortoiseSVN و من القائمه التى ستظهر لك اختر Create repository here، بعدها سيتم انشاء بعض المجلدات و ستظهر رسالة لك تفيد بأنه تم إنشاء الـ repo بنجاح.

6) كيف اقوم بإضافة مشروع موجود من قبل (حتى و إن كان فارغ) داخل الـ repo الذى انشئته للتو؟

قبل أن اعلمك كيف سنحتاج للتكلم بشكل مختصر عن البروتوكولات التى يتعامل معها SVN.

7) بروتوكولات التعامل مع SVN؟

توجد العديد من البروتوكولات التى يتعامل معها SVN أذكر منها:

  • file : و يستخدم للتعامل مع repo موجود على الجهاز الحالى او موجود على الشبكه المحليه، الصيغه العامه له هى:
    file://[/repo path]


    و فى حالتنا هذه سنستخدمه كالتالى:

    file:///c:/svn_db


    فى الأغلب هذا البروتوكول يستخدم من خلال مستخدم واحد فقط و لا يفضل استخدامه من خلال اكثر من مستخدم على نفس المشروع.

  • svn : هذا البروتوكول وجد خصيصا للتعامل مع SVN و هو يستخدم TCP/IP لإرسال و استقبال البيانات و يمكن استخدام SSH (و ذلك عن طريق svn+ssh)، يمكنك الحصول علي هذا البروتوكول بتثبيت برنامج svnserve و يمكنك القول انه بديل للبروتوكول file حيث يمكنك استخدام هذا البروتوكول للوصول على repo على جهازك او الشبكه المحليه او حتى الشبكه الدوليه او شبكه كانت من خلال مستخدم واحد او اكثر من مستخدم، اسلوب استخدامه كالتالى:
    svn://[url path]


    إذا افترضنا انك تريد الوصول للـ repo الذى انشأناه منذ قليل بإستخدام هذا البروتوكول فالصيغه ستكون كالتالى - على افتراض ان جهازك اسمه mypc.

    svn://mypc/svn_db


    هذا البروتوكول بشكل افتراضى يستخدم البورت 3690

  • http : يمكنك الإتصال بالـ repo إذا كان على سرفر بعيد بإستخدام البروتوكول http او http+ssh و تتم إعدادات الـ repo حينها على السرفر او إذا اتاح لك السرفر Remote Shell لتقوم بما تريد - هذه متاحه من خلال سرفر SourceForge.Net من خلال Interactive Shell خاصتهم، للإتصال بمشروع من خلال هذا البروتوكول كالتالى:
    http://[url path]
    https://[url path]


8) لنعود لكيفية إضافة مشروع موجود داخل الـ repo الذى قمنا بعمله؟

إذهب للمشروع الذى تريد إضافته للـ repo و اضغط Right Click عليه ثم اختر TortoiseSVN و من القائمه التى ستظهر اختر Import.

من الشاشه التى ستظهر لك اكتب المسار التالى:

file///c:/my_proj

بعدها قم بعمل commit و add و delete كما يحلو لك.

9) هل يوجد شئ اخر بحاجه أن اعرفه؟

حقيقة نعم، و لكن التالى هو اختيارى: نظام الـ SVN له اسلوب فى التعامل مع المشاريع و هو أن كل repo لابد و أن يحتوى على 3 مجلدات و هم كالتالى:

  • trunk : يحتوى هذا المجلد على مشروعاتك التى تقوم بالعمل عليها بشكل مستمر انت و باقى الفريق إن وجد.
  • branch : اثناء العمل على المشروع الموجود فى trunk تأتى لك افكار معينه خاصه بالمشروع و لكنها بعيده عن خط عمل المشروع الحالى لذا تقوم بأخذ نسخه من هذا المشروع و تضع به كل الأفكار و عندما يبدأ هذا المشروع فى أخذ منحنى بعيد عن البرنامج الأصلى يتم عمل له مشروع جديد تماما داخل الـ trunk.
  • tag : يحتوى على معلومات هامه خاصه بالـ revisions الموجوده بـ trunk مثل الـ revision رقم 1024 هو الإصدار 1.2 و هكذا.

سأتوقف هنا الأن حتى ألتقط انفاسى و سأكمل في هذا الموضوع لاحقا.

و الله ولى التوفيق

المرفقات
ContextMenuDirNoControl.png

تم تعديل هذه المشاركة بواسطة محمد علاء الدين في 28 يونيو 2010 في 21:46

15

مدونتي: C++ Tips and Tricks

#2

موضوع رائع... شرح مفصل.... اعرفه من مدة بس مكنتش فاهموا و اشكرك على انك فهمتهولى :)

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#3

شرح رائع.....................ويظهر الموضوع عجيب انا لسة سامع عن الموضوع ده من واحد صاحبي النهاردة ...سبحان الله...

--

Mina Fouad

Computer & Systems Engineering Dpt.

Faculty of Engineering

Alexandria University

#4

لمستخدمي اللينيكس اليكم Subversion

--

Mina Fouad

Computer & Systems Engineering Dpt.

Faculty of Engineering

Alexandria University

#5

عذرا على رفعي للموضوع و لكن اريد ان اعرف كيفيه التعامل مع المشروع بعد اضافته الي قائمه المشروعات و رفعه الي موقع استضافه المشروعات مثل جوجل كود

#6

شرح رائع بارك الله فيك اخي وجزاك الله كل خير واصل عطائك

بتوفيق يا غالي

#7

بارك الله فيكم الإخوة الكرام

#8

توجد دالة اسمها svm تستخدم للنص العربي

−1
#9

جزاك الله خييييييييييييييييييييير.................

مواضيع مشابهة