zoukankan      html  css  js  c++  java
  • diff/merge configuration in Team Foundation

    One of the extensibility points we have in Team Foundation V1 is that you can configure any other diff and merge tools you want.  The purpose of this article is to start collecting the most common ones we know or heard about in a central place so people don't have to figure these out on their own.  This UI is available via tools -> options -> source control -> visual studio team foundation server -> "configure user tools" button or via the command-line with "tf diff /configure",Like This:

    For additional background, try to remember that there are 2 operations that both involve "merge", so we on the TFVC team have tried to use 2 different terms to help clarify which operation is being talked about. 

    First, there is "tree merge", which you do via the Merge Wizard in the UI or via the "tf merge" command from the command-line.  This operation brings over changesets (or parts of them) from one branch into another (or, in the case of /discard, communicates that you don't want them brought over).  Many times those changes will just "come over" - the target will have the changes pended on them and you'll be free to check them in with no manual intervention needed.

    Second is "content merge", the operation where you take changes inside an individual file and merge them together to make a final output.  This is typically needed when the changes are such that they won't automatically merge together (2 users both changing the same line of a file, for instance), but that's not a requirement.

    With this in mind, try to remember that what you're really configuring here is diff and "content merge" tools - the "tree merge" operations are done by TF, the extensibility here is the tool being used for content merging individual files.

    We use the SourceSafe-style syntax for argument passing.  We don't cover this on our doc page about configuring these diff tools, but these are what the argument parameters mean.  Note that we're already adding double-quotes around the parameters (since most of the time, there's at least one temp file involved, at the path to that typically has spaces in it), so you typically don't need to add your own quoting.

    • %1 = Original file (in diff, the pre-changes file, in merge, the "server" or "theirs" file, the file that is the base file after "their" changes were applied)
    • %2 = Modified file (in diff, the post-changes file, in merge the "yours" file - the base file with "your" changes applied)
    • %3 = Base file (in the 3-way merge operation, the file which both "theirs" and "yours" are derived from - the common ancestor.  This doesn't mean it's the version the changes were based from, since this may be a cherry-pick merge)
    • %4 = Merged file (The output file for the merge operation - the filename that the merge tool should write to)
    • %5 = Diff options (any additional command-line options you want to pass to your diff tool - this comes into play only when using "tf diff /options" from the command-line)
    • %6 = Original file label (The label for the %1 file)
    • %7 = Modified file label (The label for the %2 file)
    • %8 = Base file label (The label for the %3 file)
    • %9 = Merged file label (The label for the %4 file)

    Here are the values we've come up with for various tools. If you have additions/corrections, please email me: jmanning at microsoft.com.   I'm keeping these as separate tables since you typically think about configuring either one or the other at a given time.

    Compare tools

    ProductCommandArguments
    TFS default diffmerge.exe %1 %2 %6 %7 %5 /ignorespace
    WinDiff windiff.exe %1 %2
    DiffDoc (for Word files) DiffDoc.exe /M%1 /S%2
    WinMerge winmerge.exe /ub /dl %6 /dr %7 %1 %2
    Beyond Compare bc2.exe %1 %2 /title1=%6 /title2=%7
    KDiff3 kdiff3.exe %1 --fname %6 %2 --fname %7
    Araxis compare.exe /wait /2 /title1:%6 /title2:%7 %1 %2
    Compare It! Wincmp3.exe %1 /=%6 %2 /=%7
    SourceGear DiffMerge DiffMerge.exe /title1=%6 /title2=%7 %1 %2
    Beyond Compare 3 BComp.exe %1 %2 /title1=%6 /title2=%7
    TortoiseMerge TortoiseMerge.exe /base:%1 /mine:%2 /basename:%6 /minename:%7
    Visual SlickEdit winvsdiff.exe %1 %2

    Merge tools

    ProductCommandArguments
    TFS default diffmerge.exe /merge %1 %2 %3 %4 %6 %7
    KDiff3 kdiff3.exe %3 --fname %8 %2 --fname %7 %1 --fname %6 -o %4
    Visual SourceSafe ssexp.exe /merge %1 %2 %3 %4 %6 %7
    Araxis compare.exe /wait /swap /a3 /3 /title1:%6 /title2:%7 /title3:%8 %1 %2 %3 %4
    Beyond Compare (2-way merge) bc2.exe %1 %2 /savetarget=%4 /title1=%6 /title2=%7
    WinMerge (2-way merge) winmerge.exe /ub /dl %6 /dr %7 %1 %2 %4
    Guiffy guiffy.exe -s -h1%6 -h2%7 -hm%9 %1 %2 %3 %4
    Ellie Computing guimerge.exe --mode=merge3 %3 %1 %2 --to=%4 --title0=%8 --title1=%6 --title2=%7 --to-title=%9
    SourceGear DiffMerge DiffMerge.exe /title1=%6 /title2=%8 /title3=%7 /result=%4 %1 %3 %2
    Beyond Compare 3 BComp.exe %1 %2 %3 %4 /title1=%6 /title2=%7 /title3=%8 /title4=%9
    TortoiseMerge TortoiseMerge.exe /base:%3 /mine:%2 /theirs:%1 /basename:%8 /minename:%7 /theirsname:%6 /merged:%4 /mergedname:%9
    Visual SlickEdit winvsmerge.exe %3 %1 %2 %4
     
     
    原文转载自MSDN Blog,有增改。
     

    Lionden 2014年12月25日

    E-mail:hsdlionden@hotmail.com

    转载请注明原文地址和博客园Liondenhttp://www.cnblogs.com/lionden/

  • 相关阅读:
    verilog中的function用法与例子
    HDMI IP学习笔记
    include使用中注意的问题
    PCIE学习
    HDMI学习
    (转)modelsim10.0C编译ISE14.7的xilinx库(xilinx ip核)
    2014年七月华为校招机试题目--最难的一道, 呵呵!
    欧拉函数
    素数高效率筛选法
    树-二叉树的编号
  • 原文地址:https://www.cnblogs.com/lionden/p/diff-merge-configuration-in-team-foundation-common-command-and-argument-values.html
Copyright © 2011-2022 走看看