- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近开始使用Team Foundation Server,但在使其按我希望的方式工作时遇到了一些麻烦。
我已经使用Subversion几年了,并且喜欢它的工作方式。我总是在每个项目,主干,标签和分支下设置三个文件夹。
在处理项目时,我所有的代码都位于一个名为“ C:\ dev \ projectname”的文件夹下。使用Subversion(使用switch命令),可以使此“ projectname”文件夹指向中继线或任何分支或标记。
现在,我正在使用TFS(客户端系统),我希望事情以相同的方式工作。我创建了一个包含项目的“ Trunk”文件夹,并将“ Project / Trunk / Website”映射到“ c:\ dev \ Website”。
现在,我想在“ tags”文件夹(位于“ Project / Tags / Version 1.0 / Website”下)下进行发布,并且当我执行branch命令时,TFS给我以下错误:
“ $ Project / tags /版本1.0 /网站不存在适当的映射”
根据我在互联网上可以找到的信息,TFS希望您在项目的根目录(本例中为“ Project”文件夹)中具有到硬盘驱动器的映射,然后将所有源代码保存在主干中,标记和所有分支都下拉到您的硬盘驱动器。这很烂,因为它在硬盘驱动器上需要太多的东西,更糟糕的是,当您在Visual Studio中的解决方案中工作时,您将无法下拉“版本2.0”并将所有项目引用都指向其他版本项目之所以有效,是因为它们都指向主文件夹下的“ trunk”文件夹,而不仅仅是主文件夹本身。
我想做的是在我的硬盘驱动器上有根“ Project / Website”文件夹,并且能够根据我在做什么而使其指向(映射到)标签,分支或主干,而无需修复Visual Studio项目引用。
有想法吗?
最佳答案
首先要了解的是,版本树的TFS模型与您可能习惯的模型不同。它处于光谱的最末端。‡
我已经使用Subversion几年了,并且喜欢它的工作方式。我总是在每个项目,主干,标签和分支下设置三个文件夹。
您认为的“标签,分支和主干”都由TFS中的文件夹表示。 “ trunk”是通过简单添加创建的文件夹,而不是作为另一个文件夹的分支而创建的。 “分支”是通过“分支和合并”操作从系统其他位置的另一个文件夹派生(并与之相关)的文件夹。 TFS本身没有“标签”。最接近的模拟是基于历史版本(通过变更集编号或标签)创建分支。再次,它成为另一个文件夹。
在管理本地工作区时,“一切都在文件夹中”这一概念是个好消息。如果要在标签/分支/主干上创建任意复杂的视图,则在TFS世界中,该任务可以简化为映射本地路径<->服务器路径的非常简单的问题。
当然,这并不意味着您应该这样做。磁盘空间比网络带宽或服务器CPU周期便宜很多。更重要的是:映射越复杂,就越有可能将错误的文件意外提交到错误的位置。我通常的建议是:
为您正在积极工作的每个分支/标记创建一个工作区。
在每个工作空间中,仅创建一个到分支根的递归映射。
如果由于树枝的大小而无法这样做,请避免穿披风。它们不是一个很好的解决方案,因为它们不会与其他人添加的文件夹/重命名保持同步。最好使用到分支根目录的一级映射+到您需要的文件夹的其他递归映射。
如果由于分支中未包含构建时依赖性而无法执行此操作,请感到羞耻:)将最少数量的其他映射添加到公共库中。
确保每个分支内的相对路径相同。 (如果它们发生更改,结构的更改将与您的makefile的更改同步地传播。)
为我称为“维护”任务的内容创建一个额外的工作区。
该策略提供:
资源开销为零。上下文切换时无需重新下载。
精神开销低。要开始在另一个分支上工作,只需从磁盘打开解决方案的另一个副本。或更改“源代码管理资源管理器”中的“工作区”下拉列表。
搞砸的机会很小。因为分支仅限于自己的工作区,所以单击“全部签入”将永远不会提交另一个分支中待处理的更改……或更糟糕的是,您不能无意间对旨在防止“不稳定”的“发布”分支进行更改”版本。
我想做的是在我的硬盘驱动器上有根“ Project / Website”文件夹,并且能够根据我在做什么而使其指向(映射到)标签,分支或主干,而无需修复Visual Studio项目引用。
这也是可能的。如前所述,您只是在为磁盘带宽/ CPU交换磁盘空间。如果您的基础架构支持,那没什么大不了的。我个人会发现它在并行开发方面过于局限,而且更有可能发生搞砸的情况,但这是自然而然的事实,一个在SVN上成长的人可能会有不同的感觉。
步骤如下:
创建一个工作区。将其映射到下一步要使用的分支/标签/主干。
请遵循上述所有其他准则。
当需要更改分支/标签/主干时,请重新打开“工作区”对话框,并将相同的本地文件夹指向新的服务器路径。
获取最新消息。
从TFS 2008开始,客户端在进行这样的更改时将自动提示您运行“获取”。
从TFS 2008 SP1开始,还有一种更好的方法。在提示上单击“否”,然后运行tf get / remap。这只会下载两个分支之间的差异。这可能会节省大量带宽/ CPU,具体取决于文件夹的大小以及它们之间的关联程度。 (实际上,在很小,非常相关或完全不相关的文件夹上可能会占用更多服务器CPU;请使用良好的判断力。尽管如此,它始终严格占用较少的带宽。)
‡在TFS中,当您创建分支时,它在用户看来是全新的文件夹层次结构。换句话说,当您先看存储库时,没有明确的方法可以将“真实”文件/文件夹与分支区分开。坦白说,两者之间并没有太大的区别。 “分支”只是另一项,恰好具有与之关联的> = 1条合并历史记录元数据。很多TFS命令都依赖于上述元数据,您当然可以直接查询它,但是它不会显示在简单的tf目录中。同时,由于每个分支在path space中都占据唯一的位置,这意味着唯一地指定分支的versionspec并不复杂。 $ / path; changeset就足够了,就像其他任何项目一样。
CVS采用相反的方法。分支时,路径不会改变。相反,您要做的是沿另一个维度对版本进行分叉。这使得简单的案例非常容易可视化:只有一棵树。当然,您仅将复杂性转移到其他地方。当您要唯一地指定项目的版本时,仅知道路径和修订号已不再足够。您也需要知道分支。而且,如果您在一个分支而不是另一个分支中重命名文件怎么办?在TFS中,直到合并分支之前,没人会关心。在CVS中,仅查看存储库会引发问题。我敢肯定,您还能想到其他微妙之处-我对它还不够熟悉,无法知道它如何处理每种极端情况。
大多数SCC系统介于这些极端之间。让我们将TFS 2005/2008称为最左端,将CVS称为相对的“右端”。
Subversion基本位于TFS的“左”极。尽管实现方式有很大不同,但由于最终实现了合并跟踪,因此用户对分支的看法几乎相同。 (有人可能会说,在v1.5之前,它离TFS甚至还差一点。分支只是具有低级优化的副本;用户无法查询关系元数据。SourceSafe属于同一类别,如果由于缺少系统范围的版本号而走得更远。)来自SVN世界的用户一旦了解了客户端/服务器工作区模型并重新定义了术语,就不会感到困难。 (SVN在术语上有很多CVS包,例如单词“ tag”;为了公平起见,TFS继承了VSS的一些口头表达,例如,尽管默认情况下被“编辑-合并-提交”,但仍普遍使用“ checkin / checkout”。)
Perforce是TFS右侧的一个级别。它们的基本模型是相同的。它们具有分支规范的其他概念,可以满足一些常见的用户场景-例如,快速了解“哪些文件夹代表分支”,指定不需要完整路径的分支版本规范的快捷方式-但这仅仅是语法糖。
TFS 2010在右边还有两个标记。像Perforce一样,他们创建了一个“分支对象”存储,它们独立于(但映射回)存储库树而存在。每个分支还知道用户定义的分支层次结构内的关系(例如,父,子,无基础)。
我会将ClearCase放置在右侧约2/3的位置。从服务器的角度来看,复杂的分支方案基本上发生在版本空间中。但是,它们具有极为强大的“视图”系统,位于其顶部。结果,用户实际看到的结构可能被操纵为类似于路径空间或某种混合形式。相似级别的可定制性适用于其本地工作空间映射。
大多数其他“企业” SCM大约在右侧的3/4处。 (例如AccuRev,MKS,StarTeam),用户通常可以以多种强大的方式查看资源库+分支树,但无法像CC一样灵活地配置系统本身。这可能是一件好事:)
如前所述,CVS位于最右边。同上它的祖先RCS和SCCS。
对诸如Monotone,BitKeeper及其派生类之类的分布式系统进行分类超出了此答案的范围:)
§完全不需要工作空间即可完成TFS中的几个较新的操作:
创建分支(tf分支/签入-需要2008 SP1)
销毁物品(需要2008年)
其他一些要求映射到工作空间,但不需要下载任何文件:
删除项目
锁定物品
按旧方式创建分支(tf分支/ noget-自2005早期测试版开始可用)
还有一些需要部分映射和/或部分下载:
合并仅需要映射和下载目标路径。
重命名需要同时映射路径和要下载的目标。
取消删除/ newname的工作类似于重命名。
我更喜欢在自己的“维护”工作区中进行此类操作,与我的日常开发隔离。拥有自己的工作区也意味着我可以一口气映射存储库的大部分,而无需实际下载它们。 (相反,在您的“开发”工作区中,最佳做法是运行Get w / o任何限制性路径范围。)正如我已经提到过几次,现在保持本地<->服务器映射相对简单且相对路径保持不变,引用不会中断,文件不会意外提交或提交到错误的位置;每个人通常都比较快乐。
YMMV。
关于svn - TFS文件夹-使它们像Subversion“Trunk/Tags/Branches”一样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1278625/
管理项目时,我可以在团队项目级别编辑权限。 Web 界面允许管理: 团队 TFS 组 但是,我找不到有关这些不同之处的任何指导。根据经验,我希望一个团队成为多个 TFS 组的一部分,但似乎一个团队可以
如何从 http://tfs.visualstudio.com 上托管的 TFS 迁移到本地版本的 TFS?我想用Visual Studio Team Foundation Server Expres
在 Team Foundation (TFS2017) 上,您可以连接到 TFS 实例的构建代理的最大数量是多少? 最佳答案 目前还没有任何官方文档声明 TFS 构建代理数量的限制。也没有得到任何相关
我试图了解 TFS 2008(和 2010,如果它不同)如何存储和传达变更集中一组更改的详细信息。 现在,当我提交一个 Subversion 托管项目时,客户端会将差异发送到服务器。因此,如果我添加了
基本上,我有 2 个构建定义,一个构建和部署一些数据库项目,另一个构建和部署网站。 我想做的是能够构建/部署数据库,如果没有任何错误,则构建和部署网络应用程序。 这个想法是,如果数据库部署由于某种原因
我们有一个 CI 构建服务器进行自动构建,并希望在程序集版本中包含当前的冲刺/迭代编号。是否有环境变量或简单的方法可以在构建过程中获取当前的冲刺编号? TFS On Permise 2015 更新 3
我正在探索在我们的下一个项目中使用 TFS 进行软件过程的可行性。一种需求是能够从 TFS 中的各个链接需求创建需求文档。我目前在 Agile 和 CMMI 中都有模型项目,其中有一组与父子关系相关的
我的公司有一个本地 TFS 2017 实例。我知道如何通过 Web 界面安装和更新扩展程序,但这很乏味。我想知道是否有更快的方法来使用 tfs-cli . 最佳答案 由于某种原因,我花了一段时间才弄清
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 3年前关闭。 Improve thi
似乎没有太多关于团队管理员的文档,但是如果我进入我的团队页面并在左侧添加一个用户作为管理员,这并没有让他们成为项目管理员,只是一个叫做团队管理员。有权限的团队管理员和项目管理员有什么区别? 最佳答案
我们计划从 Tfs 2012 升级到 Tfs 2013。谁能帮助我了解它们之间的流程模板差异?我们将所有三个流程模板用于不同的项目。 最佳答案 变化非常小,除了: 引入投资组合积压。 测试计划和测试套
我们已经成功构建了 TFS 2010 基础架构和第一个使用 Visual Studio 2010 的虚拟机。现在我有一个非常简单的问题。如何将解决方案从我们现有的 TFS 2008 转移到新的 201
我们公司正在使用 Team Foundation Server 2015。是否可以在每个拉取请求中自动添加一个或几个人作为审阅者?作为必需的默认审阅者? 最佳答案 是的,您可以很容易地将默认审阅者添加
通过管理员帐户导航到 TFS 2013 集合的项目页面返回此错误: http://server:8080/tfs/DMS/ProjectX Error The page you are looking
TFS 中等效的拉取请求是什么? 我特别询问跨团队协作,其中有一个团队负责产品,但其他团队可以处理自己的副本并提交“拉取请求”。 所以核心团队仍然拥有产品,但其他团队仍然可以为它做出贡献。 最佳答案
当尝试将项目的较新版本与较旧版本合并时,我得到“该项目已在目标分支中删除”,它给了我三个选项: Restore File And AutoMerge Keep Target Branch Versio
我必须将一个项目恢复到上周的版本。所以我按日期得到了一个特定的版本,但是现在如果我在文件中添加一个空格,它会 check out 并获得最新版本。 我去了工具 -> 选项 -> 源代码控制 -> VS
如何在没有 Visual Studio 的情况下将 VS 项目添加到源代码管理 (TFS)?我还获得了对 tfs 项目的 Web 访问权限,但我没有看到任何上传选项或创建子项目选项(我看到我的主项
我只是想知道是否有一种方法可以分析 TFS,以找出针对特定开发人员的代码覆盖率结果。 假设我想确定我团队中一位开发人员的代码覆盖率统计数据。 最佳答案 它不支持开箱即用。 不要认为它会在 future
我想使用尚未映射到 TFS 中的工作项的 .MPP MS Project 2007 计划,TFS 项目是空的,我的意思是根本没有工作项。我要同步 http://localhost:8080/tfs/这
我是一名优秀的程序员,十分优秀!