【问题标题】:What does it mean when Source Control Explorer shows both branch and merge for a changeset?当源代码管理资源管理器显示变更集的分支和合并时,这意味着什么?
【发布时间】:2011-01-18 11:22:58
【问题描述】:

我试图了解我的代码库的历史,它位于 TFS 2005 中,我遇到了一个变更集,其中所有变更都标记为分支和合并。

Name    Change           Folder
------------------------------------------------
A.cs    merge, branch    $/Root/Solution/Project  

我找不到任何描述添加、编辑、删除、分支、合并、取消删除、编码等各种组合含义的任何内容(尤其是在 MSDN 上)。每个单独使用时都很容易解释,有些像添加和删除一样没有意义,所以我正在寻找有关合法组合及其含义的信息。

【问题讨论】:

    标签: tfs tfs-2005


    【解决方案1】:

    如果文件是在分支操作期间创建的,并且源分支的更改随后被合并到新分支中而没有在任何时候签入,这可能是有意义的。

    【讨论】:

    • 我试过了,Visual Studio 禁止合并到未提交的分支中。
    【解决方案2】:

    Merge 可以与除 Add 之外的任何内容组合。就其本身而言,Merge 仅意味着 (1) 无论发生什么都是调用 Merge 命令的结果 (2) 当您签入时,TFS 将记录适当的合并历史元数据以及更改本身。更改类型列表中的其余操作会准确告诉您正在对目标项应用哪种更改。因此:

    Merge,Branch = 源分支中存在但目标分支不存在的项第一次被复制到目标

    【讨论】:

    • 所以(合并):没有真正的变化,(合并,分支):将文件从源复制到目标,(合并,删除):从目标删除文件,(合并,编辑):更新文件目标与源中的内容,(合并,重命名):重命名目标中的文件,(合并,取消删除):取消删除目标中的文件,(合并,重命名,编辑):重命名目标中的文件并更新其内容
    • 是的,差不多。 Fwiw,有一些时髦的组合只有在 Merge 期间才有可能。如果源项目在目标中不存在,但您决定丢弃候选变更集[或等效地,在它处于挂起合并+分支状态时删除该项目],您最终会得到 (merge,branch,delete)。或者,如果在源和目标中都删除了项目 foo;您取消删除 source\foo,然后删除 source\foo\somechild,然后合并以上所有内容;合并的结果会将 target\foo\somechild 置于 (merge,undelete,delete) 状态。
    • 你知道这可能记录在哪里吗?
    • 我不认为它是,正式的。最接近的是客户端 API 中的 ChangeType 枚举。
    猜你喜欢
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 2011-06-25
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    相关资源
    最近更新 更多