我遇到的情况是,我有一个旧的 CVS 存储库,我们希望将其一次性转换为 git,同时保留完整的历史记录等。
存储库根目录下的所有文件夹都包含 Eclipse 项目(普通或动态 Web 项目),包括 .classpath 和 .project。我们使用 Team ProjectSets 来检查给定任务所需的项目(其中项目集位于包含 main 的项目中,其余的是库项目)。
检出团队项目集后,工作区已完全填充。
这种方法多年来一直运行良好(除了 3.5 附带的项目集部分),如果可能的话,我们希望以类似的方式使用 git,但我们不确定如何操作。
我玩过一些git cvs import
但它失败了 - 可能是因为我们没有使用模块。
您建议我们如何做到这一点?我们应该如何使用 git 来允许我们当前使用共享库项目?我们会吗HAVE为我们的图书馆项目引入maven并创建maven模块?或者只是蚂蚁常春藤?
编辑:我现在已经成功地使用合适的 cvs2svn 调用将我们的 CVS 存储库转换为 Subversion,并且发现 Eclipse 可以很好地识别生成的 Subversion 存储库。不幸的是克隆之后http://github.com/iteman/svn2git http://github.com/iteman/svn2git` 并尝试运行 bin/svn2git 我得到
tra@Sandbox:~/cvsgit/svn2git/svn2git$ bin/svn2git
bin/svn2git:35:in `initialize': wrong number of arguments (2 for 1) (ArgumentError)
from bin/svn2git:35:in `new'
from bin/svn2git:35
这是使用 Ubuntu 10.04.1 LTS 服务器,我尝试了 Ruby 及其 gems 的各种 sudo 操作,但没有完全理解我所做的事情,因为我不是 Ruby 程序员,所以我可能把事情搞砸了一点。我希望得到建议 - 如果最简单的方法是安装另一个 Linux 变体来进行转换,那就没问题了。
EDIT:
https://help.ubuntu.com/community/Git https://help.ubuntu.com/community/Git
http://css.dzone.com/articles/subversion-git-morning http://css.dzone.com/articles/subversion-git-morning
编辑:我第一次尝试使用默认的 svn2git 成功完成(一段时间后),并且我得到了一个很好的存储库,其中git branch -a
大致报告
tra@Sandbox:~/gitroot/svnroot$ git branch -a
* master
remotes/XX64_DEPLOYED_CODE
remotes/Beta1
remotes/Beta2
remotes/SV46
... lots more
我们有兴趣能够检查 SV46 分支并使用它(我们基本上不关心标签,只关心实际分支)。我已经设置了 gitosis 并将此存储库推送到 gitosis,并将其克隆到另一台计算机以了解如何使用 Eclipse 进行“使用 SV46”位。THAT存储库不知道所有分支:
tra@TRA ~/git/git00 (master)
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
我是否需要修改 svn2git 的原始结果才能将信息放入 gitosis 存储库中?我需要带参数进行克隆吗?我应该使用建议的版本而不是 Ubuntu 附带的版本重做 svn2git 步骤吗?
编辑:事实证明,使用“git push --mirror”发布 svn2git 生成的存储库会使内容显示在 gitosis 存储库中。我现在在 gitosis 中看到以下内容(已修剪):
tra@Sandbox:/srv/gitosis/repositories/git01.git$ git branch -a
* master
remotes/XX64_DEPLOYED_CODE
remotes/Basic_Beta1
remotes/Beta1
remotes/Beta2
remotes/SV46
... lots more
tra@Sandbox:/srv/gitosis/repositories/git01.git$ git branch
* master
tra@Sandbox:/srv/gitosis/repositories/git01.git$ git tag -l
tra@Sandbox:/srv/gitosis/repositories/git01.git$
尝试克隆此存储库git clone gitosis@sandbox:git01 -b remotes/SV46
or git clone gitosis@sandbox:git01 -b SV46
两者都告诉我远程分支未找到上游源,而是使用 HEAD。
我是不是找错了树?