gpt4 book ai didi

git - 从 universal diff 将更改导入 git 存储库

转载 作者:太空狗 更新时间:2023-10-29 13:52:23 25 4
gpt4 key购买 nike

我正在尝试将更改从一个源代码控制系统(专有且复杂)导入到 git 存储库中。我目前通过运行一个脚本来执行此操作,该脚本简单地按顺序同步到每个修订并将其提交到 git 存储库,但由于各种原因,这已变得不可行。

对于每个修订版,我都可以获得描述更改的通用差异。对我来说,这似乎足以将历史导入 git,但我终究无法弄清楚如何让 git 执行此操作。看起来我需要介于 git-apply 和 git-fast-import 之间的东西。也许我应该从以前的版本和差异构建文件内容,然后使用 git-fast-import?或者我应该将差异格式化为 git 补丁,将其保存为文件,然后使用 git-apply?

有人对我有什么好的建议吗?

编辑:同步和提交变得不可行的原因有两个:

首先,服务器会维护一份您编辑过的文件列表。与已编辑文件的同步无法轻松实现自动化,因此我在更新时恢复了我的更改。我们有一个 checkin 队列系统,只有当您前面的人没有任何与您“正在编辑”的相同文件时,才允许您 checkin 。因此,将文件“关闭编辑”以进行更新会创建一个窗口,看起来人们可以安全地跳到您前面。

其次,所有分支都存储在同一个存储库中,我们大量使用分支。同步所有内容都很简单且有效,仅同步一个目录(我所在的分支目录)似乎有问题。如果我同步所有内容,其他分支会在我不希望它们更新时更新。这通常不会有问题,但我们有另一种工具,这会使事情……变得复杂。

最佳答案

  • apply 命令获取统一差异并应用它(即没有“git 补丁格式”,它只是统一差异;git apply - 也会很高兴读取标准输入,所以不需要保存任何东西)。
  • am 命令获取带有补丁的 mbox 格式文件,然后应用并提交每个补丁。您也许可以轻松生成它;很简单:

    From au@th.or Mon, 23 May 2011 14:49:12 +0200
    From: au@th.or
    Date: Mon, 23 May 2011 14:49:12 +0200
    Subject: First line of commit message
    Content-length: <bytes-until-next From>

    Other lines of commit message
    ---
    unified diff

    连接所有修订版。

  • 看起来 fast-import 确实不接受差异,但你不能只要求源系统给你修订的内容(那将处理统一差异的二进制文件无法 build )?如果没有,你可以让 fast-import 给你以前的内容(用 cat-blob 命令),打补丁并重新输入。

关于git - 从 universal diff 将更改导入 git 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6097383/

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