2

我正在使用 ankhsvn 与我的朋友在 Visual Studio 中的一个项目上进行协作。

尽管我们没有对相同的源文件进行更改,但我们俩都经常对同一个项目进行更改。

我很难理解如何告诉颠覆来处理 VS 在.csproj.sln文件中所做的自动更改。正如我所看到的,我有两个选择:

  1. 在常规版本控制下包含该.csproj文件,然后每次我在提交之前更新我都会遇到冲突,因为我的朋友在我之前提交并对.csproj文件进行了一些更改。
  2. .csproj文件放在忽略列表中,然后我会遇到问题,因为我的项目不会包含我朋友所做的所有更改。

因此,在这两种方式中,我都必须解决冲突或解决依赖问题等。

有没有更简单的方法来做到这一点?

谢谢。

4

3 回答 3

4

根据我的经验,#1 是您唯一的选择。由于你们俩都在定期编辑 .csproj,而 .csproj 的性质是您的两个更改都将始终发生在文件的同一区域中,因此您将遇到冲突。

绝对避免#2。我只能认为你想这样做是因为你担心错误地解决冲突,并且你发现在 VS 中使用“添加引用”会更容易。我不会这样做,因为 .csproj 文件中的大多数冲突解决方案(我假设你们都定期添加依赖项)相当于在 TortoiseMerge 中使用“在他们之前使用我的”,反之亦然。如果您没有使用合并工具,而是在文本编辑器中进行操作,我建议您尝试 TortoiseSVN,这样您就可以轻松地进行合并。

于 2012-04-25T13:17:32.770 回答
2

我相信您的问题是设计使然。您不应排除项目文件。

实际上,这样做的聪明方法是将您的代码分成多个项目/模块/库。在这种情况下,您的项目文件可能会更改,但由于您在不同的文件中工作,所以这不是问题。一切都保存在一个解决方案文件中,只有在您添加/删除项目时才会更改。当然,这意味着您需要在实施之前规划您的软件项目并定义模块,但三思而后行很少是一个糟糕的选择。

编辑:您可能还想考虑一个不同的版本控制系统。像 mercurial 或 git 这样的东西应该会有所帮助,因为您只提取/合并您需要的更改。

于 2012-04-25T13:19:16.047 回答
0

我想对在 svn 下处理 .sln 和 .csproj 文件提出一个快速建议。

首先完全更新您的项目。

寻找一种锁定机制,您可以在其中获得对文件的锁定,并且没有其他人可以提交对它的更改。如果您像我一样使用 TortoiseSVN,请参阅https://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-locking.html

现在快速正常添加文件(将它们添加到文件树中并告诉项目包含它)。

然后将新文件连同已编辑的 .sln 和 .csproj 文件一起提交。

如果你的 svn 在提交后没有释放锁,现在释放它。

现在你应该清楚了。您知道解决方案和项目文件适合您。但是,如果您的朋友在更新为新的 .sln 或 .csproj 之前编辑了 .sln 或 .csproj,则它们可能不适用于您的朋友。在这种情况下,他或她可能不得不删除他们的 .sln 或 .csproj,加载您的,然后处理其余的。(我不知道他们是否必须再次将他们的文件添加到解决方案或项目中,或者 Visual Studio 是否会为他们这样做。)

请注意,您可以添加空文件,以便项目知道它们并提交此过程。这将很快,因此其他人不太可能同时进行编辑。之后您始终可以正常编辑文件。如果你还没有写任何东西依赖它,它不应该需要内容。如果文件需要一些内容以免破坏解决方案,请考虑为文件提供一些您稍后将替换的有效内容。

如果有人有其他建议,我很想听听。然而,这篇文章现在已经有 3 年了......

于 2016-01-06T18:55:49.577 回答