我正在从TFS迁移到GIT。拯救是如此接近,但到目前为止;)
我有一个包含许多文件夹,中继和分支的Project P.我有兴趣克隆其中一个中继线和相关分支。
行李箱下方的所有分支都是行李箱的分支。没有任何东西被重新命名或重命名。所有分支都根据我的意见正确配置了父母。
方法1:使用分支克隆
git tfs clone [TFS URL] $ / [Path] / [To] / [Trunk] repo --with-branches --debug --resumable --workspace =“repo-ws”
当遇到第一个合并变更集时,git tfs会查找其他分支,确认它找到的每个分支的父项(所有这些看起来都很好)并正确识别分支提交。我看到'changeset x fetched'然后进程退出并带有警告和无法获取的分支列表(包括第一个合并变更集中涉及的分支)
日志
C6345 = 01a40cfde6632218d5b95f3fed494b3c9913f74b
GC Countdown: 190
Looking for changeset 6346 in git repository...
=> Commit not found!
Looking for changeset 6346 in git repository...
Tfs branches found:
- $/[Team Project]/[The Branch]
Looking to find branch '$/[Team Project]/[The Branch]' in all TFS branches...
Looking for all branches...
Found parent branch : $/[Team Project]/[The Trunk]
Found C5051 on branch $/[Team Project]/[The Branch]
- 其他分支登录 -
=> Working on TFS branch : $/[Team Project]/[The Branch]
Looking for changeset 5051 in git repository...
- 其他分支登录 -
Fetching remote :default
Try fetching changesets...
info: refs/remotes/tfs/default: Getting changesets from 6346 to current ...
Looking for changeset 6346 in git repository...
Looking for changeset 6346 in git repository...
Changeset fetched!
- gc登录 -
warning: Some Tfs branches could not have been initialized:
- $/[Team Project]/[The Branch]
- 其他分支登录 -
流程退出此处引用问题461
方法2:克隆然后初始化所有分支 git tfs clone [TFS URL] $ / [Path] / [To] / [Trunk] repo --debug --resumable --workspace =“repo-ws” cd repo&& git tfs branch --init --all
此处的日志实际上与上述相同。当我执行分支init时,我看到git-tfs搜索分支,然后查找父节点,然后分支变更集完成上面的分支init警告。
在单独的主干/分支机构上进行验证 为了测试自己的行为,我在干净的主干上创建了一个类似的场景。在trunk(T)然后分支(B)上提交一些提交,在B上提交一些提交,在T上提交一些提交,然后将B合并到T,然后在T上提交并在B上提交(仅用于镜像我的prod方案) 。使用上面的任何一种方法,Git TFS都能正确克隆TFS存储并管理分支(方法2不会以与必须重新绑定主干相同的方式显示合并)。
我的下一步是通过git-tfs代码来看看我是否可以解决这个问题,但鉴于我正在通过VPN工作,大约4000次提交到代码库中,这是一个耗时的工作。这需要永远。
我正在寻找可能会对git tfs进程造成污染的指针。我能看到什么,常见的场景?有什么方法可以快速调试吗?
答案 0 :(得分:1)
从源代码构建最新解决了这个特殊问题。自上次发布以来已经提交了许多提交(0.20)。