集中式版本控制工具svn
图形化界面文档下载
因为 Git 是分布式的,所以 Git 支持离线工作,在本地可以进行很多操作,而 SVN 必须联网才能正常工作。
1. SVN下载(集中式版本控制工具)
SVN属于Apache,先进apache官网找到对应软件;再进去选择二进制然后选择对应操作系统,再下载需要的,此次下载的为命令行和可视化工具。
2. 验证是否安装完成(二进制的直接解压即可使用)
注意:解压后注册信息可删除
2.1 使用cmd进入svn/bin下输入:svn -h
2.2将bin添加系统变量后可以在任意地方打开此运行程序
3. SVN命令 3.1 SVN管理员命令
svnadmin help 查看所有管理员命令
svnadmin –version 查看版本号svnadmin help create 创建仓库
svnadmin create 创建SVN版本仓库,即就是根仓库(SVN仓库分为:顶层仓库与根仓库)
注意:该命令创建仓库时顶层仓库必须是存在的其不会自动创建;说明我们需要先手动创建好顶层仓库再使用命令行创建根仓库;根仓库目录是否存在均可以使用此命令创建若根目录存在则提升为根仓库不存在就创建。
3.2 SVN服务端命令
svnserve -h :查看服务端所有命令
svnserve -d 用于开启DOS系统下的SVN服务(指开放svn服务端的顶层仓库允许客户端访问svn服务器下的各个根仓库)
Svn服务默认端口3690 可以在开启服务后通过netstat -a查看当前网络连接状态访问方式:svn://localhost:3690/ E:/svn/Apache-Subversion-1.14.1/repository/study'注意:此访问方式因为暴露了顶层仓库的决定路径不安全,使用svnserve -r指定默认的SVN顶层仓库的路径,一旦指定那么客户端在使用svn时直接给出根仓库名即可。'
访问方式变为:svn://localhost:3690/study将SVN服务注册开机自启动的win服务步骤1:使用管理员命令行窗口运行
注意:window10出现此错误后使用.\sc.exe即可。
步骤2:创建系统服务
>sc create SVNServer binpath="E:\svn\Apache-Subversion-1.14.1\bin\svnserve.exe --service -r E:\svn\Apache-Subversion-1.14.1\repository" start=auto deptend=Tcpipsc:serve create(创建服务);binpath:二进制路径;--service:win服务控制器;-r:指定顶层仓库;deptend:依赖的协议。
启动系统服务:既可以图形化操作也可以使用命令net start SVNServer
步骤3:重启服务需要先停止再启动;net stop SVNServer
步骤4:删除服务需要先停止再删除;net stop SVNServer 然后 .\sc.exe delete SVNServer
3.3 SVN客户端命令
svn checkout:创建客户端指定目录与服务端指定根仓库间的连接关系,一个客户端一般情况下只需要检出一次。客户端指定的目录学名为:working copy通常称为客户端连接目录。
3.3.1基于顶层仓库的checkout
sc create SVNServer binpath="E:\svn\Apache-Subversion-1.14.1\bin\svnserve.exe --service -r E:\svn\Apache-Subversion-1.14.1\repository" start=auto deptend=Tcpip
执行此命令是在任意路径下执行的;执行效果就是在group/aa下出现隐藏目录.svn
若当前执行命令的目录为working copy目录,则运行以下命令结果会在working copy 中出现根仓库目录,而根目录中会存在.svn隐藏目录。
3.3.2基于根仓库的checkout
sc create SVNServer binpath="E:\svn\Apache-Subversion-1.14.1\bin\svnserve.exe --service -r E:\svn\Apache-Subversion-1.14.1\repository\study" start=auto deptend=Tcpip
无论是在任意运行checkout还是在working copy中运行checkout;其运行效果相同;都是在working copy目录中产生一个.svn隐藏目录。
服务端修改客户端权限
去掉前面注释的#即可放开权限。Svn add:当一个文件/目录放在working copy中时,SVN并不会对其管理,若要管理必须使用add添加到svn管理中。注意:被添加的文件/目录必须存在于working copy中。Add命令作用是将该文件或目录交与svn管理,所以一个文件或目录一般只能执行一次add命令,add命令执行与是否修改过文件没有关系。在任意路径下执行:(需要加绝对路径)
在工作路径下执行
b.txt已修改
Svn commit:将客户端working copy中所有对文件的操作提交到服务端。-m参数必须加,提交后在服务端无法直接查看;文件或目录只要改变就可以提交。Svn update:将当前客户端中的文件。目录更新到与svn服务端一致。Svn delete:删除指定的文件或目录;但只是删除客户端自己的并不影响服务端文件/目录;只有使用commit才可以改变svn服务端文件/目录。Svn revert:恢复客户端被删除的文件/目录;只能一个一个恢复。若服务端没有删除可以使用update即可恢复。若是commit则该命令失效。Svn list:列出当前目录下的所有文件与目录。Svn info:列出客户端与服务端的相关信息。
4. 客户端图标不显示
在注册表搜索或者直接打开如下:
'除第一外给所有的命名最前面加相同空格即可,然后重启电脑。'
图形化界面
导入import:在要导入内容所在目录上右击或在要导入内容中空白处右击。导出也是一样的,指示导出目录下的内容不会导出所在导出目录。为用户设置权限之服务端设置
配置如下:"可执行程序路径" ^ commit-notification "版本库路径" -r %2 ^ --from 发件人的地址 --to 收件人地址 ^ --smtp-server 邮件服务器 ^ --smtp-port 邮件服务器端口 ^ --smtp-user 发件人帐号 ^ --smtp-password 发件人授权码 ^ --encoding utf-8
二、遇到的坑:'1、^是转义字符,将特殊符号转义为普通字符,转义字符前面是有空格的;2、 根据post-commit.tmpl(版本库的hooks目录下)中%1表示的是版本库,%2表示的是版本号;3、VisualSVNServerHooks: E020014: 服务器拒绝了发件人地址。服务器响应为: 530 Must issue a STARTTLS command first.解决方法:--smtp-port 邮件服务器端口:是用于发送邮件的端口。方法1:25端口是SMTP服务所开放的,用于发送邮件;方法2:465,995等端口是SMTPS协议服务开放的,用于发送邮件,这是SMTP协议基于SSL安全协议之上的一种变种协议;(增加—smtp-ssl)4、 VisualSVNServerHooks: E020014: 邮件无法发送到 SMTP 服务器。传输错误代码为 0x80040217。服务器响应为 not available解决方法:--from 发件人地址:该邮箱地址需开启SMTP服务;--smtp-password 发件人授权码:此处的发件人密码不是登录邮箱的密码,而是开启SMTP服务时的授权码;'