能用Git就用,svn该被淘汰了
😊About
Subversion的简称,集中式版本控制工具
国内使用还是很普遍的
首次检出checkout,以后都 是更新update—解决冲突--提交commit项目经理来初始化仓库并提交到服务器
入职第一天checkout检出一次SVN对于.a静态库无法管理,缺了问同事要
之后每天下班前必须commit一次,第二天上班后先update一次.中间不断add,update和commit
😏服务器的搭建
win下使用Visual SVN Server
创建仓库&用户|组,分配用户权限
仓库目录说明
db目录:就是所有版本控制的数据存放文件
hooks目录:脚本文件的目录
locks目录:用放置hook来放置Subversion文件库锁定数据的目录,用来追踪存取文件库的客户端
format文件是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号
conf目录:是这个仓库的配置文件(仓库的用户访问帐号、权限等)
mac下待探索
可参考Mac 下直接配置(Mac 下安装SVN), (Mac下配置SVN 服务器)
🚩客户端的使用(重点)
🏃方式一: 使用命令行(理解的基础,这些理解了,便于使用各种软件)
svn [子命令] --help 或者 svn help[子命令] 查看子命令帮助一些命令可简写checkout->co
commit->ci
status->st
switch->sw
update->up
copy->cp
delete->del/rm
diff->di
move->mv
svn --version 查看当前版本
svn import [path] URL -m [注释] 将path下的仓库推送到远程仓库,并必须写明注释 //一般经理初始化仓库后上传
svn checkout URL [path] (—username=XXX —password=XXX) 从URL远程仓库中检出代码到path中,用户名和密码看情况决定是否使用
🚩svn status 查看文件状态(简写svn st) ' ' 没有修改
** 'A' 被添加到本地代码仓库**
'C'****冲突
'D'****被删除
'I'****被忽略
'M'****被修改
'R'****被替换
'X'****外部定义创建的版本目录
'?'****文件没有被添加到本地版本库内
'!'****文件丢失或者不完整(不是通过****svn****命令删除的文件)//仓库文件删除要使用svn删除命令来操作
'~' 受控文件被其他文件阻隔
🚩svn add [文件名]:向本地的版本控制库中添加新文件
svn remove/delete 删除文件
🚩🚩🚩svn commit -m [注释] 提交本地仓库到服务器,必须也注释out of date问题先更新再提交
🚩🚩🚩svn update 更新本地仓库 ; svn update -r 版本号 [PATH] 恢复到指定版本冲突问题出现该问题时svn提供了若干选项来选择p(postpone) 延迟处理在变化的位置保留.mine与.rX版本的冲突内容
手动编辑解决冲突svn resolved [冲突文件名] 告知文件冲突已经解决
mc(mine-conflict) 使用我的为准
tc(theirs-conflict) 使用服务器的为准
冲突解决后在commit提交
svn log (文件) 查看版本日志/查看文件版本日志
svn diff [文件名] -r x:y 查看文件从x->y版本的不同
版本回退修改了但尚未提交svn revert [文件名] 文件回退到当前版本的原始状态
修改了而且也已经提交了先update到最新版本
svn merge [文件名] -r x:y 把版本x与y之间的diff作用在当前版本上(在当前版本上删除diff,一般从x版本内容回到y版本内容且x>y,最终文件版本不变但内容回退)
----------------------------------------------------------
🏃方式二:使用相关客户端软件
🚩Cornerstone
Xcode
😍SVN的目录规范
三个文件夹(重在理解和操作熟练度)branches 分支目录
tags 标记一般用作重大版本的备份
trunk 主干在分支中的最终合并到主干
😋第三方托管平台
svnspot , svnchina
可以直接用cornerstone创建本地仓库