我正在使用ankhsvn与我的朋友在Visual Studio中的项目上进行协作。
虽然我们不对相同的源文件进行更改,但我们都经常对同一个项目进行更改。
我很难理解如何告诉subversion处理VS在.csproj
和.sln
文件中进行的自动更改。我认为有两种选择:
.csproj
文件,然后每次我在提交之前更新我都会收到冲突,因为我的朋友已经提交给我并对.csproj
文件做了一些更改。.csproj
文件放入忽略列表中,然后我会遇到问题,因为我的项目不会包含我朋友所做的所有更改。因此,无论是两种方式,我都必须解决冲突或解决依赖性问题等。
有没有更简单的方法呢?
感谢。
答案 0 :(得分:4)
根据我的经验,#1是你唯一的选择。由于你们两个都在定期编辑.csproj,并且.csproj的性质是你的两个更改都会发生在文件的同一个区域,所以你会发生冲突。
绝对避免#2。我只能认为你想要这样做是因为你担心错误地解决冲突,并且你发现在VS中使用“添加引用”会更容易。我不这样做是因为.csproj文件中的大多数冲突解决方案(我假设你们都经常添加依赖关系)相当于在TortoiseMerge中使用“在他们之前使用我的”或反之亦然。如果您没有使用合并工具并且正在文本编辑器中进行,我建议您尝试使用TortoiseSVN,这样您就可以轻松地进行合并。
答案 1 :(得分:2)
我相信你的问题是设计的。您不应该排除项目文件。
实际上,这样做的聪明方法是将代码分成多个项目/模块/库。在这种情况下,您的项目文件可能会更改,但由于您在另一个工作文件中工作,这不是问题。所有内容都保存在一个解决方案文件中,只有在添加/删除项目时才会更改。 当然,这意味着您需要在实施之前规划您的软件项目并定义模块,但在做之前思考很少是一个糟糕的选择。
编辑:您可能还想考虑不同的版本控制系统。像mercurial或git这样的东西应该有帮助,因为你只需要拉/合并你需要的更改。
答案 2 :(得分: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年了......