Ahm*_*laa 37 git cvs version-control
我需要知道是否有办法将我的代码从CVS源代码控制迁移到Git?
如果是的话,我的提交历史怎么样?
gab*_*ous 23
以下是我使用cvs2git将SourceForge CVS repo迁移到Git的过程(最新的稳定版本在这里,但IIRC我使用的是github dev版本),它适用于Windows和Linux,无需任何编译,因为它只是Python:
如何从sourceforge CVS导入到git.
首先,您需要下载/签出整个历史记录的cvs repo(而不仅仅是结帐HEAD/Trunk):
rsync -av rsync://PROJECT.cvs.sourceforge.net/cvsroot/PROJECT/\* cvs
Run Code Online (Sandbox Code Playgroud)
然后使用cvs2git(python脚本,适用于所有平台,无需编译):
python cvs2git --blobfile="blob.dat" --dumpfile="dump.dat" --username="username_to_access_repo" --options=cvs2git.options --fallback-encoding utf-8 cvs
Run Code Online (Sandbox Code Playgroud)
这应该生成两个包含所有cvs历史记录的文件blob和dump.您可以在文本编辑器中打开它们以检查内容是否正确.
然后在另一个文件夹中初始化你的git repo:
mkdir gitexport/
cd gitexport
git init
Run Code Online (Sandbox Code Playgroud)
然后将导出的cvs历史记录加载到git:
cat ../{blob,dump}.dat | git fast-import
Run Code Online (Sandbox Code Playgroud)
然后将git提交光标放在历史记录的末尾:
git reset --hard
Run Code Online (Sandbox Code Playgroud)
最后,也可以选择推送到远程git存储库:
git push -u origin master
Run Code Online (Sandbox Code Playgroud)
当然你需要在git remote add origin https:// your_repo_url之前
注意:git remote add origin https://your_repo_url是一个JSON格式的配置文件cvs2git.options,您可以在其中为作者姓名等各种内容指定转换(以便在导入后将其昵称自动转换为其全名).请参阅此处的文档或包含的示例选项文件.
此外,您不需要使用此方法拥有repo,您可以迁移您不拥有的SourceForge项目(您只需要结帐权,因此这适用于任何公共存储库).
Joh*_*ter 18
我个人没有完成从CVS到Git的转换,但我相信Eric Raymond cvs-fast-export是使用的工具.他在这里发布了手册页. cvsps是由Eric维护的另一个工具,但它最近被弃用了cvs-fast-export. cvs2git是另一种工具,建立在一些相同的机械上cvs2svn.后者非常擅长,所以我抱有很高的希望cvs2git.
有一点需要注意:CVS是一个非常破碎的RCS.它可能具有无法在Git中完全反映的内容.IOW,那里存在一些不匹配的阻抗,但是工具尽可能地努力保存.请务必检查您的转化情况,并对结果感到满意.你可能需要修复Git历史的一部分以获得更可接受的东西,但我怀疑你是否需要.
Chr*_*ris 12
您可以使用git-cvsimport将CVS存储库导入Git.默认情况下,这将检查每个修订版本,为您提供相对完整的历史记录.
根据您的操作系统,您可能需要单独安装支持.例如,在Ubuntu机器上,您需要git-cvs包.
这个答案更详细.
| 归档时间: |
|
| 查看次数: |
36486 次 |
| 最近记录: |