SVN Windows 版安装
服务端安装程序
http://tt1253.oss-cn-shenzhen.aliyuncs.com/setup/SVN/Server/Setup-Subversion-1.8.17.msi
下载完成后选择安装路径直接下一步即可。
安装完成后需要把svnserve 安装为 windows 服务
命令 sc create 服务名称 binPath=“svnserve程序路径 --service -r 仓库路径”
安装成功后把服务设置为自动启动,并启动服务。
启动后应是已启动状态
客户端安装程序
安装包
http://tt1253.oss-cn-shenzhen.aliyuncs.com/setup/SVN/Client/TortoiseSVN-1.10.3.28489-x64-svn-1.10.4.msi
中文版语言包
http://tt1253.oss-cn-shenzhen.aliyuncs.com/setup/SVN/Client/LanguagePack_1.10.3.28489-x64-zh_CN.msi
客户端的安装也是非常简单,直接下一步就是了。安装完成后再安装语言包。
在TortoiseSVN文件夹中到找 settings, 在常规设置中可以选择语言。
创建仓库
这里创建仓库时必须创建在安装服务时指定的路径,否则svn将无法找到仓库
svnadmin create G:\Repositories\svntest
将会在 G:\Repositories 目录下生成名为 svntest 的仓库
打开svntest文件夹中的conf文件夹
里面包含svn的配置信息。
常用配置方法请看:
https://blog.csdn.net/qq_27461747/article/details/104917202
passwd中添加一行用户名密码
svnserve 文件中把 19行 20行 27行中的#号删除。如图所示。
Svn 备份 或 迁移
备份/导出
svnadmin dump 仓库目录 > 目标目录
导入/还原
svnadmin load 仓库目录 < 备份文件路径
客户端常用功能
检出
检出是把仓库中的代码下载到本地
在文件夹中右键功能里可以找到SVN检出功能
检出后会将服务器资源下载到本地,并且本地目录受SVN管理。
此处没有文件是因为,创建的仓库中没有提交过任何文件。
.svn是隐藏文件夹。存储的是svn管理的一些内容,此文件夹如果被删除。那么此目录将不受svn管理。
提交
新增的文件需要执行加入命令后再进行提交。修改的文件直接提交即可。 注意: 一般来说,提交之前需要先执行更新。避免代码冲突。
输入刚才服务器中配置的用户名密码,完成提交。
如果出现认证失败,请查看服务器中的svnserve 与 passwd 两份文件是否配置正确。
更新
更新是把服务端中的最新文件下载到本地,如果最新文件中本地未作任何修改,将会直接更新,使用服务端的文件。如果最新文件中本地作出了修改,svn将会把云端文件与本地文件进行合并。如果发生SVN无法正常合并的情况将会产生冲突。
为了演示,我在svntest中新增三份文件123.txt,kkk.txt 与 abc.txt 文件 提交至服务器。 并再检出一份项目至svntest1。
这时我在 svntest 项目中做出如下修改
在svntest1中修改 kkk.txt 与 abc.txt 文件
svntest 先提交, svntest1 进行更新 结果如图所示。
123.txt文件只有 svntest 进行了修改 所以直接更新了。
abc.txt 文件中 svntest 修改了123行 svntest1 修改了456行,SVN可以正确识别合并,把 svntest 与 svntest1的修改都应用了
kkk文件由于 svntest 与 svntest1 同时对同行操作所以 SVN无法判断使用谁的代码,所以产生了冲突。这时候需要解决冲突,否则无法再次提交代码。
解决方法
选中冲突的文件
可以选择 使用他们的 或者 使用我的 来解决冲突。但是可能会造成代码丢失。
最好是使用 编辑冲突来解决。
左侧代码区是服务端中的代码 右侧代码区是本地文件的代码。这两个区域的代码都是无法编辑的。
下端是合并后的代码。把问号删除修改为你想要的代码内容保存,选择解决冲突即可。
除了代码冲突之外还有树冲突。树冲突解决起来比较麻烦。应尽量避免,修改目录后马上进行提交。
SVN其他实用功能
svn 版本浏览器可以查看当前服务端中的代码资源目录,内容 以及版本,还可以进行目录操作。
显示日志 可以查看文件的提交记录,可以查那个用户做出的修改,提交日期以及修改内容。
检查修改 可以查看目前对那些文件进行了修改。
SVN分支
分支的使用各有各的想法,这里参照https://blog.csdn.net/justry_deng/article/details/82259470
来处理分支,新增三个文件夹 trunk,branches,tags。
trunk 用来存放主干
branches 用来存放普通分支
tags 用来存放阶段的版本
分支的创建
这里是从主分支创建分支,也可以使用子分支来创建分支。
将会创建branches/test2的分支。
执行更新后将会得到分支 test2的内容。 可以在此处编辑分支 test2的内容。 各个分支操作互不影响。合并除外。
分支切换
把主分支切换为test2。那么将会把 test2的分支内容更新至本地trunk 目录。注意:执行切换操作时,一定要先提交。否则本地副本修改的内容将会丢失!
切换之后目录即为 test2的分支管理,
也就是说本目录已经与主分支无关了,操作的是test2的子分支。
分支合并
把trunk 切换回主干,选中主干文件夹 执行合并操作, 并对test2分支做出修改后提交。
合并的源输入test2分支路径后,将会把 test2分支修改后的内容更新到 主干。