2012-05-14 143 views
0

我在VS 2010快速项目中使用TotoiseSVN客户端和Assembla后端。我们遇到了VS文件夹(或过滤器)丢失和文件有时未添加到项目的问题。我注意到,当我提交.vcxproj和.vcxproj.filters文件时,从不检查,即使它们应该改变。所以我手动检查他们,并告诉其他人,以及他们提交时。TortoiseSVN和Visual Studio Express 2010

如果团队成员A签出,只会更改一些代码,而团队成员B签出项目并将文件添加到项目中,则会导致问题。如果团队成员B然后提交BEFORE团队成员A,则团队成员A的项目文件没有添加新文件团队成员B,所以现在他的项目将覆盖团队成员B签入的项目文件,现在新添加的文件不在该项目。

除了有惊人的协调之外,我们该如何解决这个问题?

回答

1

CMake是完美的。

如果您还没有遇到CMake,它可以让您创建整个项目的构建文件在一个单独的目录中的源文件,完全不在svn之外。

存储库根目录中的单个CMakeLists.txt文件将替换当前的所有.vcxproj和.filters文件。

+0

所以这基本上是SVN的标准问题?我不是一个很棒的人,这就是为什么我喜欢VS的项目布局。即使源码控制代码是VS的插件,我仍然认为这可能是一个问题,但我似乎在工作中似乎没有TFS问题。 – user441521

+0

我认为这是任何vcs的常见问题。为了解决vcs冲突,你必须在开发人员之间进行一定程度的交互,但是从vcs中移除构建文件有助于避免其中一些问题摆在首位。我也不是一个人,但CMake语法相对简单,文档很好,也许最重要的是,邮件列表几乎总是有用且快速。 – Fraser

+0

这是有效的,所以我会接受它。我已经发布在Assembla论坛上,他们表示我们应该在提交之前始终进行更新以避免此问题。感谢您的替代想法。 – user441521

1

我怀疑这里可能发生的事情是开发人员在向他们添加新文件时没有保存项目文件。 VS2008在默认情况下这样做了,但我认为在VS2010中它们不会被保存,除非您明确执行了文件 - >全部保存。因此这意味着变更没有被执行。一旦你的开发者在进行提交之前养成了保存项目文件的习惯,那么SVN将在99%的时间内为你处理所有的合并。剩下的1%时间是有人对项目文件进行了一些更重大的重组,或者有两个人对构建设置进行了相互冲突的更改。在这些情况下,您必须亲自解决。

SVN永远不会用另一个人覆盖一个人的变化,它总会尝试合并。因此,如果您遇到此问题,则表示某人以某种方式回滚了其他人的更改,或者他们没有在Visual Studio中设置为在外部更改时重新加载文件的选项:Tools -> Options -> Documents -> Detect when file is changed outside the environment

解决这个问题的一个有效方法是建立一个简单的构建服务器,例如Jenkins,它会在有一些校验之后定期启动构建。如果构建失败,那么登录的人会收到一封邮件,告诉他们他们破坏了构建。您也可以使用显示器来显示build status,这使得整个团队更容易看到破损版本,并希望每个人都能保持修复版本。

相关问题