ترحيل المشروع من RCS إلى بوابة؟
سؤال
انا املك مشروع عمره 20 عاما أنني أرغب في الترحيل من RCS إلى git، دون فقدان السجل.تشير جميع صفحات الويب إلى أن المسار الصحيح الوحيد هو من خلال نظام CVS.ولكن بعد ساعة من البحث على Google وتجربة نصوص برمجية مختلفة، لم أجد أي شيء بعد بنجاح يحول شجرة مشروع RCS الخاصة بي إلى CVS.آمل أن يعرف الأشخاص الطيبون في Stackoverflow ما الذي ينجح بالفعل، على عكس ما يُزعم أنه يعمل وما لا يعمل.
(لقد بحثت في Stackoverflow باستخدام كل من بحث SO الأصلي وبحث Google، ولكن إذا كانت هناك إجابة مفيدة في قاعدة البيانات، فقد فاتني.)
تحديث:ال rcs-fast-export
أداة في http://git.oblomov.eu/rcs-fast-export تم إصلاحه في 14 أبريل 2009، ويبدو أن هذا الإصدار يعمل معي.تقوم هذه الأداة بتحويل مستقيم إلى git بدون CVS وسيط.شكرا جوزيبي وجاكوب!
الأشياء التي لم تنجح والتي ما زلت أتذكرها:
ال
rcs-to-cvs
البرنامج النصي الذي يأتي فيcontrib
دليل مصادر CVSال
rcs-fast-export
أداة في http://git.oblomov.eu/rcs-fast-export في الإصدارات قبل 13 أبريل 2010ال
rcs2cvs
تم العثور على البرنامج النصي في مستند يسمى "CVS-RCS- HOW-TO Document for Linux"
المحلول
يرى الواجهات والواجهات والأدوات صفحة على Git Wiki، في "الأدوات"، "التفاعل مع أنظمة التحكم في المراجعة الأخرى"، "أخرى".هناك سوف تجد وصفا ورابطا ل RCS-سريع التصدير (gitweb) نص روبي لجوزيبي "أوبلوموف" بيلوتا.
(بحث الويب سيجد أيضًا صفحة Ohloh والإعلان عن المشروع المذكور).
نصائح أخرى
كقاعدة عامة، يجب أن تكون حذرًا بشأن البرامج النصية التي تقوم بتشغيلها.بالنسبة لـ RCS -> GIT، قد يكون من مصلحتك اتباع منهجية RCS->CVS->GIT.
ألقيت نظرة سريعة على rcs-fast-export.rb اعتبارًا من 12/01/2011 وتصفحت هذا الجزء من الكود.هذا مخيف في أحسن الأحوال.
# steal username/email data from other init files that may contain the
# information
def steal_username
[
# the user's .hgrc file for a username field
['~/.hgrc', /^\s*username\s*=\s*(["'])?(.*)\1$/, 2],
# the user's .(g)vimrc for a changelog_username setting
['~/.vimrc', /changelog_username\s*=\s*(["'])?(.*)\1$/, 2],
['~/.gvimrc', /changelog_username\s*=\s*(["'])?(.*)\1$/, 2],
[]
].each do |fn, rx, idx|
...
حسنًا، بعد قليل من التعديل، وجدت أنه من السهل تحويل RCS إلى CVS.الملفات بنفس التنسيق، لذا فالأمر ببساطة هو نقل الملفات إلى جذر CVS موجود.يفترض هذا أن لديك حق الوصول إلى ملفات RCS.
# Create CVS root dir. You only need to do this once.
mkdir $HOME/cvs/
cd $HOME/cvs/
cvs init
# Import a repository from RCS to CVS
cp -a _projectname_/RCS $HOME/cvs/_projectname_
لقد وجدت هذا للتو، والذي كان جيدًا بالنسبة لي:
http://cynic.cc/blog/posts/migrate-from-rcs-to-git/
لاحظ فقط أن "cvs-source-dir" في تلك الصفحة يجب أن يكون مسارًا مطلقًا.
لقد واجهت هذه المشكلة أيضًا وتصارعت مع cvs2svn وparsecvs وما إلى ذلك.com.parsecvs حصلت على الأقرب ولكن يبدو أن كيث قد تركها وراءه والآن ظهرت شوكات عشوائية.كانت المشكلة التي واجهتها هي أنها ستقوم بتحليل ملفات RCS بشكل جيد ولكن آخر شيء فعلته هو git rm
الملف، لذلك كان علي أن أتعامل معه git reset
للتراجع عن الحذف.
ثم اكتشفت الزئبق convert
:
https://www.mercurial-scm.org/wiki/ConvertExtensionتم حل المشكلة!
لقد حاولت إضافة بعض العناصر بشكل تدريجي من أشجار RCS المنفصلة، ويبدو أنها نجحت.