【发布时间】:2015-02-10 05:23:48
【问题描述】:
我正在从 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 分支 --init --all
这里的日志实际上与上面的相同。当我执行分支初始化时,我看到 git-tfs 搜索分支,然后找到父级,然后分支变更集以上述分支初始化警告结束。
在单独的主干/分支上进行验证 为了测试事物的行为,我在干净的树干上创建了一个类似的场景。在主干 (T) 上进行一些提交,然后在分支 (B) 上进行一些提交,在 B 上进行一些提交,在 T 上进行一些提交,然后将 B 合并到 T,然后在 T 上提交和在 B 上提交(只是为了反映我的产品场景) .使用 Git TFS 上面的任何一种方法都可以正确克隆 TFS 存储库并管理分支(方法 2 不会以与必须重新设置主干相同的方式显示合并)。
我的下一步是逐步检查 git-tfs 代码,看看我是否可以解决问题,但考虑到我在 VPN 上工作,这很耗时,大约 4000 次提交到代码库中。这需要很长时间。
我正在寻找关于什么可能会破坏 git tfs 进程的指针。我可以看什么,有什么常见的场景吗?有什么方法可以快速调试?
【问题讨论】: