كيفية تطبيق فرق SVN على Git؟
-
20-08-2019 - |
سؤال
لدي مشاريعي في مستودعين.واحد تحت 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 وآخرين لتقديم معلومات مفيدة حول كيفية انتهاء الالتزام في الكود.