关于SVN的一个小问题,详细见补充
SVN:提交前都说先更新,我问下啊。假如服务器上的文件被A和B都更新了,在同一天内,A添加了java.java文件,并上传致服务器;但同时,B在本地也创建了一个java....
SVN:提交前都说先更新,我问下啊。假如服务器上的文件被A和B都更新了,在同一天内,A添加了java.java文件,并上传致服务器;但同时,B在本地也创建了一个java.java,那此时B应如何做,当B想提交时先更新,那会不会将本地的java.java给覆盖掉呢?是不是B和A应开始商量好,由一个人来创建并上传java.java,另一个不创建,从服务器下载来A的java.java并修改呢?
展开
3个回答
展开全部
经验证,情况是这样的:
如果A增加了java.java并提交,B建立了java.java但还没有进行add操作,这时若B执行update操作,则B本地文件内容不变(update时会提示已合并),但这个文件会被标识为已修改待提交(TortoiseSVN下图标就是红色感叹号)。这时若B进行提交操作,会直接覆盖A的问题,而不产生冲突提示。
这个操作的确是存在隐患。
继续验证:
如果A增加了java.java并提交,B建立了java.java并进行了add操作,这时若B执行update操作,则会报错“无法识别的行结束样式”,update失败,B本地不发生任何改变;若此时B执行commit操作,则报错该文件已存在,commit失败,B本地不发生任何改变。
总结一下,建立新文件后,先执行一下add操作,然后可及时发现是否有人已经提交了同名的新文件。
如果A增加了java.java并提交,B建立了java.java但还没有进行add操作,这时若B执行update操作,则B本地文件内容不变(update时会提示已合并),但这个文件会被标识为已修改待提交(TortoiseSVN下图标就是红色感叹号)。这时若B进行提交操作,会直接覆盖A的问题,而不产生冲突提示。
这个操作的确是存在隐患。
继续验证:
如果A增加了java.java并提交,B建立了java.java并进行了add操作,这时若B执行update操作,则会报错“无法识别的行结束样式”,update失败,B本地不发生任何改变;若此时B执行commit操作,则报错该文件已存在,commit失败,B本地不发生任何改变。
总结一下,建立新文件后,先执行一下add操作,然后可及时发现是否有人已经提交了同名的新文件。
展开全部
你可以用两个working copy试验一下。
我试了下,结果不是很满意:svn并不提示,可能会造成覆盖。
比如A上传了,B更新,但svn不会动B的java.java。这时如果B再次提交,会直接覆盖掉A的java.java。
当然了,双方的修改都不会丢掉,就是麻烦。
这点上没有git做得好,git会提示的。
我试了下,结果不是很满意:svn并不提示,可能会造成覆盖。
比如A上传了,B更新,但svn不会动B的java.java。这时如果B再次提交,会直接覆盖掉A的java.java。
当然了,双方的修改都不会丢掉,就是麻烦。
这点上没有git做得好,git会提示的。
追问
你说更新后,svn不会动B的java.java,那如果这个文件跟A上传的在同一个文件夹下呢?麻烦试下,我这只有一台机器。看会不会冲突
追答
一台机器也照样试,checkout出来两个工作拷贝就是了。
结果在上面,完全一样的路径,不会动B的文件。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sdfsdfdhfgjfxsfdghxbcvhgh
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询