我只需要在源树和它的历史。 我不在乎的要求/问题的东西现在。 我打了一下witth命令行弄清楚,如果我能得到改变包躯干和一些开发路径的列表。 我认为这应该可以提取每一个变化包一个diff并用它来重播所有的变化,因为首先在git的承诺。 事情是这样的:
- 获得第一次提交,并将其添加到Git的
- 得到一个CP
- 获得差异的CP
- 适用DIFF与git的工作目录
- 添加和更改提交到Git的
- 与(2),直到最后CP重复
你也可以repleace变化包检查点(将是对我不够好)。
更简单的方法是只签一个CP,并添加/承诺饭桶。 但你将失去曲目添加,删除,移动和重命名操作。
有谁知道如何从“SI DIFF”统一差异? 这将已经很多帮助。
有任何想法吗?
EDIT2:
添加了一个答案,显示我如何实际做迁移...
这个问题MKS完整性是其独特的资源库中, 一切都在于:
- 要求,
- 测试计划,
- 测试用例,
- 特征,
- 开发人员任务,
- 部署请求
由于这些数据可以独立发展的一个从另一个,在自己的步伐,引进他们都在一个Git仓库将是一个糟糕的主意:你只能克隆一个Git回购协议的所有内容(即使你可以限制克隆的深度)。
这意味着你会得到所有的文件,即使你在代码只是感兴趣。
MKS一个诚信的出口将暗示来定义许多第一Git仓库作为子模块 。
我只需要在源树和它的历史。
像往常一样,我会建议只进口:
- 各大唱片公司(为任何年龄超过一年,或任何时期你感觉很舒服,你将不再需要在充分的研究,因为它是那么老)
- 所有标签(主要和未成年人)在过去的几年。
而且我也不会导入所有在一个 Git仓库,除非您确信您的所有来源代表发展成为一个全(独立开发的,而不是几个“模块”) 一个系统
更简单的方法是只签一个CP,并添加/承诺饭桶。
这将是继续的方式。
但你将失去曲目添加,删除,移动和重命名操作。
没有! 你不会! Git会推断出这些操作 。
这是作为一个文件中的优势内容 VCS 。
我不能发布实际的程序我写的,因为我没有做我自己的时间。 不过,我可以张贴我是如何做的。 它应该很容易与任何脚本语言来重做。 我写的工具,在同一时间迁移只有一个分支。 我会告诉它我想(如1.21.1),并开始和结束的修订中分支,分支(如4和78将迁移的所有修订从1.21.1.4开始到1.21.1.78)。 让所有的分支在一个回购我将提供.git目录用于导入到。
- 从开始修订,修订结束开始循环
- CURRENTREV = BRANCH.loopcounter
- 创建回购目录
- 移动git的目录到回购目录
- 在的.gitignore文件移入回购目录
- CHDIR到回购目录
- 创建MKS经由“SI createsandbox -P MKS_PROJECT_PATH --yes --projectRevision = CURRENTREV回购DIR沙箱内部
- ,捕获输出:通过 “CURRENTREV-CURRENTREV SI viewprojecthistory --rfilter =范围” 取修订描述!
- 提取用户,日期,标签(一个或多个),从以前的输出评论
- “混帐补充。”
- 管中提取信息从上方插入“git的承诺-qf - ”(如果要多行,如检查点注释不能做-m)
- 通过降沙箱 “SI dropsandbox --yes index.pj”
- git的移动和的.gitignore到节省空间(用于下一次迭代)
- 删除沙盒目录中的所有剩余文件
- 移动到父目录(..)
- 删除沙箱/回购DIR
- 创建最终的git目录
- git的移动和的.gitignore成最终的git目录
- “GIT中的复位 - 硬HEAD”
完成。
MKS采用某种形式的ASCII编码为它的字符串和git通常使用UTF-8导入元数据到混帐(用户名,注释,标记等)时,所以,要当心的问题。
欲了解更多分支做到这一点:
- 在git的目录结账的修订版本,其中的分支应该开始并创建一个分支(“混帐结账-b NEWBRANCHNAME”)
- 现在git的移动和的.gitignore到保存地点和删除整个目录
- 现在做同样的事情如上
还有一两件事:“SI”是MKS命令行工具。 所以,你要么需要指定它的完整路径,或把它的路径进入搜索路径。
FWIW,SI DIFF可悲的是目前不支持统一的差异。 有变更请求把它这样做,但现在还没有太多客户要求该功能。
声明:我工作的PTC(谁收购MKS)。
这适用于检查站...
https://gist.github.com/2369049
不幸的是,检查点貌似那真叫从MKS任何意义的唯一的事情 - > GIT,作为一个检查点真的是最接近的“快照”,这GIT调用提交。
MKS有这么多的不兼容的概念(每个文件版本跟踪,分公司是不一样的Git分支,检查站等),都可以从彼此实在是很难说如何明智历史迁移到GIT独立发展。 可能有很多方法可以做到这一点,没有人更“正确”比下。
不过,我很乐意听到一些好的想法。 :)
我很乐意看到其捕获每个文件的版本控制在一个合理的方式加以解决。 在一些讨论中,我们已经围绕试图排队按提交时间或东西MKS每个文件版本的想法抛出。 这样,我们就可以制定“回购”的理念,通过不断变化的提交包含在多个文件中的变化。
我用这个工具从MKS成水银导入改变包装,将其导入到混帐应该是很相似的; 或者你可以导入第一含汞,并使用git工具导入水银未来。
https://github.com/arsane/py-mks2hg.git
它会尝试找出所有的变化包指定的项目之下,并承诺新的Mercurial库秩序。