目前我准备用AnkhSvn 与 subversion来做代码管理。
我有一个困惑:
假如原来有一段代码
for(int i = 0;i < count;i++)
{
   GetAsString(_T("name"),i);  //错的,因为GetAsString是从1开始,而不是0开始的。}上面这段代码是有错的---------------
此时,员工A发现后,先执行"update to latest version",然后把代码改成
for(int i = 1;i <= count;i++)
{
   GetAsString(_T("name"),i);  //对的
}同时员工B也发现了,先执行"update to latest version",因为他紧接着A马上也发现了,A的修改此时还没提交,
也就是说B从服务器上更新下来后代码是:
for(int i = 0;i < count;i++)
{
   GetAsString(_T("name"),i);  //错的
}然后B也改代码
for(int i = 0;i < count;i++)
{
   GetAsString(_T("name"),i+1); //对的
}
此时A先提交,然后B提交。A可正常提交,B提交时,提示冲突。
这时B按提示要求,先再"update to latest version"一次,此时变成
for(int i = 1;i <= count;i++)
{
   GetAsString(_T("name"),i+1); //这时又变错了
}
此时SVN并不会出现冲突的符号。于是B直接就commit。
导致了服务器上的代码错误。
-----------------------------------------------------
我用了后,发现SVN怎么会有这么大的漏洞,会不会我操作流程有问题啊

解决方案 »

  1.   

    既然此时已经发现错误了(靠程序员自己的脑子),就不应该继续签入,而是应该立即修改(此时肯定不会再提示冲突,因为检查冲突的算法只是知道这次B修改了i为i+1,这时这一行与其他人手里的版本已经没有冲突了)
      

  2.   

    独占没有必要,那完全把SVN的优势都抹杀了。仔细看代码倒是真的
      

  3.   

    B[update] 之后,会提示有冲突,他应该先修改,测试成功之后,才能[commit]到服务器。
    只能把正确运行,经过测试的代码 commit到服务器。
    养成一个习惯和制度之后,就没有问题了。
      

  4.   

    如果你觉得还是独占更好用,那回到VSS时代吧