服务器搭建
安装
sudo apt-get install -y subversion
svnserve --version
创建仓库
cd /home
sudo mkdir svn
sudo svnadmin create svntest001
配置文件
authz 是权限控制文件 passwd 是帐号密码文件 svnserve.conf 是SVN服务配置文件
authz
[groups] #用户组
group1 = user001,user002
group2 = user003,user004
[svntest001:/] #svntest001为svn服务目录的递归目录
@group1 = rw #用户user001,user002可读写
@group2 = r #用户user001,user002可读
user005 = rw #用户user005可读写
* = #其余用户无权限
passwd
[users]
user001 = xxxxxx #为auth中定义的用户附上密码
user002 = xxxxxx
user003 = xxxxxx
user004 = xxxxxx
user005 = xxxxxx
svnserve.conf
anon-access = read # 匿名用户可读
auth-access = write # 授权用户可写
password-db = passwd # 使用哪个文件作为账号文件
authz-db = authz # 使用哪个文件作为权限文件
realm = Ensk's SvnRep # 版本库认证域 , 使用 SVN 客户端访问时 , 会出现在提示信息中 , 最好自定义下域的标志以方便辨别库
启动服务
sudo svnserve -d -r /home/svn
或
sudo svnserve -d -r /home/svn --listen-port xxxx
SVN服务的默认默认端口为3690,默认端口修改一般应用在需要建立多个svn服务器的情况,多版本库
客户端连接
版本库导出
svn co svn://127.0.0.1/svntest001
默认端口情况 或
svn co svn://127.0.0.1:xxxx/svntest001
添加未加入版本管理的文件
mkdir folder001
svn add folder001/
最好在文件夹创建时就将其加入到版本库,否则在其子文件不需要全部加入到版本控制时会造成麻烦
查看日志
svn log
按顺序列出各版本信息
svn log -r xxx -v
列出第xxx个版本的详细信息
svn log -r xxx -q
列出第xxx个版本的简略信息
svn log -r xxx:yyy
列出第xxx至yyy版本间的信息
svn log -r {xxxx-xx-xx}:{yyyy-yy-yy}
列出xxxx年xx月xx日至yyyy年yy月yy日之间的版本日志
以上需要在已加入版本控制的目录下执行,若需要直接查看某svn版本库的日志,则执行:
svn log svnurl
取消
取消文件
svn revert 文件名
取消目录
svn revert --depth=infinity 目录名
版本提交
svn ci -m "注释" #-m的内容会加显示在日志中
版本回退
1.将本地项目更新到最新状态,svn update
,得到最新版本xx
2.然后找出要回滚的确切版本号,svn log
,得到需要回退的版本yy
3.回滚到需要版本号,svn merge -r xx:yy""
,为了保险起见,再次确认回滚的结果,svn diff ""
发现正确无误,提交。
4.确认无误后提交回滚,svn commit -m "Revert revision from xx to yy,due to ..."
,上传到版本xx+1