目前我准备用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怎么会有这么大的漏洞,会不会我操作流程有问题啊
我有一个困惑:
假如原来有一段代码
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怎么会有这么大的漏洞,会不会我操作流程有问题啊
只能把正确运行,经过测试的代码 commit到服务器。
养成一个习惯和制度之后,就没有问题了。