سؤال

كيف أقوم بإنشاء فرع في SVN؟

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

المحلول

يتم تسهيل التفرع في Subversion من خلال وسيلة نسخ خفيفة جدًا وفعالة.

التفريع ووضع العلامات متماثلان فعليًا.ما عليك سوى نسخ مجلد كامل في المستودع إلى مكان آخر في المستودع باستخدام ملف svn copy يأمر.

هذا يعني في الأساس أن ما يعنيه نسخ المجلد هو ما يعنيه التقليد - سواء كان نسخة احتياطية أو علامة أو فرعًا أو أي شيء آخر.اعتمادًا على الطريقة التي تريد بها التفكير في الأشياء (عادةً اعتمادًا على أداة SCM التي استخدمتها في الماضي)، تحتاج إلى إعداد بنية مجلد داخل المستودع الخاص بك لدعم أسلوبك.

تتمثل الأنماط الشائعة في وجود مجموعة من المجلدات في الجزء العلوي من مستودعك تسمى tags, branches, trunk, ، إلخ.- الذي يسمح لك بنسخ ما لديك بالكامل trunk (أو مجموعات فرعية) في tags و/أو branches المجلدات.إذا كان لديك أكثر من مشروع واحد، فقد ترغب في تكرار هذا النوع من البنية ضمن كل مشروع:

قد يستغرق الأمر بعض الوقت للتعود على هذا المفهوم - ولكنه يعمل - فقط تأكد من أنك (وفريقك) على دراية بالاتفاقيات التي ستستخدمها.إنها أيضًا فكرة جيدة أن يكون لديك اصطلاح تسمية جيد - شيء يخبرك عن سبب إنشاء الفرع/العلامة وما إذا كان لا يزال مناسبًا - فكر في طرق أرشفة الفروع التي عفا عليها الزمن.

نصائح أخرى

قم بإنشاء فرع جديد باستخدام svn copy الأمر على النحو التالي:

$ svn copy svn+ssh://host.example.com/repos/project/trunk \
           svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH \
      -m "Creating a branch of project"

إذا كان الريبو الخاص بك متاحًا عبر https، فيمكنك استخدام هذا الأمر للتفرع ...

svn copy https://host.example.com/repos/project/trunk \
       https://host.example.com/repos/project/branches/branch-name \
  -m "Creating a branch of project"
svn cp /trunk/ /branch/NEW_Branch

إذا كان لديك بعض التغييرات المحلية في صندوق السيارة، فاستخدمها Rsync لمزامنة التغييرات

rsync -r -v -p --exclude ".svn" /trunk/ /branch/NEW_Branch

عادةً ما تقوم بنسخه إلى svn+ssh://host.example.com/repos/project/branches/mybranch بحيث يمكنك الاحتفاظ بعدة فروع في المستودع، ولكن بناء الجملة الخاص بك صالح.

وإليك بعض النصائح حول كيفية إعداد تخطيط المستودع الخاص بك.

لنفترض أنك تريد إنشاء فرع من اسم جذع (كـ "اختبار") ثم استخدمه:

svn cp -m "CREATE BRANCH TEST" $svn_url/trunk $svn_url/branches/TEST

إذا كنت تخطط لدمج فرعك، أقترح بشدة أن تنظر إلى هذا:

Svnmerge.py

سمعت أن Subversion 1.5 يبني المزيد من تتبع الدمج، وليس لدي خبرة في ذلك.مشروعي موجود على 1.4.x وsvnmerge.py هو منقذ للحياة!

أهم نصيحة لمستخدمي SVN الجدد؛قد يساعد هذا قليلاً في الحصول على عناوين URL الصحيحة بسرعة.

يجري svn info لعرض معلومات مفيدة حول الفرع المسحوب الحالي.

يجب أن يمنحك عنوان URL (إذا قمت بتشغيل svn في المجلد الجذر) عنوان URL الذي تريد النسخ منه.

للتبديل أيضًا إلى الفرع المنشأ حديثًا، استخدم svn switch يأمر:

svn switch http://my.repo.url/myrepo/branches/newBranchName
  • قم بإنشاء مجلد جديد خارج مشروعك الحالي.يمكنك أن تعطيه أي اسم.(مثال:لديك الخروج لمشروع يسمى "التخصيص".ولها العديد من المشاريع، مثل "Project1"، "Project2".... وتريد إنشاء فرع من "Project1".لذا افتح "التخصيص" أولاً، ثم انقر بزر الماوس الأيمن وأنشئ مجلدًا جديدًا وأطلق عليه اسم "Project1Branch").
  • انقر بزر الماوس الأيمن على "Myproject1"....TortoiseSVN -> الفرع/العلامة.
  • اختر نسخة العمل.
  • افتح المتصفح....فقط على يمين التوازي على "إلى URL".
  • حدد التخصيص....انقر بزر الماوس الأيمن ثم أضف مجلدًا.وانتقل إلى المجلد الذي قمت بإنشائه.هنا هو "Project1Branch".الآن انقر فوق الزر "موافق" للإضافة.
  • خذ الخروج من هذه المجموعة الجديدة.
  • انتقل مرة أخرى إلى مشروعك، أي الفرع الذي تريد إنشاءه.انقر بزر الماوس الأيمن فوق TorotoiseSVN -> الفرع/العلامة.ثم حدد نسخة العمل.ويمكنك إعطاء عنوان URL كاسم فرعك.مثل {عنوان IP الخاص بك/svn/AAAA/Customization/Project1Branch}.ويمكنك ضبط الاسم في عنوان URL بحيث يقوم بإنشاء المجلد بهذا الاسم فقط.مثل {عنوان IP الخاص بك/svn/AAAA/Customization/Project1Branch/MyProject1Branch}.
  • اضغط على زر موافق.يمكنك الآن رؤية السجلات... وسيتم تخزين نسخة العمل الخاصة بك في فرعك.
  • الآن يمكنك تسجيل المغادرة... وتتيح لك الاستمتاع بعملك.:)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top