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

2024-01-07

我遇到的情况是,我有一个旧的 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。

我是不是找错了树?


首先,对中央 VCS 存储库(即 CVS 存储库)的独立部分使用子模块总是好的(请参阅“Git 的限制是什么? https://stackoverflow.com/questions/984707/what-are-the-git-limits/984973#984973").
这意味着您最终将得到许多独立的 Git 存储库,即“一组彼此独立发展的文件”,这就是子模块存在的原因。

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

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

  • cvs2svn 为了首先获得 SVN 存储库(只有一个存储库)
  • svn2git https://stackoverflow.com/questions/572893/cloning-a-non-standard-svn-repository-with-git-svn/572898#572898为了正确地将您的 SVN 存储库转换为 git 存储库(即将 SVN 分支转换为 Git 分支)andSVN 标签转换为 Git 标签)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • Final字段的线程安全

    假设我有一个 JavaBeanUser这是从另一个线程更新的 如下所示 public class A private final User user public A User user this user user public void
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • Java按日期升序对列表对象进行排序[重复]

    这个问题在这里已经有答案了 我想按一个参数对对象列表进行排序 其日期格式为 YYYY MM DD HH mm 按升序排列 我找不到正确的解决方案 在 python 中使用 lambda 很容易对其进行排序 但在 Java 中我遇到了问题 f
  • 自动同步两个 git 存储库

    是否可以保持同步两个 Github 存储库 远程 的特定文件夹 有两个 github 存储库 repoA 和 repoB 这两个存储库都有名为 ABC 的文件夹以及其他独特的文件夹 如果repoA的文件夹ABC中的任何文件有更新 我想自动更
  • 如何将 pfx 文件转换为 jks,然后通过使用 wsdl 生成的类来使用它来签署传出的肥皂请求

    我正在寻找一个代码示例 该示例演示如何使用 PFX 证书通过 SSL 访问安全 Web 服务 我有证书及其密码 我首先使用下面提到的命令创建一个 KeyStore 实例 keytool importkeystore destkeystore
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • 错误:在根项目“projectName”中找不到项目“app”

    我有一个在 Eclipse 中开发的旧应用程序 现在尝试将其迁移到 Android Studio 我更新了库并遵循了基本步骤 现在 我收到此错误 Error Project app not found in root project pro
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • $id:文件名、创建日期/时间 Exp $

    我经常在 C C 源代码中遇到以下语句 Id lzio c v 1 24 2003 03 20 16 00 56 roberto Exp Id file name version timestamp creator Exp 您知道哪些软件会
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • 如何从终端运行处理应用程序

    我目前正在使用加工 http processing org对于一个小项目 但是我不喜欢它附带的文本编辑器 我使用 vim 编写所有代码 我找到了 pde 文件的位置 并且我一直在从 vim 中编辑它们 然后重新打开它们并运行它们 重新加载脚
  • 如何从指定日期获取上周五的日期? [复制]

    这个问题在这里已经有答案了 如何找出上一个 上一个 星期五 或指定日期的任何其他日期的日期 public getDateOnDay Date date String dayName 我不会给出答案 先自己尝试一下 但是 也许这些提示可以帮助
  • Jenkins GIT 包含从未构建过的区域

    我正在尝试使用包含区域在 Jenkins 中构建我的工作 但每当选中此选项时 民意调查结果总是说未检测到任何更改 我尝试了许多不同的路径 以及使用工作区进行 不进行强制轮询 结果是轮询从未检测到任何更改 但一旦我删除这些选项 它们就会在下一
  • 在 Maven 依赖项中指定 jar 和 test-jar 类型

    我有一个名为 commons 的项目 其中包含运行时和测试的常见内容 在主项目中 我添加了公共资源的依赖项
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef

随机推荐

  • 在 Pandas 中使散点图的标签垂直和水平

    我在用着Pandas绘制散点图矩阵 from pandas tools plotting import scatter matrix 问题是列中的名称DataFrame太长了 我需要它们在 x 轴上垂直 在 y 轴上水平 这样它们才能适合
  • Putty 谷歌云计算

    我对谷歌云和腻子很陌生 我的问题是当我在计算机上打开 putty 并在 putty 中输入外部 IP 时 我的屏幕打开并要求我登录 我的问题是我要输入什么才能登录 这是谷歌用户名帐户吗 更好的问题是我在哪里可以找到登录虚拟机所需的登录名和密
  • 如何将日期时间格式化为数据表中的特定日期格式

    在我的 datagridview1 中 日期列显示格式 MM dd yyyy hh mm ss 然后我使用这段代码 我使用一个函数来填充这样的 datagridview public void load table DataTable lt
  • 在 Redis 中使用嵌套对象?

    假设我有一个嵌套属性可以更改的哈希值 key1 prop1 subprop1 could change 如果我收到以下信息prop1 subprop1已更改 我可以对此属性执行原子更新吗 现在node redis saves prop1作为
  • 使用 Roslyn 拆分表达式语句

    我正在开发一个可以改写的应用程序CSharp代码 我正在这样做Roslyn 我面临着一个问题splitting expressions 样板课 class Program static void Main string args float
  • 如何自定义 git rebase --interactive 提交消息的格式?

    我使用 git 进行本地工作 并且非常喜欢它 并且遵循类似于中描述的工作流程本文 http reinh com blog 2009 03 02 a git workflow for agile teams html 所以基本上 当开始一个新
  • 分形编程[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 获取所有系统壁纸

    有没有办法以编程方式获取所有android系统壁纸 我知道如何通过WallpaperManager 然后将其保存到磁盘 但我想知道是否有一种方法可以访问操作系统中包含的所有用作系统壁纸的图片 所有壁纸都位于启动器应用程序中 由于启动器的名称
  • 如何在 Vue Web 组件中使用 vue-i18n?

    我正在使用 vue cli 3 创建一个 Vue Web 组件 target wc选项 我还需要该组件来使用 vue i18n 插件 这需要将一些选项传递给主 Vue 实例 如下所示 new Vue i18n new VueI18n 在常规
  • 无法启动组件 [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/JDBC_DBO]]

    我收到此 Tomcat 错误 Sep 09 2012 4 16 54 PM org apache catalina core AprLifecycleListener init Information The APR based Apach
  • 如何创建脚本来查询 Google 浏览器位置

    我正在尝试找出一种从 Google 浏览器位置 API 获取地理位置数据的方法 我发现JSON CURL 和 Google 的地理定位 https stackoverflow com questions 13433901 json curl
  • iOS 8 上弹出窗口中的 UIDatePicker 问题

    还有其他人在 iOS 8 上的弹出窗口中遇到 UIDatePickers 问题吗 突然我们的日期选择器无法正确显示 参见屏幕截图 似乎选择器的一部分没有显示 不过 您仍然可以与缺失的部分交互来更改时间 我做了一些测试 日期选择器在其他视图中
  • 在draw_networkx可视化中突出显示节点而不更改节点颜色

    我正在使用 NetworkX 来可视化包含超过 1000 个节点的大型图 作为可视化的一部分 我希望能够突出显示某些节点 我见过这个问题 https stackoverflow com questions 27030473 how to s
  • 控制台上的 gcc 编译输出消息中出现奇怪的字符

    当我使用 gcc 构建 C 代码时 在 Ubuntu 10 04 x32 位系统上的 bash shell 下生成如下 Makefile gcc 输出消息在输出消息中包含一些不需要的字符 见下文 test dualboot desktop
  • 如何以编程方式添加安全区域

    当你打开视图时 它将如下图所示 iPhone x 打开视图 https i stack imgur com GJ8uy png iPhone 8 打开视图 https i stack imgur com Y1T74 png 对于 iphon
  • next-i18next 使用 Link 和 jest 进行单元测试错误“无法读取未定义的属性语言”

    next i18next使用它自己的Link组件与区域设置子路径兼容 https github com isaachinman next i18next https github com isaachinman next i18next 当
  • 如何将 Stream 转换为对象

    如何将流转换为对象 我有一个WebApi HttpGet public AttachmentViewModel DownloadAttachementDetailsByIds int attachementDetaisId Attachme
  • 如何在自定义 UIView 上显示 CGPoints

    我有一个小项目 它代表一个带有报告的应用程序 用户可以在其中绘制自定义报告CanvasView然后选择绘制的每个涂鸦 当用户单击 保存 时UIButton该报告将被序列化并保存在CoreData 当用户单击任何报告进行查看后 该报告将被带到
  • SpriteKit:精灵在已设置的物理主体下相互移动

    因此 我创建了一个基于图块移动的玩家 并在地图周围创建了一堵墙 以将玩家保持在操场上 两者都有一个物理主体 我的猜测是 我的玩家移动不正确 因此玩家会撞到墙上 让我向你展示我的代码 这就是玩家的物理主体 self physicsBody u
  • 将包含 Eclipse 项目的 CVS 存储库转换为 git 的最可靠方法?

    我遇到的情况是 我有一个旧的 CVS 存储库 我们希望将其一次性转换为 git 同时保留完整的历史记录等 存储库根目录下的所有文件夹都包含 Eclipse 项目 普通或动态 Web 项目 包括 classpath 和 project 我们使