Windows 下搭建 使用SVN,以及在eclipse中配置使用SVN服务
目录
一、安装Visual SVN
下载VisualSVN Server:http://www.visualsvn.com/server/download/
安装过程如下:
Location是指VisualSVN Server的安装目录
Repositorys是指定你的版本库目录
Server Port指定一个端口,推荐8443端口
在这选择免费使用45天
等待进度条完毕
安装完成后点击finish,打开软件
右边表示的状态信息
二、安装TortoiseSVN
下载TortoiseSVN :http://tortoisesvn.net/downloads.html
此处我下载的是10版本,推荐下载12版本,因为后面汉化会出问题
下载汉化包
安装过程如下
汉化包安装,安装过程很快
三、配置SVN
配置仓库url,地址为本地物理网络地址,我的是192.168.239.1
添加一个代码库,左侧Respositories上右键菜单中选择创建一个代码库
选择仓库类型,选择第一种就可以了
设置仓库名字
仓库使用权限设置
创建仓库的所有信息
创建完成后,进入server软件,刷新后可以看到刚刚创建的仓库
这里有个排错,可以看到我的server软件侧边栏中缺失了user 和group两项
解决方法如下图:
选择use subversion authentication即可解决
在侧边栏user 右键新建用户
设置用户名和密码
将用户添加到刚刚创建的仓库中
复制仓库的url链接
在浏览器中粘贴url访问仓库,有些浏览器可能不能正常显示,多选择几个浏览器就可以
四、上传项目到远程仓库
在本地创建两个TXT文本文档进行测试使用
本地右键FirstRep目录,选择TortoiseSVN,导入
将仓库URL填入,下面空白处可以填写日志信息,需自己手动输入,后面需要输入自己创建的用户名和密码
刷新后可以看到两个txt文件已经被加入仓库
五、从远程仓库下载项目
首先右键点击自己创建的(cangku)文件夹,右键选择copy URL toCLipboard备用
然后再进入自己创建的test文件夹,在电脑的空白处单击右键,选择export导出
六、检出项目
看见检出文件夹下文件上有绿色对号即为成功
在此可能会遇到检出后文件夹无绿色对号
七、版本回退
查看仓库日志
可以看到两个版本信息
选择较早的一个版本,点击复原
八、在Eclipse中安装插件subclipse
Eclipse-->Help-->install new software --> 点击Add按钮,输入下载地址:http://subclipse.tigris.org/update_1.10.x 点击ok;
安装成功后进入view查看svn服务
点击SVN资源库
在空白处右键新建资源库位置
复制仓库url
新建成功
九、提交项目
右键点击项目,选择team->share project
再次右键点击提交
刷新后提交成功
十、 检出项目
点击右键 import
选择检出项目
因为之前提交的时候文件夹里已经存在同名文件所以有以下提示,点击是即可
十一、 eclipse代码提交到svn服务器上
错误整理
1.eclipse中SVN插件搭建无响应
2.Tortoise SVN汉化无效
3.检出后不显示绿色对勾
4.配置svn时侧边栏不显示user项目
5.在eclipse中使用svn时项目侧边栏消失
LINUX下svn搭建
客户端svn(大家见到的小乌龟)下载地址为:http://tortoisesvn.net/downloads.html
1)安装svn服务器
# yum install subversion
2)创建一个目录用来存放所有的svn版本库(后期客户端更新时,有优势,后面会提到)
# mkdir /svn
3)在svn目录下创建一个版本库 repositoryA
# svnadmin create /svn/repositoryA
4)查看并分析生成的文件
# ls /svn/repositoryA
conf目录:版本库的配置文件,包含用户访问账号、权限等
db目录:存放数据
format文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号(可以用vi打开看一下)
hooks目录:放置hook脚本文件的目录
locks目录:用来放置subversion的db锁文件和db_logs锁文件的目录,用来追踪存取文件库的客户端
README.txt文件:说明文档
5)修改svnserve.conf 配置文件
# vi /svn/repositoryA/conf/svnserve.conf
打开并修改下面几个注释(或者直接添加,原来的注释就不用打开)
[general] # 如果是直接添加到最后面,不要忘记加这条,否则客户端更新的时候会不用权限直接检出,提交时又报没权限
anon-access = none # 匿名不可读写,可以为write,read,none,默认为read,建议为none
auth-access = write # 验证用户可读写
password-db = /svn/repositoryA/conf/passwd # 指向用户名和密码的数据文件,地址不要写错,不然会报authorization failed
authz-db = /svn/repositoryA/conf/authz # 指向用户的权限配置文件,地址不要写错,不然会报authorization failed
realm = repositoryA #客户端检出时,提示信息
6)添加访问用户及密码
# vi /svn/repositoryA/conf/passwd
testUser1 = 123456 # 前面是用户名,后面是密码
testUser2 = 123456 # 这里建两个用户,为了说明配置权限时,可以分组管理
保存退出: wq
7)管理用户权限
# vi /svn/repositoryA/conf/authz
[groups]
admin = testUser1,testUser2 # 可以通过一个变量管理多个权限一样的用户,用户之简用逗号“,”隔开
[/] # 这里 / 表示对根目录(即/svn/ProjectA目录)下的所有子目录范围设置权限;
@admin = rw # rw表示可读写, r表示只读
* = # 这一行很重要,表示除了上面设置的权限用户组以外,其他所有用户都设置空权限,
如果有多个groups,要先把用户分组变量全部赋值,比如
admin = testUser1
art = testUser2
后面再分组给权限
[/]
@admin = rw
[/]
@art = rw
而不能将用户分组变量分开写
admin = testUser1
[/]
@admin = rw
art = testUser2
@art = rw
这样检出的时候会提示配置错误
8)开启svn服务
到这里,我们已经完成了svn服务端软件的下载,创建了版本库,并添加了用户以及相应的权限,最后我们只要开启svn服务即可。
这这里我们要考虑后期添加新的版本库问题,这里提供两种方法开启svn服务。
第一种: 直接开启对应的版本库,一个端口指向一个版本库(默认svn对应的端口为3690)
#svnserve -d -r /svn/repositoryA
这时重复2-7步,再添加一个版本库repositoryB。这里用
#svnserve -d -r /svn/repositoryB
开启版本库repositoryB时,会提示svnserve: Can’t bind server socket: Address already in use
因为svn默认使用的端口是3690,而之前在开启版本库repositoryA已经使用,所以这里提示已经使用
所以我们应该换个端口,这里假设端口3691未被使用,则可以使用
#svnserve -d -r /svn/repositoryB --listen-port 3691
注意: 这时客户端检出时,只要指定端口,就能检出对应的版本库,因为
svn://192.168.10.50:3690 对应 服务端的 /svn/repositoryA目录
svn://192.168.10.50:3691 对应 服务端的 /svn/repositoryB目录
(这里192.168.10.50是服务端的ip,你们根据自己服务器信息填写ip)
第二种: 开启版本库所在的目录(建议使用这种)
#svnserve -d -r /svn/
这时在客户端检出的时候,不用关心端口(默认3690),只要加入对应的版本库名就可以了,因为
svn://192.168.100.50:3690 对应 服务端的 /svn目录
svn://xxx.xxx.xxx.xxx/repositoryA
svn://xxx.xxx.xxx.xxx/repositoryB
补充:这里每个版本库都用自己的配置,每增加一个版本库就要重新配置一份,显然不够便捷,下次补充如何让多个版本库共用一份配置
svn 相关命令补充 :
- 查看svn程序监听的所有端口以及PID信息:
netstat -anp |grep svn
- 查看svn进程信息:
ps -ef|grep svnserve
- 杀死svn进程:(根据上面查看svn进程信息,根据进程ID杀死指定进程)
kill -9 PID
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-258a4616f7.css" rel="stylesheet">
</div>