Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将包含Eclipse项目的CVS存储库转换为git的最健壮的方法是什么?_Java_Eclipse_Git_Cvs - Fatal编程技术网

Java 将包含Eclipse项目的CVS存储库转换为git的最健壮的方法是什么?

Java 将包含Eclipse项目的CVS存储库转换为git的最健壮的方法是什么?,java,eclipse,git,cvs,Java,Eclipse,Git,Cvs,我有一个情况,我有一个老的CVS存储库,我们想转换成git一劳永逸,同时保持完整的历史等 存储库根目录下的所有文件夹都包含Eclipse项目(普通或动态web项目),包括.classpath和.project。我们使用团队项目集签出给定任务所需的项目(其中项目集位于包含main的项目中,其余为库项目) 签出团队项目集后,工作区将完全填充 这种方法已经运行了很多年了(除了3.5附带的项目集部分),如果可能的话,我们希望以类似的方式使用git,但我们不确定如何使用 我曾经尝试过GitCVS导入,但失

我有一个情况,我有一个老的CVS存储库,我们想转换成git一劳永逸,同时保持完整的历史等

存储库根目录下的所有文件夹都包含Eclipse项目(普通或动态web项目),包括.classpath和.project。我们使用团队项目集签出给定任务所需的项目(其中项目集位于包含main的项目中,其余为库项目)

签出团队项目集后,工作区将完全填充

这种方法已经运行了很多年了(除了3.5附带的项目集部分),如果可能的话,我们希望以类似的方式使用git,但我们不确定如何使用

我曾经尝试过GitCVS导入,但失败了——可能是因为我们没有使用模块

您会建议我们如何做到这一点,以及我们应该如何与git合作以允许当前使用共享库项目?我们是否需要引入maven并为我们的库项目创建maven模块?或者只是蚂蚁常春藤


编辑:我现在已经通过一个合适的cvs2svn调用成功地将我们的CVS存储库转换为Subversion,并且发现Eclipse能够很好地识别生成的Subversion存储库。不幸的是,在克隆并尝试运行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
这是Ubuntu10.04.1LTS服务器,我用Ruby和它的gems尝试了各种sudo,但没有完全理解我做了什么,因为我不是Ruby程序员,所以我可能有点搞砸了。我非常感谢您的建议——如果最简单的方法是安装另一个Linux变体来进行转换,那就好了


编辑:


编辑:我第一次使用默认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”位。该存储库不知道所有分支:

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(修剪)内部的以下内容:

正在尝试使用
git clone克隆此存储库gitosis@sandbox:git01-b remotes/SV46
git clonegitosis@sandbox:git01-b SV46
两者都告诉我,在上游原点未找到远程分支,而是使用HEAD


我找错地方了吗?

首先,为您的中央VCS存储库(即您的CVS回购)的独立部分使用子模块总是好的(请参见“”。
这意味着您将得到许多独立的Git repo,即“一组文件彼此独立地演化”,这就是子模块存在的原因

因此,需要多个Git导入(在多个repo中)

但由于git cvs import并不总是能够完成这项任务,因此我建议:

  • cvs2svn,以便首先获得SVN回购(仅一次回购)
  • 以正确地将SVN回购转换为git回购(即,将SVN分支转换为git分支,将SVN标记转换为git标记)

谢谢。在接下来的几天里,我将查看Git限制,并在假期后尝试一下“via SVN”。cvs2svn进行得很顺利,但我在svn2git方面遇到了问题。请看我对这个问题的编辑。@Thorbjørn:
svn2git
第35行是
migration=svn2git::migration.new(url,options)
,所以你不应该只运行
svn2git
,而应该运行
svn2git url
:你至少必须提供一个url<代码>$svn2githttp://svn.example.com/path/to/repo --主干开发--标记rel--nobranches。还要确保再次看到:我已经更新了svn2git repo地址:选择nirvdrum的repo,而不是iteman。我使用Ubuntu中安装的默认svn2git和-s进行了转换。你会建议用nirvdrum版本重做它,还是这样可以?这是一次转换,因此无需反向同步到svn或cvs。@Thorbjørn:如果您首先浏览生成的git回购(
gitk--all
)并查看是否缺少任何内容,则无需重新进行转换。另请参阅:
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$