svn -- 检出+提交+更新+冲突

一、项目检出

在你的本地项目文件夹或随便一个地方,右键空白处弹出菜单
选择 SVN检出:

svn -- 检出+提交+更新+冲突_第1张图片

然后,通过从SVN服务端获取的 资源库URL+具体的项目文件夹名
下载相应项目,并可以知道下载项目的保存位置

svn -- 检出+提交+更新+冲突_第2张图片

输入用户名及密码(服务端建立的用户认证与权限)

svn -- 检出+提交+更新+冲突_第3张图片

我的是 wangsng + 123456

因为我的 版本库里面没有文件,所有只出现的 .svn的文件,表示此目录被 svn 管理起来了

svn -- 检出+提交+更新+冲突_第4张图片

svn -- 检出+提交+更新+冲突_第5张图片

把项目下载到本机后,其实就是一个普通的项目文件而已,你可以在里面添加文件、修改文件、删除文件等等。

二、提交修改

(如果发生提交冲突,即两人都提交修改,后提交者由于版本落后会提交失败。
这时可以先把自己的项目备份,然后从服务端下载最新的项目(下面有讲SVN更新),
再把自己的项目覆盖到本地项目文件夹,最后SVN提交即可成功提交)
(SVN不提供历史版本功能,所以项目被覆盖后就找不回来了,所以切记备份。如果需要历史版本的保存功能,推荐使用Git)

我们添加了一个项目的代码到 svn 管理目录

svn -- 检出+提交+更新+冲突_第6张图片

选择svn 提交

svn -- 检出+提交+更新+冲突_第7张图片

提交信息
输入本次提交的版本更新信息(所作修改的注释)、勾选要提交的操作内容,点击 确定,
即可把本机项目提交到SVN服务器资源库,覆盖掉资源库项目从而实现更新。
svn -- 检出+提交+更新+冲突_第8张图片

提交完成

svn -- 检出+提交+更新+冲突_第9张图片

我们的svn 服务端就会有提交的代码了

svn -- 检出+提交+更新+冲突_第10张图片

三、项目更新

如果别人修改了SVN服务端资源库上的项目,你想下载最新的项目,则在 本机项目文件空白处单击鼠标右键,选择 SVN更新 ,即可自动完成下载,并会提示所作的更新有哪些
注意:在原项目文件夹内选择SVN更新的话,会自动覆盖掉原有内容。
建议:先备份,再更新,防止自己本来的项目内容丢失。

模拟用户二:
1、新建工作空间
2、检出代码
3、添加一个文件 1.txt
4、提交修改

回到当前的工作空间,现在工作目录是没有 1.txt 文件的
svn -- 检出+提交+更新+冲突_第11张图片
更新获得 1.txt 文件
svn -- 检出+提交+更新+冲突_第12张图片
svn -- 检出+提交+更新+冲突_第13张图片

四、版本冲突

3.3.1、冲突的发生
假设A、B两个用户,他们分别从svn服务器中检出了test1.txt文件,
此时A、B、服务器三个地方的test1.txt的版本都是13(我测试环境的当前svn赋予的版本号)
。A、B文件的内容如下图(左A右B):
svn -- 检出+提交+更新+冲突_第14张图片

接下来,B用户添加一句话并提交,内容如下:

svn -- 检出+提交+更新+冲突_第15张图片

此时B用户和服务器的test1.txt的版本都变为14,
只有A用户的test1.txt的版本还为13。
接下来A用户添加一句“aa”,然后提交

svn -- 检出+提交+更新+冲突_第16张图片

由于A用户是在13版本上做的修改,而服务器已经是14版本了,所以会提交失败:

svn -- 检出+提交+更新+冲突_第17张图片

第一种方式:提交失败后直接选择revert,省去了解决冲突问题;
第二种方式:提交失败后选择更新文件,这时会有冲突问题。详细介绍如下:
冲突解决方法一(放弃修改)
1、A放弃自己修改的内容,进行Revert(svn还原)操作,使其 1.txt成为 提交前的版本的 最初内容
2、然后update使其 1.txt 成为最新版本,
3、再在14版本上修改内容
4、提交。

1、Revert(svn还原)

svn -- 检出+提交+更新+冲突_第18张图片

2、update使其 1.txt 成为最新版本
svn -- 检出+提交+更新+冲突_第19张图片

3、修改代码

svn -- 检出+提交+更新+冲突_第20张图片
4、提交

svn -- 检出+提交+更新+冲突_第21张图片
冲突解决方法二(直接提交)
因为版本过时,提交失败后。
A用户直接选择更新操作,结果如下图所见

1、提交失败

svn -- 检出+提交+更新+冲突_第22张图片

2、更新代码

svn -- 检出+提交+更新+冲突_第23张图片
svn -- 检出+提交+更新+冲突_第24张图片

3、冲突产生的文件说明
(这里声明下,不要被文件显示的图标所迷惑,这是其他软件对它做了关联导致的,没啥影响)

svn -- 检出+提交+更新+冲突_第25张图片

这里详细说一下产生冲突后的这几个文件,:
1.txt.mine—这个文件是A用户在8版本中做了修改要提交的文件。它的内容是:8版本内容+A用户的修改
1.txt.r8---- 这个文件是A用户最初的8版本的1.txt。它的内容是:8版本内容
1.txt.r9---- 这个文件时svn服务器中 1.txt的最新版本,这里既是B用户提交后的9版本。它的内容是:8版本内容+B用户的修改

1.txt--------由于A用户选择了直接更新,此文件就是svn将 最新版本9 与 A用户的修改 合并后的文件。它的内容如下:

svn -- 检出+提交+更新+冲突_第26张图片

4、解决办法
接下来说一下如何解决。对于源代码文件或其他的纯文本文件,

我们可以将上图的A用户1.txt的内容整理下,使其满足条件,
svn -- 检出+提交+更新+冲突_第27张图片

然后 选择

这时1.txt.mine、 1.txt.r8、 1.text.r9将会消失。

svn -- 检出+提交+更新+冲突_第28张图片
用户A就可以顺利提交了

5、无法解决的
但是,如果1.txt是一个非纯文本文件,比如excel,

这时的1.txt将没法手动合并了,不得不放弃自己的修改。
可以在1.txt上右键选择
svn -- 检出+提交+更新+冲突_第29张图片
消除掉1.txt.mine、1.txt.r8、1.text.r9这三个文件。

此时的1.txt文件是可以提交的,它对应的是服务器的最新版本,即9版本(因为这是svn将服务器最新版本9和A用户修改内容合并后的结果)。
但这是svn帮我们合并的,是不合法的文件。我们可以右键然后选择,svn还原
在这里插入图片描述
然后1.txt就会变成9版本,A用户的修改没有了,A、B、服务器的1.txt都成为了9版本。

你可能感兴趣的:(#,代码管理)