我正在从 TFS 迁移到 GIT。救恩是那么近,却又那么远;)
我有一个包含许多文件夹、主干和分支的项目 P。我有兴趣克隆其中一个树干和相关的分支。
树干以下的所有分支都是树干的分支。没有任何东西被重新定位或重命名。据我所知,所有分支都正确配置了父母。
方法一:用分支克隆
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
这里的日志实际上与上面的相同。当我执行分支初始化时,我看到 git-tfs 搜索分支,然后找到父级,然后分支变更集以上述分支初始化警告结束。
在单独的主干/分支上进行验证 为了测试事物的行为,我在干净的主干上创建了一个类似的场景。在主干 (T) 上提交一些提交,然后在分支 (B) 上提交一些提交,在 B 上提交一些提交,在 T 上提交一些提交,然后将 B 合并到 T,然后在 T 上提交和在 B 上提交(只是为了反映我的产品场景) . 使用 Git TFS 上面的任何一种方法都可以正确克隆 TFS 存储库并管理分支(方法 2 不会以与重新设置主干相同的方式显示合并)。
我的下一步是逐步检查 git-tfs 代码,看看我是否可以解决问题,但考虑到我正在通过 VPN 工作,这很耗时,大约 4000 次提交到代码库中。它需要永远。
我正在寻找关于什么可能会破坏 git tfs 进程的指针。我可以看什么,有什么常见的场景吗?有什么快速调试的方法?