是否可以将MKS Integrity存储库导入git?

Eri*_*fer 11 git import version-control mks mks-integrity

我只需要源树及其历史.我现在不关心要求/问题.我在命令行中玩了一下,以确定我是否可以获得主干和一些开发路径的更改包列表.我认为应该可以为每个更改包提取一个diff,并使用它来重放自git中第一次提交以来的所有更改.像这样的东西:

  1. 首先提交并将其添加到git
  2. 得到下一个CP
  3. 得到CP的差异
  4. 将diff应用于git working dir
  5. 添加并提交对git的更改
  6. 重复(2.)直到最后一次CP

您还可以使用检查点补充更改包(对我来说已经足够了).

一种更简单的方法是只签出CP并添加/提交给git.但是你会忘记添加,删除,移动和重命名操作.

有谁知道如何从"si diff"获得统一的差异?那已经有很多帮助了.

有任何想法吗?

Edit2:
添加了一个答案,显示我实际上是如何进行迁移的......

Eri*_*fer 10

我不能发布我写的实际程序,因为我没有按照自己的时间去做.但是,我可以发布我是如何做到的.使用任何脚本语言重做它应该很容易.我编写的工具一次只迁移一个分支.我会告诉它我想要哪个分支(例如1.21.1)以及分支中的起始和结束修订(例如4和78会将所有修订从1.21.1.4迁移到1.21.1.78).要将所有分支放在一个repo中,我将提供用于导入的.git目录.

  • 从开始修订到结束修订开始循环
    • CURRENTREV = BRANCH.loopcounter
    • 创建repo目录
    • 将.git目录移动到repo目录中
    • 将.gitignore文件移动到repo目录中
    • chdir进入repo目录
    • 通过"si createsandbox -P MKS_PROJECT_PATH --yes --projectRevision = CURRENTREV"在repo目录中创建mks沙箱
    • 通过"si viewprojecthistory --rfilter = range:CURRENTREV-CURRENTREV"获取修订版描述,捕获输出!
    • 从以前的输出中提取用户,日期,标签,评论
    • "git add."
    • 管道从上面提取信息到"git commit -qF - "(如果你想要像检查点评论这样的多行,不能做-m)
    • 通过"si dropsandus --yes index.pj"删除沙箱
    • 将.git和.gitignore移动到保存位置(用于下一次迭代)
    • 删除沙箱目录中的所有剩余文件
    • 转移到父目录(..)
    • 删除sandbox/repo目录
  • 创建最终的git目录
  • 将.git和.gitignore移动到最终的git目录中
  • "git reset --hard HEAD"

完成.

MKS对其字符串使用某种ASCII编码,而git通常使用UTF-8,因此在将元数据导入git(用户名,注释,标签等)时要注意问题.

对于更多的分支这样做:

  • 在git目录中检出分支应该开始的修订并创建一个分支("git checkout -b NEWBRANCHNAME")
  • 现在将.git和.gitignore移动到保存位置并删除整个目录
  • 现在做与上面相同的事情

还有一件事:"si"是MKS命令行工具.因此,您需要指定其完整路径或将其路径放入搜索路径.


Von*_*onC 8

MKS Integrity的问题在于它们所有存在的独特存储库:

  • 要求,
  • 测试计划,
  • 测试用例,
  • 特征,
  • 开发者任务,
  • 部署请求

由于这些数据可以按照自己的进度独立发展,因此在一个Git存储库中导入它们将是一个坏主意:您只能克隆Git存储库的所有内容(即使您可以限制该克隆的深度) ).
这意味着即使您只对代码感兴趣,也会获得所有文档.
MKS Integrity导出意味着首先定义许多Git存储库作为子模块.


我只需要源树及其历史.

像往常一样,我建议只导入:

  • 主要标签(对于任何超过一年的东西,或任何你觉得舒适的时期,你都不需要完整的检查,因为它太旧了)
  • 所有标签(主要和未成年人)的最后几年.

我不会在一个 Git存储库中导入所有内容,除非您确信所有源代表一个开发为全部的系统(而不是几个独立开发的"模块")

一种更简单的方法是只签出CP并添加/提交给git.

这将是继续进行的方式.

但是你会忘记添加,删除,移动和重命名操作.

没有!你不会!Git将推断这些操作.
这是作为文件Content VCS的优势.


小智 6

FWIW,si diff遗憾地目前不支持统一差异.有一个要求进行更改的请求,但是还没有太多客户要求该功能.

免责声明:我为PTC(谁收购了MKS)工作.

  • 我们在哪里要求这样的功能? (2认同)