linux上安装svn与使用
ubuntu上安装svn
1.查看是否有旧版本的svn: svn --version
2.如果没有,则安装:sudo apt-get install subversion
注:
sudo apt-get install update
,更新软件列表,会访问源列表里的每个网址,并读取软件列表
sudo aot-get install upgrade
,更新软件包
3.在/opt目录下创建svn仓库。
1 |
|
注: /opt目录用来安装附加软件包,是用户级的程序目录,可以理解为D:/Software。
4.修改文件夹的权限(升级为最高权限):
sudo chmod -R 777 /opt/svn/repository
注:在linux系统中,文件或目录的权限可以分为3种:
r:4 读
w:2 写
x:1 执行(运行)
-:对应数值0
数字 4 、2 和 1表示读、写、执行权限
rwx = 4 + 2 + 1 = 7 (可读写运行)
rw = 4 + 2 = 6 (可读写不可运行)
rx = 4 +1 = 5 (可读可运行不可写)
例子:
最高权限777:(4+2+1) (4+2+1) (4+2+1)
第一个7:表示当前文件的拥有者的权限,7=4+2+1 可读可写可执行权限
第二个7:表示当前文件的所属组(同组用户)权限,7=4+2+1 可读可写可执行权限
第三个7:表示当前文件的组外权限,7=4+2+1 可读可写可执行权限
5.将刚才创建的目录 /opt/svn/repository
,指定为版本库:
sudo svnadmin create /opt/svn/repository
注:ll 指令查看详细文件
6.修改配置:
①首先修改db文件夹的权限,改为777。db文件夹是存储svn文件的地方
sudo chmod -R 777 /opt/svn/repository/db
②其次修改conf文件夹下面的svnserve.conf文件
匿名用户可读
anon-access = read(可改成none,即不可读)
权限用户可写
auth-access = write
密码文件为passwd
password-db = passwd
权限文件为authz
authz-db = authz
③ 增加用户名和密码
修改con文件夹下面的passwd文件,增加用户和用户密码
格式:用户名 = 密码
sudo vim passwd(增加用户)
注:这里用户名为admin,密码为admin
修改con文件夹下面的authz文件,增加用户组,目录认证,组权限
sudo vim authz(增加用户权限)
注: 单库模式则设置为:[/] 本例子为单库模式
如果组内有多个人可以逗号分隔如:组名owner,组员user1,user2则:owner=user1,user2
对组的访问权限设置:rw,r,w。组名前面加@
@owner=rw
如果单用户设置则一个用户一行:
user1=rw
7.配置防火墙
关键划重点!!!要添加3690的规则,我当初在这步上卡了很久
由于LInux原始的防火墙工具iptables过于繁琐,所以ubuntu默认提供了一个基于iptable之上的防火墙工具ufw。
①启用ufw: sudo ufw enable
②查看防火墙状态:sudo ufw status
③开启/关闭防火墙 (默认设置是’disable’):sudo ufw enable|disable
④转换日志状态:sudo ufw logging on|off
⑤允许 53 端口: sudo ufw allow 53
禁用 53 端口: sudo ufw delete allow 53
⑥删除以前定义的”允许/拒绝访问20端口”的规则:sudo ufw delete allow/deny 20
8.启动svn仓库
svnserve -d -r /opt/svn/repository
注:-d:表示在后台运行 ,-r:指定服务器的根目录
8.查看是否安装启动成功
ps -ef|grep svnserve
sudo netstat -ntlp
查看端口号,svn的默认端口3690
9.访问:通过 svn://服务器ip/文件夹名字 从svn客户端访问服务器。默认svn协议。如果要配置http或者https则需要安装apache。
本例因为是设置的[/]单列模式,则svn://ip地址/ 就可以访问
总结:如果要从本地访问服务器的话,要在服务器端开放3690端口号,命令:
sudo ufw allow 3690
注:为什么在目录中看不见自己的上传的项目,因为svn将项目处理成数据库文件,存入道数据版本库中了,只用通过Repo-browser检索式能够在/etc下找到
1.SVN优缺点
优点:
1、 管理方便,逻辑明确,符合一般人思维习惯。
2、 易于管理,集中式服务器更能保证安全性。
3、 代码一致性非常高,会从服务器下载所有源码
4、 适合开发人数不多的项目开发。
缺点:
1、 服务器压力太大,数据库容量暴增。
2、 如果不能连接到服务器上,基本上不可以工作,看上面第二步,如果服务器不能连接上,就不能提交,还原,对比等等。
3、 不适合开源开发(开发人数非常非常多,但是Google app engine就是用svn的)。但是一般集中式管理的有非常明确的权限管理机制(例如分支访问限制),可以实现分层管理,从而很好的解决开发人数众多的问题。
2.Git优缺点
优点:
1、适合分布式开发,强调个体。
2、公共服务器压力和数据量都不会太大。
3、速度快、灵活。
4、任意两个开发者之间可以很容易的解决冲突。
5、离线工作。
缺点:
1、学习周期相对而言比较长。
2、不符合常规思维。
3、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
一、SVN常用的命令行操作:
把文件上传到SVN版本库后,上传的文件不再以文件原来的格式存储,而是被svn以它自定义的格式压缩成版本库数据,存放在版本库中。是不透明的,是原子提交
一、 SVN常用命令
1、将文件checkout到本地目录
svn co http://路径(目录或文件的全路径) [本地目录全路径] –username 用户名 –password 密码
例子:svn co svn://192.168.0.3/测试工具 /home/testtools --username luke
简写:svn co
2、往版本库中添加新的文件
svn add file
3、将改动的文件提交到版本库
svn commit -m “LogMessage” [-N] [–no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)
简写:svn ci
4、加锁/解锁
svn lock -m “LockMessage” [--force] PATH
svn unlock PATH
5、更新到某个版本
svn update -r m path
简写:svn up
6、查看文件或者目录状态
1)svn status path
(目录下的文件和子目录的状态,正常状态不显示)
2)svn status -v path
(显示文件和子目录状态)
简写:svn st
7、删除文件
svn delete path -m “delete test fle”
后面的引号内容为注释
简写:svn (del, remove, rm)
8、查看日志
svn log path
9、查看文件详细信息
svn info path
10、比较差异
svn diff path
(将修改的文件与基础版本比较)
svn diff -r m:n path
(对版本m和版本n比较差异)
简写:svn di
11、将两个版本之间的差异合并到当前文件
svn merge -r m:n path
12、SVN 帮助
svn help
svn help ci
13、创建纳入版本控制下的新目录
svn mkdir
目录名
svn mkdir -m “新增目录备注文本注释” http://目录全路径
例子:
svn mkdir newdir
svn mkdir -m "Making a new dir." svn://localhost/test/newdir
14.svn cleanup PATH
清理
二、 SVN不常用命令
1、版本库下的文件和目录列表
svn list path
显示path目录下的所有属于版本库的文件和目录简写:``svn ls`
2、恢复本地修改
svn revert
: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。
用法: revert PATH… 注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录
3、代码库URL变更
svn switch (sw)
: 更新工作副本至不同的URL。
**用法: **
(1)、switch URL [PATH]
更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的方法。
(2)、switch –relocate FROM TO [PATH…]
改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动 (比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用这个命令更新工作副本与仓库的对应关系。
4、解决冲突
svn resolved: 移除工作副本的目录或文件的“冲突”状态。
用法: resolved PATH… 注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的相关文件,然后让 PATH 可以再次提交。
5、输出指定文件或URL的内容。
svn cat 目标[@版本]…如果指定了版本,将从指定的版本开始查找。 svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)
更详细的指令参考“:https://blog.csdn.net/gsg8709/article/details/79435741
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!