首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将更改从通用差异导入到git存储库

将更改从通用差异导入到git存储库
EN

Stack Overflow用户
提问于 2011-05-23 20:45:16
回答 2查看 2K关注 0票数 3

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

对于每个版本,我可以得到一个通用的差异来描述变化。对我来说,这似乎足以将历史导入到git中,但我无论如何也想不出如何让git做到这一点。看起来我需要一些介于git-apply和git-fast-import之间的东西。也许我应该从以前的版本和diff构造文件内容,然后使用git-fast-import?或者我应该将diff格式化为git补丁,将其另存为文件,然后使用git-apply?

有没有人有什么好主意给我?

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

首先,服务器维护您已编辑的文件的列表。与编辑过的文件同步不容易自动化,所以我在更新时恢复了我的更改。我们有一个签入队列系统,只允许你签入时,在你面前没有人有任何相同的文件‘编辑’与你。因此,让文件“关闭编辑”进行更新会创建一个窗口,在这个窗口中,人们看起来可以安全地跳到你前面。

其次,所有分支都存储在同一个存储库中,我们大量使用分支。同步所有内容都很容易而且有效,只同步一个目录(我所在分支的目录)似乎有buggy。但是,如果我同步所有内容,当我不想更新其他分支时,它们就会更新。这通常不是问题,但我们有另一个工具,它使事情……很复杂。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-23 22:11:59

我不知道你的“各种原因已经变得不可行”是什么,但我已经在工作中成功地做了很长一段时间,所以我很熟悉其中的陷阱。诀窍是将上游保持在一个单独的分支中,这样您就可以始终执行同步和git commit,而不会产生冲突。我使用我的主分支来实现此目的。我从功能分支检入新功能的工作流程如下所示:

  1. git签出主
  2. 同步到集中式VCS
  3. git add -A
  4. git commit -m“已从上游同步”

<代码>H110git合并VCS到集中式VCS<代码>H213<代码>H114git签出-b下一个功能<代码>H215<代码>G216

我不会费心从上游获取每一个版本,但你可以通过对每个上游版本执行步骤2-4来做到这一点。

票数 3
EN

Stack Overflow用户

发布于 2011-05-23 20:54:35

  • 接受统一比较并应用它的apply命令(即,没有"git补丁格式“,它只是统一比较;而且git apply -将愉快地读取标准输入,因此不需要保存任何内容)。
  • am命令接受带有补丁的mbox格式文件,并应用并提交每个文件。您可能能够轻松地生成此代码;它很简单:

来自au@th.or Mon,2011年5月23日14:49:12 +0200来自: au@th.or Date: Mon,2011年5月23日14:49:12 +0200主题:提交消息的第一行Content-length:提交消息的其他行-统一差异

  • 看起来fast-import确实不接受diffs,但你不能要求源系统给你提供修订的内容吗(这将处理不能构造统一diff的二进制文件)?如果没有,你可以要求fast-import提供之前的内容(使用cat-blob命令),修补它,然后重新输入。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6097383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档