سؤال

انا املك مشروع عمره 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 المنفصلة، ​​ويبدو أنها نجحت.

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