|
|
1
102
我不同意Visual Studio中的Performce集成“糟糕”的说法。相反,我将其定义为“开箱即用的体验不是最佳的”:-。以下各节讨论我对集成的理解以及项目/解决方案设置的建议。
免责声明 :以下部分只是根据我的经验进行的有根据的猜测,但是我在许多项目中使用了多年的技术(每个项目都有多个实验/主干/维护/发布分支,有时甚至有多个解决方案文件,没有问题)。缺点是你不得不这样做 人工 更新项目文件-但是2分钟的投资在项目的生命周期内进行了摊销(IMHO:-)。 VisualStudio在初始解决方案加载期间使用解决方案文件和每个项目文件中的源代码管理绑定信息。然后将该绑定信息存储在 苏先生 文件(假设我们正在使用 name.sln 索 文件标记为 标记,使它们在文件资源管理器中不可见(除非覆盖“隐藏的文件和文件夹”选项)。 如果出现任何错误,重新绑定到源代码管理提供程序的最简单方法是删除相应的 文件并重新打开解决方案。创建suo文件后,更改为<Scc*>元素没有效果。
为什么VisualStudio违反了DRY(不要重复自己)原则?我不知道。我认为这是有历史原因的,并且与被称为“视觉资源安全”的噩梦紧密相连:-)。 如何“正确”设置它?在向Performance添加新的或现有的解决方案/项目时,I 从创建空白解决方案开始(请参阅“源代码控制空白解决方案”部分)。然后,我将项目一个接一个地添加到这个空白解决方案中。根据添加的项目是否已经存在(请参见“源代码管理现有(未绑定)项目”和“源代码管理现有(绑定)项目”部分),或者我需要创建一个新项目(请参见“源代码管理新项目”部分),步骤略有不同。 要向源代码管理添加新的空白解决方案,请执行以下操作:
现在可以测试绑定:
源代码控制新项目
要验证新添加的项目是否已正确绑定,可以执行以下步骤:
源代码管理现有(未绑定)项目
源代码控制现有(绑定)项目
我还包括对您最初问题的回答:
允许您选择要打开的解决方案。之后,解决方案中包含的所有项目将自动同步到head。我发现这项功能在Perforce world中不是很有用,因为在Perforce world中,您无论如何都必须创建一个客户端,而且很可能是从P4V/P4Win/P4同步此客户端,而不是依赖Visual Studio。这在Visual Source安全的世界中是很有用的,在这个世界中,没有视图的概念,您定义了存储库在签出时的位置。
这是VisualStudio的簿记。它是根据每个项目文件中的绑定来确定的(理论上,我猜如果项目文件由于某种原因丢失了绑定信息,它可以从解决方案信息中重建…) 我希望上面的部分能给你一些对我来说非常有效的方法的想法:-)。 |
|
|
2
22
此外,P4SCC在大型解决方案中具有巨大的性能成本,因为它在启动时从源代码管理中检索每个文件的信息,并在整个开发会话中在内存中保持该状态。它以信息自由的形式创造了额外的积垢;vssscc文件,以支持(AFAICT)Perforce不使用的某些SCC功能。 理想的Performce集成如下所示:
我们已经完全摆脱了P4SCC及其奇怪的要求和负担。相反,我们使用 NiftyPerforce |
|
|
3
9
为了保持最新,P4VS插件大约在2012年被重写
|
|
|
4
5
基本上,您进入Visual Studio,工具->选项->源头控制->插件设置,高级按钮。这将打开特定于SCC集成的Perforce配置对话框。切换到“连接”选项卡,并选中标题为“绑定与您的Perforce环境设置匹配的工作区”的单选按钮。这将告诉perforce更喜欢使用P4CONFIG环境变量来确定您所处的环境。P4V中的编辑->下存在相同的对话框;首选项,但仅影响p4v的行为。 如何设置P4CONFIG环境变量在某种程度上取决于您。我喜欢让它们在任何地方都被命名为相同的名称,所以我设置了一个系统范围的环境变量P4CONFIG来查找名为P4CONFIG.cfg的文件。此文件只是一个ini样式的文件,您可以在其中分配其他变量,如P4USER、P4CLIENT、P4HOST等。Perforce将在当前目录和所有父目录中搜索此文件,直到遇到一个。基本上,你把这个文件放在你的最根目录下,你的clientspec映射到你的硬盘上,然后别管它。 这种方法极大地减少了VisualStudio中SCC配置需要的“正确性”数量,以便正常工作。(SAK绑定工作正常等) 如果在第一次从perforce同步代码或将代码同步到完全干净的目录结构后,收到一个对话框,抱怨perforce想要暂时脱机工作或删除绑定,那么仍然需要进行一些编辑。主要是.sln文件本身需要修改,以便它知道sln本身有SCC绑定。要做到这一点,请确保将以下字段放在.sln文件中SccNumberOfProjects的后面。
如果您使用的是P4CONFIG方法,那么所有单独的项目都可以使用默认的“SAK绑定”。修复此问题将允许Perforce完美地从干净的同步中工作,并消除在每个项目目录中生成msscprj.SCC cruft。 |
|
|
5
4
支持重命名文件或将其移动到新文件夹目录 如果使用visualstudiop4插件集成,会很痛苦。不存在提醒P4重命名文件或文件已被移动的内置功能。 问题在于,重命名文件不仅需要更新关联的VS项目文件,而且如果您想保持正确的修订历史记录,还需要将更改通知Performce。
如果您使用持续集成构建过程,并且在最后一步之前的任何时候提交更改,则保证您的构建已中断。
|
|
|
6
3
在对米兰·加迪安(Milan Gardian)非常翔实的答案进行了实验之后,我认为我可以提供一个更简单的解决方案,让它运行得非常好。 正如Weeble所提到的,当其他一切都正确设置时,SAK值可以正常工作,它们通常是默认值(但我认为这取决于它是哪种项目类型)。如果它们没有显示在项目中,只需粘贴在此属性组中。
将这两行添加到SourceCodeControl全局部分的*.sln中。只要项目文件具有SAK值,它们就应该继承解决方案中的名称。
不需要签入*.vssscc、*.vspscc或*.SCC文件(尽管它们将在打开解决方案时生成)。 |
|
|
7
2
非常糟糕。我知道这不是你想要的问题的答案(将来,也许你可以缩小焦点?),但是源代码管理与VisualStudio的集成太糟糕了。原因是他们都必须使用微软糟糕的SCC界面。真可怜!他们将源代码管理信息放在项目文件中!他们为什么要这样做? 只需放弃VisualStudio集成,使用Perforce客户端即可。没有那么多额外的工作。你不能每天花30秒切换到Perforce客户端并从那里签入/签出文件吗? |
|
|
8
1
为了使源代码管理绑定即使在创建新分支时也能正常工作,请遵循严格的层次结构:
每个文件必须正好位于一个.vcproj中。同一目录中可以有多个.vcproj,但如果它们共享文件,则共享文件必须放在各自的.vcproj中。
|
|
|
9
-1
这不是Performce问题,而是Visual Studio问题。对源文件进行修改以允许VisualStudio理解正在使用的SCM工具的荒谬要求是愚蠢的。 简单的答案是“停止使用VisualStudio源代码管理集成”。简直糟透了。即使使用TFS,也很糟糕。 如果希望能够从VisualStudio中检出,只需创建一个自定义工具。只需使用适当的VS变量调用“p4 edit”即可。要还原文件吗?同样的想法…使用适当的变量调用p4 revert。完成。 使用p4v作为源代码编辑器管理您的源代码管理需求(提交、历史记录、差异等)。作为一个SCM接口,它很糟糕。 |