gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:57:52 24 4
gpt4 key购买 nike

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

  1. 获取第一个提交并将其添加到 git
  2. 获得下一个CP
  3. 获取 CP 差异
  4. 将差异应用到 git 工作目录
  5. 添加并提交更改到 git
  6. 重复 (2.) 直到最后一个 CP

您也可以用检查点替换更改包(对我来说已经足够了)。

一个更简单的方法是只 checkout 一个 CP 并添加/提交到 git。但这样一来,您就会失去对添加、删除、移动和重命名操作的跟踪。

有谁知道如何从“si diff”获得统一差异?那已经很有帮助了。

有什么想法吗?

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

最佳答案

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

  • 从开始修订到结束修订开始循环
    • CURRENTREV=BRANCH.loopcounter
    • 创建仓库目录
    • 将 .git 目录移动到 repo 目录中
    • 将 .gitignore 文件移动到 repo 目录
    • chdir 进入repo目录
    • 通过“si createsandbox -P MKS_PROJECT_PATH --yes --projectRevision=CURRENTREV”在 repo 目录中创建 mks 沙箱
    • 通过“si viewprojecthistory --rfilter=range:CURRENTREV-CURRENTREV”获取修订说明,捕获输出!
    • 从之前的输出中提取用户、日期、标签、评论
    • “git 添加。”
    • 将上面提取的信息通过管道传输到“git commit -qF -”(如果你想要多行,比如检查点注释,则不能使用 -m)
    • 通过“si dropsandbox --yes index.pj”删除沙箱
    • 将 .git 和 .gitignore 移动到一个保存位置(用于下一次迭代)
    • 删除沙箱目录中的所有剩余文件
    • 移动到父目录(..)
    • 删除沙箱/ repo 目录
  • 创建最终的 git 目录
  • 将 .git 和 .gitignore 移动到最终的 git 目录
  • “git reset --hard HEAD”

完成。

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

对于更多分支执行此操作:

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

还有一件事:“si”是 MKS 命令行工具。所以你要么需要指定它的完整路径,要么将它的路径放到搜索路径中。

关于git - 是否可以将 MKS Integrity 存储库导入 git?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1314218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com