有条件的还是建议用GIT
,如果我带团队, 也一定会主推GIT
以下是我认为svn无法取代git的优点
SVN
的分支是对某个分支或者主干的拷贝,而GIT
的分支是创建一个指针,创建分支和切换分支非常迅速GIT
更优越的工作流, 存在本地库的概念,我可以在本地建立自己的分支,形成自己的版本库,而SVN
必须有服务器才能工作ubuntu 18.04 腾讯云服务器
svn
1.9.7 版本
XShell 7
还是通过ubuntu的软件管理工具apt-get进行安装, 首先要更新一下
apt-get update
安装
apt-get install subversion
通过 svn --version
验证svn
是否安装成功, 能显示版本号就是安装成功
svn --version
我习惯放在home路径下, 看个人习惯
mkdir /home/svn/repositories
因为有多个项目, 因此先创建他们的根目录, 并分配读写权限
chmod -R 777 /home/svn/repositories
因为大部分公司不可能只有一个项目, 因此这里建立多项目
然后再在repositories下建立第一个项目的仓储
svnadmin create /home/svn/projects/project1
查看一下文件信息
ll /home/svn/projects/project1
可以查看到多了conf
, db
,format
,hooks
,locks
和README.txt
然后类似我们建立第二个项目
svnadmin create /home/svn/projects/project2
为了控制两个项目的权限, 我们将账户密码和授权文件放到项目根目录下
两个方式, 第一种方式通过ftp将project1或者project2下conf文件夹中的authz和passwd放到两个项目的根目录中, 也就是/home/svn/projects
中
也可以通过cp
命令一次将两个文件移动到根目录下
cp /home/svn/projects/project1/conf/authz /home/svn/projects/project1/conf/passwd /home/svn/projects
然后分别修改两个项目中/conf/svnserve.conf
文件
## 未登录不可以访问
anon-access = none
## 授权后可以读写
auth-access = write
## 指定验证文件路径
password-db = /home/svn/projects/passwd
authz-db = /home/svn/projects/authz
## 说实话我不知道这个有没有必要改, 改的话对应项目名称即可
realm = project1
这样两个项目都依赖父文件夹的authz
和passwd
了, 方便统一授权和管理
分配账号
vim /home/svn/projects/passwd
分配所有人的账号
suhao = 123456
管理授权
vim /home/svn/projects/authz
没管理过svn, 个人感觉可以通过这种方式进行权限控制, 大佬勿喷
[groups]
[project1:/]
# suhao分配读写权限
# 或者* = rw也可以, 给所有人读写权限
suhao = rw
配置防火墙
sudo ufw enable ## 启动防火墙
sudo ufw allow 3690 ## 开放svn默认的3690端口
配置云服务器出入规则(云防火墙)
访问控制台, 加入3690端口(TCP)限制即可
启动服务
svnserve -d -r /home/svn/project
检出, 客户端通过
svn://ip/project ## 检出project1
这里通过suhao账号可以正常检出, 也可以正常提交
至此, svn配置结束
以下部分是我作为初学者的一点理解
svn
启动命令是这样的
svnserve -d -r /home/svn/repositories --listen-port 3690
有点类似http的静态服务, 我搭建一个静态服务器, 指定服务器本地路径, 就可以为这些路径下的文件提供http服务
svn
是不是也是这样的呢?
希望明白的大佬指点一下~