我们目前使用SourceAnywhere托管作为我们的版本控制服务器。 我期待迁移到GitHub上,并且真的想保护我们8+年的历史。
有没有其他人成功地完成了这种迁移和照顾,分享他们的工具/程序?
现在,假设这并没有做过的事情,我想我在看写的git fast-import
使用SourceAnywhere SDK或命令行客户端脚本。 作为新来的git,在那里你可以直接向我作为一个起点,任何现有的脚本或资源?
我们目前使用SourceAnywhere托管作为我们的版本控制服务器。 我期待迁移到GitHub上,并且真的想保护我们8+年的历史。
有没有其他人成功地完成了这种迁移和照顾,分享他们的工具/程序?
现在,假设这并没有做过的事情,我想我在看写的git fast-import
使用SourceAnywhere SDK或命令行客户端脚本。 作为新来的git,在那里你可以直接向我作为一个起点,任何现有的脚本或资源?
我终于清理了我的项目,并把它添加到GitHub上。 你可以在这里找到: SAWHtoGit 。
它出口的历史为逻辑的变更,有一些小的限制了很好的工作:
除此之外,它的工作以及为我们的目的,我们能够以我们的代码和历史成功迁移到GitHub上。 我希望这将是有用的人,以及!
进口部分很简单:
一旦你已经提取的一整套文件从您最初的回购,可以将其添加到混帐回购协议,这将检测到任何修改/添加/删除。
“相干” =一组文件代表一个稳定的状态,例如像“其编译”:在时间的那些点通常由标签表示的,尤其是在一个回购在像SAW文件级别工作(与与git,这工作在仓库级别,每个修订代表全部回购的内容 )
添加一组文件的Git是简单的:
git --work-tree=/path/to/extracted/file --git-dir=/path/to/git/repo/.git add -A
git --work-tree=/path/to/extracted/file --git-dir=/path/to/git/repo/.git commit -m "new revision from SAW import"
困难的是确定要导入的内容。
我会建议列出了所有的标签,并用它们来得到所有的项目,在GetProject -label
(使用SAW CLI )
需要注意的是每个项目应该是在自己的Git回购:这将避免大臃肿回购,这将是很难克隆周围,而不是用SAW一个集中的模式,在那里你可以把所有的项目在一个参考。
该OP丹 评论 :
我能够使用SourceAnywhere COM SDK编写一个小工具来提取我的历史(尽可能最好的SDK将允许),并写出一个快速导入脚本给它的所有加载到饭桶。
虽然并非每一个中介变更必然是“一致的”,最终的结果符合我们目前的状态,我们保留了大宗我们的历史。
你可以看一下混帐过XYZ如何实现等工作。 例如, 这里是为混帐SVN的代码 ,并且这里的代码的git-cvsimport (两者在Perl)。