Visual Studio,svn和合并.csproj和.sln文件

3Da*_*ave 7 svn merge visual-studio

任何人都有成功获得SVN合并已由两个用户编辑的Visual Studio项目(.csproj)或解决方案(.sln)文件?例

  1. 用户A检查项目
  2. 用户B检出同一个项目
  3. 用户A添加文件
  4. 用户A提交更改
  5. 用户B添加文件
  6. 用户B提交更改

在我看来,在步骤(6),svn,Tortoise,Ankh或其他任何应该检测到冲突并自动合并两个项目文件,或者更有可能提示用户B解决冲突.目前,当用户B签入时,我们看到用户A所做的更改已被删除,从而导致错误的构建,部署等缺少在上次签入之前添加的功能.

由于项目文件是XML,为什么这是一个问题?我在这里错过了什么吗?我在这里搜索了档案并用谷歌搜索到了我不能谷歌了,但还没有找到一个好的解决方案.

sbi*_*sbi 32

你认为你如何欺骗SVN执行第6步?你似乎误解了出了什么问题.SVN永远不会从一个不是最新的工作副本提交,因此如果没有用户B先前更新并合并用户A的更改,步骤#6将无法工作.老实说.试试吧.

我想会发生什么呢?

  1. 检查项目.
  2. B检查出同一个项目.
  3. A添加文件.
  4. 提交更改.
  5. B添加了一个文件,但忘记保存项目/解决方案.
  6. B尝试提交更改并获取他应该首先更新的消息.
  7. B更新.
  8. B切换回VS. VS告诉他磁盘上的项目/解决方案发生了变化,并询问他是否想要a)从磁盘重新加载并丢失他的更改b)覆盖磁盘上的版本.
  9. B不明白,不试图理解,认为他的变化很有价值,并选择b),覆盖磁盘上的变化.
  10. B仍然没有尝试理解,因此不会将他在磁盘上的版本与最后一个提交的版本区分开来,从而错过了他覆盖了A的更改.
  11. B签入,覆盖A的更改.

我偶尔会看到这种情况发生,通常是用户B并不真正理解SVN(或CVS',FTM)的工作流程.

所以这里有一些提示:

除非您保存了所有内容,否则不要更新("文件" - >"全部保存";对我来说,这是Ctrl + Shift + S).如果您犯了这个错误并且卡住了,请覆盖磁盘上的更改,然后手动合并丢失的更改.(它可能也可以将项目/解决方案文件更新回N-1版本,然后再次更新为HEAD,以便让SVN执行合并.)

不检查您更改了哪些文件并快速查看差异以查看更改是否符合您的预期.

尽早提交,经常提交.开发人员处理相同代码库的次数越多,就越有可能发生冲突.在不更新的情况下更改工作副本的时间越长,就越有可能发生冲突.由于开发人员的数量通常不在您手中,因此更新频率是您可以用来降低冲突概率的一件事.

  • 这听起来很熟悉.这可能更像是一个培训问题,而不是技术问题.= / (3认同)