SVN小乌龟TortoiseSVN【自学】:
SVN分为windows版本和linux版本的。
参考于:http://www.runoob.com/svn/svn-install.html和https://www.cnblogs.com/test-myblog/p/4433590.html
SVN(windows):
1、安装SVN(windows)
本目录有一个安装包:Setup-Subversion-1.8.17.msi
先新建一个文件夹,如F:\svn01\
然后双击安装包,一直点next,安装到你指定的路径,如F:\svn01\
安装好之后F:\svn01\的目录里面多了几个目录:
如同linux系统bin里面的命令一样,你需要打开windows里面的终端,也就是cmd(dos),在F:\svn01\的目录里shift+鼠标右键打开cmd。
先把cmd设置一下可以全屏:右键cmd的窗口,属性,
进入到cmd之后,可以使用命令svnserve --version验证安装成功没有。
2、创建版本库
先新建一个文件夹,如F:\svnroot\svnsave01
在F:\svnroot\svnsave01的目录里鼠标右键,
然后退回到svnroot目录,你会发现之前创建的svnsave01目录的图标变成了:
或者使用第二种方法(命令行的方法)去创建版本库:
先创建文件夹:F:\svnroot\
去svn01的bin目录里面打开cmd,输入命令:
(小提示:ctrl+shift+n是新建文件夹,ctrl+n是克隆当前窗口)
svnadmincreate F:\svnroot\svnsave02
用命令行创建版本库图标不会变
3、启动服务
临时启动,不丢到后台:
svnserve -d-r F:\svnroot\svnsave01 --listen-host 0.0.0.0 --listen-port=3690
再打开一个cmd查看一下服务是否正在运行:
netstat –ano| findstr 3690
丢到后台启动并设置开机自启:
sc createsvnserve binPath= "F:\svn01\bin\svnserve.exe --service -rF:\svnroot\svnsave01" displayname= "Subversion" depend= Tcpipstart= auto
(注意等号和值之间要有空格)
执行丢到后台的命令之后,任务管理器里“服务”会出现一个svnserve,可以手动在任务管理器里右键svnserve开启服务,也可以停止服务。或者使用命令启动服务net start svnserve,停止服务命令net stop svnserve
若要卸载任务管理器里面的svnserve服务,则执行sc delete svnserve 即可。
如果开启服务的情况下然后再临时开服务会怎么样?
会有两个3690端口的svnserve服务,但是进程号不一样
如果开启服务的情况下卸载了任务管理器里面的svnserve服务会怎么样?
任务管理器里面的服务暂时不会被卸载掉,而且svnserve服务不会停止,依然还是启动的状态,但是停止掉svnserve服务之后,就会自动卸载了
4、配置用户和权限
权限配置文件是F:\svnroot\svnsave01\conf\svnserve.conf
用notepad++打开,去掉下面三行注释和空格(开头不要留空格):
#anon-access = read
#auth-access = write
#password-db = passwd
保存退出
解释:
anon-access= read表示没通过用户名密码登录的访问只有读的权限,如果改为none则没有用户名密码不能访问(机房的205就是设置none)
auth-access= write表示通过用户名密码登录的有写的权限(当然读的权限也就有了)
password-db= passwd表示可以通过用户名 = 密码 的方式在passwd文件中添加用户
账号密码配置文件是F:\svnroot\svnsave01\conf\passwd
在[users]标签下面直接添加就可以了,用#可以注释,最好写个日期
# 20180614
litao=litao
5、初始化SVN,导入数据import
注意导入成功之后并非真正导入了,你会发现F:\svnroot\svnsave01这个目录变大了10M,因为你导入了刚才的流量平台文件夹到你的版本库里面了,所以才版本库目录svnsave01才会变大,但是不会比“流量平台”这个原文件夹大。原文件夹“流量平台”是17M,你这里版本库目录只变大了10M。
那么刚才import导入的“流量平台”文件夹有什么用呢?下面来揭真晓:
作用一:访问svn能看到导入的东西了
作用二:Checkout拉取
首先新建一个文件夹叫test,然后:
按下这个“OK”会有什么结果呢?
会发现test这个目录图标有一个绿色的勾勾,并且变大了36M,怎么变成了这么大,进去看看
会发现里面有一个.svn的隐藏目录,和linux里面的git一样啊,然后全部是打绿色勾勾的目录,这些目录就是刚才import导入的目录,这就是从版本库里面拉取下来了
6、版本回退和版本提交
鼠标右键空白处,
update(不建议使用)是从SVN服务器上瞬间把最新版本下载到本地来,相当于版本回退到最新的版本,不过版本回退一般不用这个,因为他没有给你确认,而是瞬间就更新了,这样怕把当前的操作给丢失了;
版本回退:
小乌龟TortoiseSVN,Update to revision,版本回退最好的东西,相当于git里面的版本HEAD头标回退,show log显示所有的版本,黑体字是当前的版本
提交版本:
“commit”相当于git里面的提交;
SVN(windows)总结:
会用了之后感觉用处不大,只是感觉这个技术非常牛,非常神奇
SVN(linux)
参考于:http://www.runoob.com/svn/svn-install.html
1、安装svn
svn --version
先查看一下有没有装svn
直接可以用yum安装svn
yum installsubversion
2、创建版本库
先创建目录
mkdir/tmp/svnroot
然后在刚才创建的目录里面生成版本库
svnadmincreate /tmp/svnroot/svnsave01
3、启动服务
svnserve -d-r /tmp/svnroot/svnsave01 --listen-host 0.0.0.0 --listen-port=3690
查看服务是否启动
netstat-tanp|grep 3690
同样可以用windows的win+r运行svn://192.168.1.74来访问linux系统上的svn
4、配置用户和权限
vim /tmp/svnroot/svnsave01/conf/svnserve.conf
去掉下面三行注释和空格(开头不要留空格):
# anon-access= read
#auth-access = write
#password-db = passwd
保存退出
解释:
anon-access= read表示没通过用户名密码登录的访问只有读的权限,如果改为none则没有用户名密码不能访问(机房的205就是设置none)
auth-access= write表示通过用户名密码登录的有写的权限(当然读的权限也就有了)
password-db= passwd表示可以通过用户名 = 密码 的方式在passwd文件中添加用户
账号密码配置文件是/tmp/svnroot/svnsave01/conf/passwd
vim /tmp/svnroot/svnsave01/conf/passwd
在[users]标签下面直接添加就可以了,用#可以注释,最好写个日期
# 20180614
litao=litao
5、初始化SVN,导入数据import
svn import/tmp/litaoDir/pythonTest file:///tmp/svnroot/svnsave01 -m "描述信息"
解释:前面是要导入的东西,后面是版本库的绝对路径,要用file://的格式
扩展:
从版本库导出到当前目录:
svn cofile:///tmp/svnroot/svnsave01 .
拉取Checkout
新建一个空的目录test
mkdir/tmp/litaoDir/test
进入到test目录
cd/tmp/litaoDir/test
拉取下到这个目录里面,从此这个test目录就是svn的一部分了
svncheckout svn://192.168.1.74
6、版本回退和版本提交
cd/tmp/litaoDir/test
echo 3 >3.txt
svn status查看状态
发现
说明刚才创建的3.txt没有提交版本,现在提交咯
先将3.txt添加到svn版本库列表中
svn add3.txt
svn status
添加到svn成功
提交
svn commit-m "add 3.txt"
提交到svn成功
版本回退:
rm -rf3.txt
svn status
svn del3.txt
svn commit-m "del 3.txt"
成功在svn里面删掉了3.txt
查看版本号
svn update首先临时回退到最新的版本
svn log 查看版本号之前一定要先执行上面的命令svn update,不然看不到所有的版本号
版本回退的命令
svn merge-r 5:4 .
解释:从版本5回退到版本4,别忘了后面的点代表当前目录
svn status
此时回退的操作还没有提交到版本库里面
回退的操作提交到版本库
svn commit-m "revover 3.txt"
再次查看所有的版本号
svn update
svn log