我正在尝试将一个专有且复杂的源代码控制系统中的更改导入到git存储库中。我目前是通过运行一个脚本来实现的,该脚本仅按顺序同步每个修订版本并将其提交到git存储库中,但由于各种原因,这已经变得不可行。
对于每个修订版本,我可以获得描述更改的通用差异。对我来说,似乎这应该足以将历史记录导入到git中,但是我无论如何都无法弄清楚如何让git这样做。看起来我需要在git-apply和git-fast-import之间使用某些东西。也许我应该从先前版本和差异构建文件内容,然后使用git-fast-import?或者我应该将差异格式化为git补丁,将其保存为文件,然后使用git-apply?
有没有人有好的想法可以帮助我?
编辑:同步和提交变得不可行的原因有两个:
首先,服务器维护您已编辑的文件列表。很难自动同步已编辑的文件,因此在更新时撤消我的更改。我们有一个检入队列系统,只有当排在您前面的人没有与您相同的文件“正在编辑”时,才允许您检入。因此,在更新时将文件“取消编辑”会创建一个窗口,看起来人们可以安全地超越您。
其次,所有分支都存储在同一个存储库中,并且我们广泛使用分支。同步所有内容很容易并且有效,但仅同步一个目录(即我所在的分支)似乎有缺陷。如果我同步所有内容,则其他分支会在我不想要它们的情况下更新。通常这不是问题,但我们还有另一个工具,这使事情变得有点复杂。
对于每个修订版本,我可以获得描述更改的通用差异。对我来说,似乎这应该足以将历史记录导入到git中,但是我无论如何都无法弄清楚如何让git这样做。看起来我需要在git-apply和git-fast-import之间使用某些东西。也许我应该从先前版本和差异构建文件内容,然后使用git-fast-import?或者我应该将差异格式化为git补丁,将其保存为文件,然后使用git-apply?
有没有人有好的想法可以帮助我?
编辑:同步和提交变得不可行的原因有两个:
首先,服务器维护您已编辑的文件列表。很难自动同步已编辑的文件,因此在更新时撤消我的更改。我们有一个检入队列系统,只有当排在您前面的人没有与您相同的文件“正在编辑”时,才允许您检入。因此,在更新时将文件“取消编辑”会创建一个窗口,看起来人们可以安全地超越您。
其次,所有分支都存储在同一个存储库中,并且我们广泛使用分支。同步所有内容很容易并且有效,但仅同步一个目录(即我所在的分支)似乎有缺陷。如果我同步所有内容,则其他分支会在我不想要它们的情况下更新。通常这不是问题,但我们还有另一个工具,这使事情变得有点复杂。