TFS如何跨分支合并未签入的文件
昨天晚上单刷噩梦汜水关。毁了2套武器,吃了无数的药和大力丸,耗尽复活币。终于干掉了华雄。
同时也想到了如何将一个分支上暂时不能签入但又需要转移到其它分支上的大量代码妥善转移的方法。
1. 获取文件清单
首先,在vs中打开挂起的更改窗口:视图->其它窗口->挂起的更改
选中要转移的文条件,然后点搁置,填写搁置集名称,然后去掉在本地保留挂起的更改选项,点搁置确认。
注意,此时本地挂起的更改都已经被撤销了。
回到挂起的更改窗口,选择取消搁置,在取消搁置窗口的结果列表中选中刚才的搁置集,并点取消搁置确认。
此时刚才搁置的文件又回到了本地。
然后,打开输出窗口:视图->输出
在显式以下输出中选择源代码管理 – Team Foundation
可以看到一串形如:
取消对 $/project/…/*.* 的更改的搁置
的文件清单,将所有这些清单剪切到你熟悉的文本编辑器,把头尾部分去除,只保留分支内的目录
如橙色部分:
取消对 $/project/Sources-branch-0.0.62/GameEngine/fsm/state.cpp的更改的搁置
将整个清单剪贴备用。
2. 合并代码
获取需要转移的目标分支(建议获取最新版本的代码,避免多次合并)
用Beyond Compare 3比较两个分支目录。
在Beyond Compare中选择File Filters
把剪贴板上的文件清单贴在Include files内
Beyond Compare内选择Show No Orphans,Only Compare Files
此时仅列出所有原本挂起的更改文件。
手动确认和合并你做出的修改。请注意,这里需要格外仔细!
因为是2个不同分支的代码,BeyondCompare列出的不同的地方不仅仅是你要做的修改。
3. 签出目标代码
在目标代码下建立checkout.bat文件,内容如下
call “%VS80COMNTOOLS%vsvars32.bat”
for /F “” %%i in(filelist.txt) do tf checkout %%i
建立filelist.txt,内容是刚才剪贴板的文件清单。
然后双击checkout.bat运行后签出所有清单内的文件。
4. 最后签入
建议你再review一下所有要签入的文件。
谢谢你阅读完整个过程!
kaikai