سؤال

لدي مشاريعي في مستودعين.واحد تحت SVN والآخر تحت Git.عندما أقوم بتغيير شيء ما في SVN أريد أن أفعل نفس الشيء مع مستودع Git.

لنفترض أنني قمت بإجراء تغيير على مستودع SVN، مما أدى إلى إصدار المراجعة 125.كيف يمكنني تطبيق هذه التغييرات نفسها على مستودع Git الخاص بي (بافتراض أن مستودع Git الخاص بي محدث بالمراجعة 124).

شكرًا لك.

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

المحلول

وماذا فعلت فعلا / تبحث عن و:

cd /path/to/svn/repo
svn diff -r 125 > /tmp/patch.diff
cd /path/to/git/repo
patch -p0 < /tmp/patch.diff

نصائح أخرى

وجرب:

svn diff | patch -d /path/to/git/repo -p0

وانظر svn help diff إذا كنت ترغب في تصدير فرق مراجعة محددة ل.

لماذا لا أحد يحب git-svn؟لا أستطيع أن أفترض أن لا أحد يعرف عن ذلك.

هناك git-svn (و git-hg و git-cvs و git-bzr afaict).على الأقل مع git-svn يمكنك القيام بذلك ببساطة

git svn clone --stdlayout http://myrepo/root here

باستخدام -s (--stdlayout) يفترض الجذع/الفروع/العلامات/التخطيط القياسي، ولكن يمكنك الحصول عليه بأي طريقة (man git-svn).

يكون التعيين ثنائي الاتجاه، لذا يمكنك الدفع والسحب كما هو الحال مع جهاز التحكم عن بعد الأصلي (git).لم يتم طرح أي أسئلة.

إذا كنت تسير على توليد التصحيح في SVN وتطبيقه مع جيت في وقت لاحق، لا تنسى أن استخدام <لأ href = "http://svnbook.red-bean.com/en/1.8/svn.ref .svn.html # svn.ref.svn.sw.git "يختلط =" noreferrer "> --git خيار سطر الأوامر :

<اقتباس فقرة>   

و--git

     

وتمكن من وضع الإخراج خاص لفرق إس مصممة لعبر التوافق مع بوابة إدارة المراجعة الموزعة شعبية   نظام.

وعلى سبيل المثال، قم بتشغيل

وsvn diff --git -r 125 > /tmp/patch.diff

وبالإضافة إلى استخدام التصحيح على النحو المذكور أعلاه هل يمكن أن تنظر أيضا في إنشاء <لأ href = "http://svnbook.red-bean.com/en/1.4/svn.ref.reposhooks.post-commit.html" يختلط = "نوفولو noreferrer"> بعد ارتكاب هوك حتى لم يكن لديك للقيام بذلك في كل مرة كنت ارتكاب شيء جديد.

عملت أدناه بالنسبة لي.

مصدر:كيفية إنشاء التصحيح وتطبيقه باستخدام Git

أولاً، قم بإلقاء نظرة على التغييرات الموجودة في التصحيح.يمكنك القيام بذلك بسهولة باستخدام git application

git apply --stat fix_empty_poster.patch

لاحظ أن هذا الأمر لا قم بتطبيق التصحيح، ولكنه يعرض لك فقط الإحصائيات حول ما سيفعله.بعد إلقاء نظرة خاطفة على ملف التصحيح باستخدام المحرر المفضل لديك، يمكنك معرفة التغييرات الفعلية.

بعد ذلك، أنت مهتم بمدى إزعاج التصحيح.يتيح لك Git اختبار التصحيح قبل تطبيقه فعليًا.

git apply --check fix_empty_poster.patch

إذا لم تحصل على أي أخطاء، فيمكن تطبيق التصحيح بشكل نظيف 😀.وإلا فقد ترى المشكلة التي ستواجهها.

لتطبيق التصحيح، سأستخدم git am بدلاً من git application.والسبب في ذلك هو أن git am يتيح لك تسجيل الخروج من التصحيح المطبق.وقد يكون هذا مفيدًا للرجوع إليه لاحقًا.

git am --signoff < fix_empty_poster.patch

Applying: Added specs to test empty poster URL behaviour
Applying: Added poster URL as part of cli output

حسنًا، تم تطبيق التصحيحات بشكل نظيف وتم تحديث فرعك الرئيسي.بالطبع، قم بإجراء اختباراتك مرة أخرى للتأكد من عدم كسر أي شيء.

في سجل git الخاص بك، ستجد أن رسائل الالتزام تحتوي على علامة "Signed-off-by".ستتم قراءة هذه العلامة بواسطة Github وآخرين لتقديم معلومات مفيدة حول كيفية انتهاء الالتزام في الكود.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top