dingdong111 2008-7-8 19:03
SVN会不会丢代码呀
::em71::
问题详述:
我的两个同事A和B,都从svn服务器上下载了同一版本的代码
同事A 在12:00在一个文件中添加了几行代码,上传了。SVN上的版本也进行了更新
同事B在下午3点也在这个文件中添加了几行代码(不同位置),上传时报冲突,然后用updata同步服务器中的文件,在同步后的文件里从新添加代码,然后上传;
结果同事C在第二天修改这同一个文件时,发现同事A添加的代码不见了,同事C用的是最新版本,
请高手看看操作顺序是否有问题,是人为操作出了问题,还是SVN本身的bug?
小妹先谢过!
[[i] 本帖最后由 dingdong111 于 2008-7-9 15:38 编辑 [/i]]
千寻 2008-7-8 22:37
出现该问题的关键在同事B的操作
“同事B在下午3点也在这个文件中添加了几行代码(不同位置),上传时报冲突,然后用updata同步服务器中的文件,在同步后的文件里从新添加代码,然后上传;”
上传报告冲突后,UPDATE服务器中的文件,因为此时工作区已经做了修改,即使UPDATE服务器的版本也不会覆盖工作区的文件,只会另外产生冲突文件,因此同事A的修改在UPDATE后的文件里还是没有的,因此即使重新修改,仍然不是在同事A产生的版本上修改。所以最后同事A的修改丢掉了。
dingdong111 2008-7-9 08:48
还是不太明白
updata后不是会同步到服务器里的最新版本么。怎末会只有冲突文件。
另外出现问题后,我和一位同事还做了试验,我们的代码在updata后是可以合并的(不是修改同一行)
没有出现丢代码情况。
千寻 2008-7-9 09:47
我特地也作了个试验,不知道是不是跟你的操作步骤一样。
环境:subversion1.2+tsvn1.4.5
两个用户test1,test2均update了test.c的r5035修订版。
test1增加了一行:add by test1 8:58,并提交产生r5036版;
test2未update,在工作空间(r5035)版上增加了一行:add by test2 9:03,commit失败提示:Out-of-date错误(如果工作空间不是服务器的最新版本,修改后提交都会提示这个错误);
test2执行update操作,因为工作空间文件已经修改,并且服务器上的文件已经被test1修改(冲突就是这样产生的,两个人同时对一个文件进行修改),更新后的目录多产生了三个文件:test.c.mine(工作区文件),test.c.r5035(修改前工作区版本),test.c.t5036(服务器最新修订版本),而已有的test.c的确进行了合并,内容如下:
add by admin 8:55
<<<<<<< .mine
add by test2 9:03
=======
add by test1 8:58
>>>>>>> .r5036
如果B是对这个test.c文件进行修改,并删除那三个冲突文件再提交(如果不删除提交失败),那结果是正确的。
[[i] 本帖最后由 千寻 于 2008-7-9 09:49 编辑 [/i]]
dingdong111 2008-7-9 15:37
已经找到原因了
后来经过仔细询问,原来B传的时候操作有问题
他同步以后,又将自己原来的文件覆盖了,所以A修改的都没有了
谢谢你给我解答,叫我更深的理解了SVN的使用!