ChatGPT解决这个技术问题 Extra ChatGPT

如何忽略 TFS 中的文件/目录以避免它们进入中央源存储库?

tfs

是否可以在 TFS 源代码控制中基于每个项目设置要忽略的文件/文件夹?

例如,我有一个网站,其中包含我不想进入源代码控制的资产文件夹。这些资产由单独的系统维护。另外,我不想将几 GB 的资产放入源代码管理中,但我需要在我的开发机器上提供几个示例,但我也不想检查这些。

如果我在绑定到源代码控制的同时在此网站上工作并刷新树,这些文件将自动再次添加

我想防止这种情况发生。

对于本地工作区,您可以使用 Richard Banks 指出的 .tfignore 文件。要使用 team-Explorerer 中的 Context-Menue 调整此文件,请参阅我的答案。对于 Server-Workspaces,我在评论中提供了一个链接。

R
Richard Banks

如果您使用的是本地工作区 (TFS 2012+),您现在可以使用 .tfignore 文件将本地文件夹和文件排除在签入之外。

如果您将该文件添加到源代码管理,您可以确保团队中的其他人共享相同的排除设置。

MSDN 上的完整详细信息 - http://msdn.microsoft.com/en-us/library/ms245454.aspx#tfignore

对于懒人:

您可以通过在要应用规则的文件夹中放置一个名为 .tfignore 的文本文件来配置忽略哪些类型的文件。 .tfignore 文件的效果是递归的。但是,您可以在子文件夹中创建 .tfignore 文件以覆盖父文件夹中 .tfignore 文件的效果。以下规则适用于 .tfignore 文件: # 开始注释行 * 和 ?支持通配符。除非以 \ 字符为前缀,否则文件规范是递归的。 !否定文件规范(不忽略与模式匹配的文件)

示例文件:

# 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

我试过这样做。唯一被忽略的是 .tfignore 文件的内容:(
我在解决方案级别添加了它,但它不起作用......我是否必须深入到文件的实际位置?根据您的回答,我似乎不需要...而且它是 .tfignore.txt 对吗?
@SerjSagan 该文件只是.tfignore,没有扩展名。
@SerjSagan 我的电脑不允许我创建 .tfignore 所以我创建了 .tfignore. 并且它自己删除了最后一个点..
问题是它只忽略资源,这些资源 1) 在签入前在源代码管理资源管理器窗口中显式删除,2) 在 Pending Changes 窗口中显式排除。例如,如果您打算使用它来忽略包文件夹并依赖 NuGet 包还原,则需要 1)在源代码管理资源管理器中删除包文件夹,然后 2)在 NuGet 包还原过程之后在待更改窗口中将其排除.否则它仍然会签入包文件夹。
C
Community

对于 VS2015 和 VS2017

适用于 TFS(本地)或 VSO(Visual Studio Online - Azure 托管的产品)

NuGet 文档提供了 instructions on how to accomplish this,我刚刚成功地遵循了 Visual Studio 2015 &针对 VSTS(Azure 托管的 TFS)的 Visual Studio 2017。截至 2016 年 11 月 2018 年 8 月,所有内容均已全面更新。

我建议您按照 NuGet 的说明进行操作,但只是回顾一下我所做的事情:

确保您的包文件夹未提交给 TFS。如果是的话,把它从那里弄出来。除非另有说明,否则我们在下面创建的所有其他内容都将放入您的 .sln 文件所在的同一文件夹中(NuGet 的说明对此并不完全清楚)。创建一个 .nuget 文件夹。您可以使用 Windows 资源管理器将其命名为 .nuget。使其成功另存为 .nuget(它会自动删除最后一个句点),但直接尝试将其命名为 .nuget 可能不起作用(您可能会收到错误或更改名称,具体取决于您的 Windows 版本)。或者将目录命名为 nuget,并在命令行提示符下打开父目录。类型。 ren nuget .nuget 在该文件夹内,创建一个 NuGet.config 文件并添加以下内容并保存:

NuGet.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <solution>
        <add key="disableSourceControlIntegration" value="true" />
    </solution>
</configuration>

返回您的 .sln 文件夹并创建一个新文本文件并将其命名为 .tfignore(如果使用 Windows 资源管理器,请使用与上述相同的技巧并将其命名为 .tfignore。)将以下内容放入该文件中:

.tfignore:

# Ignore the NuGet packages folder in the root of the repository.
# If needed, prefix 'packages' with additional folder names if it's 
# not in the same folder as .tfignore.
packages

# include package target files which may be required for msbuild,
# again prefixing the folder name as needed.
!packages/*.targets

保存所有这些,将其提交到 TFS,然后关闭并重新打开 Visual Studio,团队资源管理器不应再将包文件夹标识为待签入。通过 Windows 资源管理器将 .tfignore 文件和 .nuget 文件夹复制/粘贴到我所有的各种解决方案中并提交它们,我不再有试图潜入我的源代码控制存储库的包文件夹!

进一步定制

虽然不是我的,但我发现 this .tfignore template by sirkirby 很方便。我的答案中的示例涵盖了 Nuget packages 文件夹,但此模板包含其他一些内容,并提供了其他示例,如果您希望进一步自定义这些示例,这些示例可能会很有用。


在 VS 2017 - TFS 2015 上关注了这一点。像魅力一样工作。我所有的 Nuget 包都不再显示为挂起的更改。
我只需要打开检测到的更改并将新创建的文件手动添加到待处理的更改中。除了一切正常。
这对我不起作用。 VS 2017 - TFS 2015。我无法签入任何内容。当我尝试时出现以下错误:“ D:\Src\MiniCoreWebAPI\packages\Microsoft.IdentityModel.Protocols.5.2.1\lib\net451\Microsoft.IdentityModel.Protocols .dll:找不到路径的一部分”
我没有签入我的包文件夹,但它已被检测为待处理的更改。应用这些说明后,我必须在包文件夹上“撤消挂起的更改”,然后当我重建和 NuGet 恢复包时一切都很好。
D
Derek Morrison

忽略 Team Foundation Server 中的文件(和文件夹)似乎有点麻烦。我找到了几种方法来做到这一点(使用 TFS / Team Explorer / Visual Studio 2008)。这些方法也适用于网站 ASP 项目类型。

一种方法是将新项目或现有项目添加到项目中(例如,右键单击项目,添加现有项目或从 Windows 资源管理器拖放到解决方案资源管理器中),让 TFS 处理文件或文件夹,然后撤消挂起项目的变化。 TFS 会将它们取消标记为具有待处理的添加更改,并且文件将安静地位于项目中并远离 TFS。

另一种方法是使用 Source Control Explorer 的 Add Items to Folder 命令。这将启动一个小向导,在其中一个步骤中,您可以选择要排除的项目(尽管,我认为您必须使用此方法将至少一个项目添加到 TFS 以便向导让您继续)。

您甚至可以添加禁止模式签入策略(在团队 -> 团队项目设置 -> 源代码控制... -> 签入策略下)以禁止团队中的其他人错误地签入某些资产。


我没有禁止模式政策。对 related question 的回答揭示了从何处获得它。它显然是 TFS Power Tools 的一部分。
我面临类似的问题,您能否提供有关特定文件夹的更多详细信息,而不是使用签入策略签入
哎呀——你是对的,莱夫。它是 TFS 电动工具的一部分。
Imran,不幸的是我换了工作,不再使用 TFS,也无法访问我过去的项目,所以我不确定禁止模式签入策略语法的语法。也许这个问题有帮助? stackoverflow.com/questions/2741412/…
TFS 2010 选择要包含的文件后,您可以从该列表中排除。无法触摸现有文件...
C
Community

对于 TFS 2013:

在 VisualStudio-Team Explorer 中启动,在 PendingChanges 对话框中撤消状态 [add] 的更改,这应该被忽略。

Visual Studio 将再次检测到 Add(s)。单击“检测到:x add(s)”-在排除的更改中

在打开的“Promote Cadidate Changes”-对话框中,您可以使用上下文菜单轻松排除文件和文件夹。选项是:

忽略此项目

按扩展名忽略

按文件名忽略

被 ffolder 忽略(是 ffolder,TFS 2013 Update 4/Visual Studio 2013 Premium Update 4)

不要忘记签入更改后的 .tfignore 文件。

对于 VS 2015/2017:

相同的过程:在 TeamExplorer\Pending Changes 中的“Excluded Changes Tab”中单击 Detected: xxx add(s)

https://i.stack.imgur.com/3R0WD.png

“Promote Candidate Changes”对话框打开,您可以在条目上右键单击上下文菜单。错字现在已修复:-)


似乎找不到那个选项。我在 VS 2015 RC 上。
这仅在您使用本地工作区时才有效,如此处详细描述的那样:msdn.microsoft.com/library/vstudio/…
@Shimmy:VS 2015 RC 中的程序是相同的,仍然是相同的错字。请参阅我更新的答案。但正如 stvn 指出的那样 .tfignore 仅适用于本地工作空间。对于服务器工作区,您必须撤消包含在待处理的签入中,请参阅此处的答案:stackoverflow.com/questions/21887308/…
@Shimmy:你连接到 TFS-Server 2015 了吗?确保您从 VS 中的团队资源管理器开始
qw1564 我很确定,当第一次问这个问题时,不可能是gui-way。但现在,这是我会选择的答案。感谢您的信用!
B
Bharat

我找到了像 SVN 一样忽略 TFS 中文件的完美方法。首先,选择您要忽略的文件(例如 Web.config)。现在转到菜单选项卡并选择:

文件源代码管理 > 高级 > 从源代码管理中排除 web.config

......和繁荣;您的文件被永久排除在源代码管理之外。


这对我在 TFS 2010 上为代码生成的文件工作。谢谢!
这实际上有效,.tfignore 对我不起作用。万分感谢
我在 VS 2018 中没有这个选项
N
NotMe

我将假设您正在使用网站项目。这些会自动爬取他们的项目目录并将所有内容都放入源代码管理中。没有办法阻止他们。

但是,不要绝望。 Web 应用程序项目不会表现出这种奇怪且相当出乎意料的(恕我直言:白痴)行为。 WAP 是 VS2005 的插件,直接与 VS2008 一起提供。

作为将项目更改为 WAP 的替代方法,您可以考虑将 Assets 文件夹从源代码控制中移出并移到 TFS 文档库中。仅当项目本身不直接使用资产文件时才这样做。


是的,你的假设是正确的。我以为会是这样,只是想加倍确定我没有错过任何东西。

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅