搭建 SVN 服务器
一, 前期准备工作:
1, 准备两台服务器, 我这里是 192.168.4.123 和 192.168.4.124
2, 在两台服务器上分别安装软件: yum -y install subversion
3, 让 4.123 做服务端, 4.124 做客户端.
二, 服务器的搭建
1, 在 4.123 上创建数据存储路径: mkdir /var/SVN
2,svnadmin create /var/SVN/project1 // 创建共享目录
3, 往共享目录里面导入一些文件 (实际环境中就是源代码)
SVN import /usr/lib/systemd/system file:///var/SVN/project1 -m " 导入文件
把 / usr/lib/systemd/system 目录下大文件导入到 / var/SVN/project1
4, 如何查看 project 文件夹下的文件
SVN list file:///var/SVN/project1 // 本机查看文件
三, 服务器配置
1,cd /var/SVN/project1/conf 进到配置文件的目录, 分别配置三个文件
- A, svnserve.conf
- 19,anon-access = none // 匿名用户不能访问
- 20,auth-access = write // 认证用户可以写
- 27,password-db = passwd // 密码文件
- 34,authz-db = authz
- B,passwd // 创建用户和密码
- [users]
- zhangsan = 123456
- lisi = 1234567
- C,authz // 设置用户对目录的读取权限
- [/] // 改目录代表根目录, 也就是 project1 目录
- zhangsan = rw
- lisi = rw
2, 启动服务: 选择第一种服务
- svnserve -d -r /var/SVN/project1/ // 共享一个目录
- systemctl start svnserve // 所有的共享目录都发布出去
3, 客户端验证: 4.124
这里主要用于测试, 首先 cd /tmp 目录下, 下面的 code 就会创建在此目录下
SVN co --username zhangsan --password 123456 SVN://192.168.4.123/ code
从服务端下载文件, 用户名和密码, 后面是服务端地址, code 是本地目录, 自动创建
四, 单机验证: 在 4.124 上用 lisi 这个帐号来连接服务器
1, 在 code 目录下随便找一个文件修改, zram.service
SVN ci -m "zhushi" // 会自动上传该动过的文件
正在发送 zram.service
传输文件数据.
提交后的版本为 2.
2, 如果其它人修改了文件, 你可以选择下面的命令来更新, 以达到和服务器上一样的版本
- SVN update
- 3,SVN log SVN://192.168.4.123 // 可查看日志信息, 也就是查看什么帐号在什么时间做的事
4, 在客户端新建文件或者目录需注意的地方
- VIM zzzz.sh (新建文件) SVN add zzzz.sh(需添加到 SVN 里面, 否则无法上传到服务器)
- SVN mkdir abc(新建目录) SVN mv a.sh b.sh(改名)
- SVN diff zzzz.sh // 文件对比, 需指定文件名
- SVN cat SVN://192.168.4.123/zzzz.sh // 在服务器上查看文件
5, 数据还原, 分下面几种不同的情况
A, 本地修改, 已保存, 但未提交: SVN revert zram.service
B, 本地修改, 提交: SVN merge -r4:1 zram.service 从第四个版本还原到第一个版本
C, 本地修改, 并提交了多个文件, 如果一个一个文件还原版本的话, 效率太慢
SVN -r2 co SVN://192.168.4.123/ code2 // 取出版本 2 的所有文件,, 并存放在 code2 目录下
五, 多人协同下如何解决版本冲突问题
1,4.123 用 zhangsan 登陆, 4.124 用 lisi 来登陆, 导入文件到本地目录 code 下
2, 两人同时在操作文档时, 分下面几种情况来说明
A, 修改不同文件,
SVN update // 首先在修改之前, 保持版本一样
两个人更改不同的文件后分别提交, zhangsan 提交后版本为 5,lisi 提交后的版本为 6
再更新一次, SVN update , 这样两人得到的就都是版本 6
B, 修改相同文件的不同行,
改完后上传, 谁先提交没问题, 后提交的提示 "过期",
后提交的先 update 一下, 然后再上传一下, 先提交的再 update
C, 修改相同文件的相同行 (冲突, 人为解决)
假如 zhangsan 先提交, 上传成功,
lisi 提交, 会报错, 先更新 update, 会提升报错, 选 p 推迟, 线下解决
在 lisi 上删除多于的版本, 留下协商好的最终版本, 然后上传,
然后在 zhangsan 上 update 一下
六, 备份和恢复
1, 备份
svnadmin dump /var/SVN/project1/> /root/my.bak
2, 还原
首先创建新的共享目录: svnadmin create /var/SVN/project2
然后导入备份文件: svnadmin load /var/SVN/project2/ < /root/my.bak
来源: http://www.bubuko.com/infodetail-3106856.html