【问题标题】:How can I always block checkin of a specific file in TFS如何始终阻止签入 TFS 中的特定文件
【发布时间】:2012-04-02 06:34:40
【问题描述】:

我总是对一个文件进行更改,但我不想签入。我希望 TFS 阻止我签入或提交更改。如何配置 TFS 来执行此操作?

详情: 该项目的另一位开发人员签入了一些我更喜欢在本地计算机上注释掉的错误代码。由于他们是客户,因此我更愿意将此作为技术练习而不是政治练习。

【问题讨论】:

    标签: tfs


    【解决方案1】:

    TFS 被低估的功能之一是cloaking。和 SVN 的ignore 一样,隐藏会让你忽略某个文件夹或文件。

    隐藏文件夹

    隐藏文件夹很简单:只需右键单击源代码管理资源管理器中的文件夹并选择Cloak

    隐藏文件

    UI 不会隐藏单个文件,但有时您可能希望隐藏某个文件,例如 app.config。

    1. 转到File > Source Control > Workspaces

    2. 选择您的工作区并点击Edit。

    3. 在工作文件夹下,新建一个状态为Cloaked 的条目,然后输入要隐藏的文件的完整服务器路径。 (例如:$/MyTeamProject/Dev/Src/SomeProject/app.config)


    使用本地工作区 .tfignore 文件(在 TFS 2012、2013、2015 及更高版本中)

    在Local Workspace中,使用你可以使用.tfignore文件(对于Git相当于.gitignore)

    .tfignore file example
     ######################################
    # Ignore .cpp files in the ProjA sub-folder and all its subfolders
    ProjA\*.cpp
    # 
    # Ignore .txt files in this folder 
    \*.txt
    #
    # Ignore .xml files in this folder and all its sub-folders
    *.xml
    #
    # Ignore all files in the Temp sub-folder
    \Temp
    #
    # Do not ignore .dll files in this folder nor in any of its sub-folders
    !*.dll
    

    按权限阻止

    另一种方法是拒绝签入文件 (需要管理权限):

    1. 右键文件>点击Properties>Security

    2. 添加您的用户并在Check In 权限上标记Deny。

    【讨论】:

    • 使用 Windows 资源管理器,我右键单击,转到属性和安全选项卡,但我没有看到“签入”属性。您是否安装了特殊插件?
    • 右键单击源代码管理资源管理器,而不是 Windows 资源管理器。
    • @KMoraz - 我不知道,让我在星期一试一试,看看会发生什么
    • 为什么我在 SCE 项目中的 Cloak 是灰色的?
    • 对我来说是:File > Source Control > Advanced > Workspaces 用于隐藏文件
    【解决方案2】:

    对于 TFS 2012,只需使用 .tfignore 文件。

    当您将忽略的文件添加到本地映射的文件夹中时 工作区,它们不会出现在 Team 的 Pending Changes 页面中 探险家。

    http://msdn.microsoft.com/en-us/library/ms245454.aspx

    【讨论】:

    • 我如何以 !@#$%@ 的名义创建一个名为 ".tfignore" 的文件?这是 Windows 中的非法文件名。
    • @ScottSEA 有几种方法:记事本(另存为类型=所有文件),使用命令提示符重命名(命令ren)等只是不要使用资源管理器。
    • 我发现,至少对我来说,.tfignore 直到签入后才在 VS2013 中工作。我还在 cmd shell 中使用move 重命名它。
    • 您可以将文件命名为“.tfignore”。在 Windows 资源管理器中。注意额外的“。”在末尾。 Explorer 会将文件重命名为“.tfignore”
    【解决方案3】:

    Visual Studio 2013(和 2012)

    选择文件并转到以下位置即可使用此功能:

    File > Source Control > Advanced > Exclude ... from Source Control
    

    【讨论】:

    • 不,此选项在 VS2012 中不可用。
    • 我在 VS 2013.4 中没有看到这个选项
    • 感谢它,请注意不要右键单击文件,而是转到 Visual Studio 窗口左上角的文件菜单。
    • 该选项是上下文相关的。您要排除的文件必须是 Visual Studio 中打开的当前窗口,以便“文件”菜单获得排除该文件的选项。
    【解决方案4】:

    您可以只从源代码管理中排除文件

    1.在解决方案资源管理器中选择文件

    2。转到文件 -> 源代码管理 -> 高级

    就在这里

    【讨论】:

    • 选项“Exclude EndPointConfiguration.config...”在 VS2012 中不可用 - 至少在我的 VS2012 Professional 安装中不可用。
    • 这是VS2012 Pro。它应该在那里。 “EndPointConfiguration.config”只是在解决方案资源管理器中选择的文件的名称。所以应该有一个“从源代码管理中排除 xxxx”。你必须浏览菜单!直接右键文件不可用!
    • 菲利克斯,我已经重试了。我的 VS2012 Professional 安装在菜单选择器 File |源代码管理 |高级:1. 获取-file- 的特定版本 2. 锁定 3. 应用标签 4. 恢复冲突解决 5. 从源代码管理打开 6. 从源代码管理添加项目 7. 工作区 8. 更改源代码管理 9. 刷新状态跨度>
    • 此更改会传播到同一项目中的所有使用用户还是仅传播到本地工作空间?
    • 这个答案与七个月前 Evan Mulawski 发布的答案有何不同?
    【解决方案5】:

    有两种方法。

    1. 您可以在“Pending Changes”窗口中“取消选中”它,它应该会在您下次加载 Visual Studio 时记住这一点。如果您喜欢“全选”并选中/取消选中列表中的项目并且容易出错,这有点麻烦。
    2. 不要“签出”文件,进入资源管理器并自行删除只读属性。然后编辑你想要的位。需要注意的是,TFS 不知道它并且并不总是正确地更新文件。此外,如果您在 VS 中编辑该文件(进行其他更改),它将被“签出”,然后您可能会错误地签入。

    我不喜欢 TFS / VS 2010 中的任何一个选项,所以我实际上避免这样做(当我们使用 SVN 时,我曾经有一个很大的“ignore-on-commit”)。现在我使用的是 VS11 Beta,Excluded 列表完全符合我的要求,我将一些内容移到它上面并保留在那里,并且我可以轻松地在该列表上进行其他更改,而不是签入该文件。

    【讨论】:

      【解决方案6】:

      另一种选择是使用自定义签入策略。您可以build your own 或使用TFS 2010 Power Tools 中的Forbidden Patterns Policy。当然,您需要成为 TFS 管理员才能安装它,并且在您的情况下它可能不是您想要的。此外,任何签入政策都可以被覆盖。

      【讨论】:

        【解决方案7】:

        如果您使用的是“本地”工作区类型,这是 TFS 2012 的新功能 - 您的源代码控制文件根本没有设置为“只读”。但在这种情况下,无论您在哪里编辑它们,TFS 都会将它们视为已更改并包含在待处理的更改中。默认情况下,从待处理的更改中选择“自动排除”这样的选项会很棒。并且仅在需要时才包含它们。

        【讨论】:

          【解决方案8】:

          如果您使用的是 VS2010,则 TFS 永远不会将隐藏文件夹检测为更改。使用此功能。 您不想成为 TFS 一部分的文件夹将其标记为隐藏。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-12-17
            • 1970-01-01
            • 1970-01-01
            • 2014-12-31
            • 2011-06-30
            • 1970-01-01
            相关资源
            最近更新 更多