jjzjj

java - 将包含 Eclipse 项目的 CVS 存储库转换为 git 的最可靠方法?

coder 2024-03-07 原文

我有一个情况,我有一个旧的 CVS 存储库,我们想一劳永逸地将其转换为 git,同时保留完整的历史记录等。

存储库根目录下的所有文件夹都包含 Eclipse 项目(普通或动态 Web 项目),包括 .classpath 和 .project。我们使用 Team ProjectSets 检查给定任务所需的项目(其中项目集位于包含主要项目的项目中,其余为库项目)。

checkout Team ProjectSet 时,工作区已完全填充。

这种方法多年来一直运行良好(除了 3.5 附带的项目集部分),如果可能的话,我们希望以类似的方式使用 git,但我们不确定如何操作。

我玩过 git cvs import 但它失败了 - 可能是因为我们没有使用模块。

你会如何建议我们这样做,我们应该如何使用 git 来允许我们当前使用共享库项目?我们必须为我们的图书馆项目引入maven 和创建maven 模块吗?或者只是 Ant Ivy ?


编辑:我现在已经成功地使用合适的 cvs2svn 调用将我们的 CVS 存储库转换为 Subversion,并且发现 Eclipse 可以很好地识别生成的 Subversion 存储库。不幸的是克隆后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 变体来进行转换,那很好。


编辑:

https://help.ubuntu.com/community/Git 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/SV46git clone gitosis@sandbox:git01 -b SV46 克隆此存储库都告诉我未找到远程分支的上游来源,而是使用 HEAD。

我是不是找错了树?

最佳答案

首先,为中央 VCS 存储库(即 CVS 存储库)的独立部分使用子模块总是好的(参见“What are the Git limits?”)。
这意味着您最终会得到许多独立的 Git 存储库,即“一组文件相互独立演化”,这就是存在子模块的原因。

因此需要多次 Git 导入(在多个仓库中)。

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

  • cvs2svn 以便首先获得一个 SVN 仓库(只有一个仓库)
  • svn2git 为了正确地将您的 SVN 存储库转换为 git 存储库(即将 SVN 分支转换为 Git 分支 SVN 标签转换为 Git 标签)

关于java - 将包含 Eclipse 项目的 CVS 存储库转换为 git 的最可靠方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3321290/

有关java - 将包含 Eclipse 项目的 CVS 存储库转换为 git 的最可靠方法?的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  4. ruby-on-rails - 在 Rails 中将文件大小字符串转换为等效千字节 - 2

    我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,

  5. ruby - Facter::Util::Uptime:Module 的未定义方法 get_uptime (NoMethodError) - 2

    我正在尝试设置一个puppet节点,但ruby​​gems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由ruby​​gems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby

  6. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  7. Ruby 方法() 方法 - 2

    我想了解Ruby方法methods()是如何工作的。我尝试使用“ruby方法”在Google上搜索,但这不是我需要的。我也看过ruby​​-doc.org,但我没有找到这种方法。你能详细解释一下它是如何工作的或者给我一个链接吗?更新我用methods()方法做了实验,得到了这样的结果:'labrat'代码classFirstdeffirst_instance_mymethodenddefself.first_class_mymethodendendclassSecond使用类#returnsavailablemethodslistforclassandancestorsputsSeco

  8. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  9. ruby - 将数组的内容转换为 int - 2

    我需要读入一个包含数字列表的文件。此代码读取文件并将其放入二维数组中。现在我需要获取数组中所有数字的平均值,但我需要将数组的内容更改为int。有什么想法可以将to_i方法放在哪里吗?ClassTerraindefinitializefile_name@input=IO.readlines(file_name)#readinfile@size=@input[0].to_i@land=[@size]x=1whilex 最佳答案 只需将数组映射为整数:@land边注如果你想得到一条线的平均值,你可以这样做:values=@input[x]

  10. ruby - 将散列转换为嵌套散列 - 2

    这道题是thisquestion的逆题.给定一个散列,每个键都有一个数组,例如{[:a,:b,:c]=>1,[:a,:b,:d]=>2,[:a,:e]=>3,[:f]=>4,}将其转换为嵌套哈希的最佳方法是什么{:a=>{:b=>{:c=>1,:d=>2},:e=>3,},:f=>4,} 最佳答案 这是一个迭代的解决方案,递归的解决方案留给读者作为练习:defconvert(h={})ret={}h.eachdo|k,v|node=retk[0..-2].each{|x|node[x]||={};node=node[x]}node[

随机推荐