1. 安装svn包:(记得切换到root用户)
[root@MyCentOS ~]#stall subversion
2. 创建版本库:
先在根目录下创建一个svnroot目录 –用来存放版本库相关文件
[root@MyCentOS ~]#mkdir svnroot
然后创建版本库 svn_yidianhong –库名
[root@MyCentOS ~]# svnadmin create /svnroot/svn_yidianhong
3.删除版本库: (可以多创建一个来测试)
[root@MyCentOS ~]#rm-rf /svnroot/svn_yidianhong
4.次该版本库配置:
[root@MyCentOS ~]# cd /svnroot/svn_yidianhong/conf
authz –用户组以及用户组权限
passwd –配置用户名和密码
svnserve.conf –配置默认权限、权限配置文件以及密码配置文件
5.运行/停止 svn服务
svnserve -d -r /svnroot/svn_yidianhong
killall svnserve
6 checkout (co) – engine_server 为检出名字,可以不写
svn checkout svn://192.168.163.128 engine_server
7. add – 添加文件/目录
svn add js –non-recursive //js目录下文件不读取
svn add * –force //递归读取文件
svn commit -m “我他妈不干了” *
8. commit (ci) –提交文件/目录
svn commit -m “this is index 备注” index.html
9. update (up) – 更新文件
svn update
svn update -r 2 file – 更新指定文件到指定版本
svn update * –重新更新会最新版本
10.delete/del/remove/rm – 删除文件/目录
svn delete file
svn commit -m “要删库逃跑” *
11.diff (di) – 比较差异
svn diff fileneme
svn diff -r 2 fileneme
svn diff -r 2:5 fileneme
12.mkdir – 创建目录 (类似 add 和 commit)
svn mkdir doc
13.cat –不检出,查看文件
svn cat
14.revert – 版本恢复
svn revert *
svn revert –recursive *
15.冲突处理
–要养成良好的习惯,编辑前先先up
–同时编译一行代码的时候回出现冲突
当提交时提示: file is out of date 时,可能就是这个问题(不一定全是)
###############################
正在发送 build.sh
传输文件数据.svn: 提交失败(细节如下):
svn: 文件 “/build.sh” 已经过时
###############################
这时候去 svn up
###############################
U doc/exchange/Openx.docx
U meta/City.csv
在 “build.sh” 中发现冲突。
选择: (p) 推迟,(df) 显示全部差异,(e) 编辑,(mc) 我的版本, (tc) 他人的版本,(s) 显示全部选项:
###############################
可以输入df 查看两个文件的差异
如果没有决定好怎么改可以选择p, 推迟提交,也可以选择我的版本/他人版本, 或者e进行编辑.
(1)#svn resolve fileneme –accept base –使用未冲突前的内容
(2)#svn resolve fileneme –accept theirs-full –使他人的版本
(3)#svn resolve fileneme –accept mine-full –使用我的版本
(4)#svn resolve fileneme –accept working –使用当前编辑的版本
(5)#svn resolve fileneme –accept mine-conflict –冲突的部分以本地修改为准
(6)#svn resolve fileneme –accept theirs-conflict –冲突的部分以服务器端修改为准
执行一下:svn resolved fileneme
然后svn commit -m “fix what” *
16.lock and unlock 加锁
17. list (ls) 列出当前目录下处于版本控制的所有文件
svn ls
svn –recursive
svn ls -v (类似linux ll)
18. stat (st) 列出工作副本中俄文件夹的状态
svn status
? - 无版本控制
D - 已被标记冲版本库中删除
M - 已被编辑过
A - 已被标记增加到版本控制中
R - 文件被替换
C - 文件存在冲突
! - 文件缺失
19. log 查看提交日志
svn log
svn log fileneme (指定文件)
20.info 查看版本库的信息
svn info
svn info fileneme (指定文件)
svn info –xml (输出格式参数)
21.多版本库的解决方案
–手动指定端口
svnserve -d -r /svnroot/svn_yidianhong –默认端口3690
svnserve -d -r /svnroot/svn_test1 –listen-port 3691 –指定端口
–只使用一个端口号
svnserve -d -r /svnroot/ –把版本服务都放在一个目录下
svn checkout svn://192.168.163.128/svn_yidianhong –检出要指定目录
22. copy (cp) 复制
工作副本 ==> 工作副本:svn copy fileneme fileneme
工作副本 ==> 版本库:svn copy fileneme svn://192.168.163.128/svn_yidianhong/fileneme -m “copy file” –不支持跨库 直接提交的意思
版本库 ==> 工作副本:svn copy svn://192.168.163.128/svn_yidianhong/fileneme fileneme –支持跨库
版本库 ==> 版本库: svn copy svn://192.168.163.128/svn_yidianhong/ svn://192.168.163.128/svn_yidianhong/trunk -m “setup a trunk”
svn copy svn://192.168.163.128/svn_yidianhong/trunk svn://192.168.163.128/svn_yidianhong/branch -m “setup a branch” –创建分支版本,不支持跨库
注:一般项目会有trunk 、branch 和tag 三个:trunk 主干版本 ,branch分支版本 tag 已经发布的版本
23.hooks钩子的应用
cp post-commit.tmpl post-commit
chmod +x post-commit
修改post-commit中的命令:例如:svn info svn://192.168.163.128/svn_yidianhong –xml >/var/www/report.xml(apaqi)
然后重启即可
24.精简版本库 –丢弃部分版本
先关掉svn服务
svnadmin dump /svnroot/svn_yidianhong/ -r 6:16 >~/svn_yidianhong.repository
创建新的版本库 svnadmin create /svnroot/new_svn_yidianhong
下载版本库 svnadmin load /svnroot/new_svn_yidianhong<~/svn_yidianhong.repository
再复制一下配置文件就好了(即使用以前的配置)
25.版本器迁移和重定向
版本器迁移:
(1)、24条的操作即可
(2)、整个版本器目录压缩 然后移植,再运行。客户端需要进行重定向 svn switch(sw):
svn switch –relocate svn://192.168.163.128/svn_yidianhong svn://192.168.163.128/new_svn_yidianhong
总结:
1.-配置svnserve.conf
2.-运行版本库的路径问题
3.-svnadmin dump /load (注意< >)
svn 服务器 把项目代码保存在哪里?
答:文件是以加密形式存在的,所以你看不到,只是一堆无序的文件。