Dubbo入门到精通学习笔记(三):持续集成管理平台之SVN版本管理系统的安装和使用

版权声明:本文为作者原创,转载请注明出处,联系qq:32248827 https://blog.csdn.net/dataiyangu/article/details/88550692

持续集成管理平台介绍

持续集成介绍

  • 持续集成是一种软件开发实践
    团队开发成员经常集成他们的工作,每次集成都通过自动化的构建
    (包括自动化编译、测试、发布)来验证,从而尽快地发现集成错误。
  • 持续集成的价值、要素、原则…
    请自行找资料了解…
  • 谈谈我对持续集成的好处的理解
    管理大规模的工程的必要性(切合我们教程分布式多工程的特性)
    解放应用更新部署的生产力,不需要每次都去部署
    能让团队成员间进行高效的协作开发 能与各种项目管理工具一起整合成一套实用而且灵活项目开发管理平台 实时交付可用、可测试的软件产品
    不同的程序员开发不同的代码块,只负责自己的这部分提交即可,不需要等待其他的模块开发完成才能测试,不仅仅节省了开发的时间,也节省了测试等的时间

持续集成管理平台的组成

持续集成管理平台不只是CI服务器,是一系列软件开发管理工具的组合
源码版本管理:Subversion、Git
项目构建工具:Maven、Ant
代码质量管理:Sonar(Checkstyle、PMD、FindBugs…)
持续集成引擎:Hudson、Jenkins、Apache Continuum
应用持续部署:操作系统、JDK、Tomcat、JBoss…

实施持续集成过程中要用到的其他各种工具、各种插件…
在这里插入图片描述
eclipse开发人员开发完了代码=====>第六步提交代码====>到了git=====>第七步hudson检测变化=====>第八步hudson自动编译、测试、打包(如果有私有库,就先执行第九步,从私有库拉取),如果编译失败就通过第八步反馈给eclipse开发人员=====>第十步sonar代码质量检测=====>代码没问题了到十一步应用部署,调用一些脚本,重启等=====>通过十二步开发人员和项目管理人员查看各个步骤的记录及质量报告,包括测试人员开始做测试。

持续集成实践介绍

xxxxxx科技有限公司
提供专业的第三方支付系统开发与第三方支付业务咨询服务 (互联网支付、移动支付、POS收单、预付费卡、P2P平台)
持续集成管理平台
Hudson + Maven + Sonar + Subversion

即将学习

(1) Subversion源码版本控制系统的安装
Subversion + Apache + jsvnadmin
(2) Maven私有库和本地库的安装与配置
Sonatype Nexus + Maven
(3) Sonar代码质量管控平台的安装与使用配置
(4) Hudson持续集成引擎的安装与配置

SVN版本管理系统的安装

不只是单纯的使用Subversion进行版本控制,而是要使得版本控制能灵活方便地进行管理
方案:
CentOS + Subversion + Apache + Jsvnadmin

安装 Subversion + Apache

CI 服务器:192.168.4.221 root 用户操作
建议安装前更新操作系统

# yum update 

更新完成后重启

# reboot

安装 apache

# yum install httpd httpd-devel
# service httpd start
# chkconfig httpd on
# cd /etc/httpd
# vi /etc/httpd/conf/httpd.conf

找到 ServerName 并修改成

 ServerName localhost:80

防火墙中打开 80 端口:

# vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 
# service iptables restart

http://192.168.4.221/
在这里插入图片描述
安装 SVN 服务

# yum install   mod_dav_svn  subversion

必须安装 mod_dav_svn 模块,因为要跟Apache整合

# cd /etc/httpd/conf.d
//安装完subversion后这个目录下会多一个subversion.conf文件

安装完 svn 后要重启 apache

# service httpd restart

查看测试是否安装 svn 模块

# ls /etc/httpd/modules/ | grep svn 
//有下面两个文件说明安装成功了
mod_authz_svn.so
mod_dav_svn.so
//查看svn的版本
# svn --version

创建 svn 库主目录(多库模式,一份配置文件管理多个库)

# mkdir /svn/
# cd /etc/httpd/conf.d
# ls

此时可以看到一个 subversion.conf 配置文件(是在安装 mod_dav_svn 模块时生成的)

# vi subversion.conf 

添加以下内容

#Include /svn/httpd.conf 
<Location /svn/>
DAV svn
SVNListParentPath on
//svn多库的父目录就是 /svn
SVNParentPath /svn
AuthType Basic
AuthName "Subversion repositories" 
//svn的授权用户名密码文件
AuthUserFile /svn/passwd.http 
//授权文件
AuthzSVNAccessFile /svn/authz 
Require valid-user
</Location>
//访问路径的参数配置
RedirectMatch ^(/svn)$ $1/

配置文件中的/svn/passwd.http 和/svn/authz 是没有的
创建/svn/passwd.http 和/svn/authz

# touch /svn/passwd.http
# touch /svn/authz

重启 apache

# service httpd restart
Stopping http:[OK]
Starting http:[OK]

重启成功说明配置成功了

安装 jsvnadmin

简单介绍(可以不看)

  • 什么是Svn Admin
    Svn Admin是一个Java开发的管理Svn服务器的项目用户的web应用。安装好Svn服务器端好,把Svn Admin部署好,就可以通过web浏览器管理Svn的项目,管理项目的用户,管理项目的权限。使得管理配置Svn简便,再也不需要每次都到服务器手工修改配置文件。
  • 有什么优点
    多数据库:Svn项目配置数据保存在数据库,支持所有数据库(默认MySQL/Oracle/SQL Server)。
    多操作系统:支持Window,Linux等操作系统。
    权限控制:管理员可以随意分配权限、项目管理员可以管理项目成员、成员只能查看和修改自己的密码。
    支持多项目、多用户、多用户组Group(默认带有“项目管理组”、“项目开发组”、“项目测试组”)。
    安全:密码加密保存。
    多协议:支持svn协议和http协议(从2.0开始支持Apache服务器单库方式,从3.0开始支持Apache多库方式)
    仓库浏览(从3.0.2开始)
    多语言(从3.0.2开始)
  • 是否适合你
    Svnadmin在Java 1.6、Tomcat 6、Subversion 1.6、MySQL 5.1、Apache 2.2、Windows 7上开发测试通过,同时支持其他操作系统和数据库。
    支持svn协议
    Svn的配置信息都在仓库目录的conf下的authz,passwd,svnserve.conf三个文件中,配置用户和权限都是通过修改passwd和authz,立刻就生效。Svn Admin的本质是对这3个文件进行管理,所有成员、权限的数据都保存在数据库中,一旦在Svn Admin的页面上修改,就会把配置信息输出到conf下的那3个配置文件中。
    支持http协议
    Apache+SVN配置成功后可以有两种方式:
    1.多库方式:SVNParentPath 指定一个父目录,所有仓库在这个父目录下,使用一个密码文件和一个权限配置文件。优点是增加删除仓库不需要改apache的httpd.conf,不需要重启Apache。缺点是项目多会很混乱。
    2.单库方式:SVNPath 每个仓库单独配置各自的密码和权限文件。优点是各自分开,互相不影响,维护方便。缺点是增加或删除仓库需要修改apache的httpd.conf后重启。
  • 成为项目开发人员
    如果你对这个项目开发有兴趣,或者对文档编写有兴趣,或者对美工有兴趣,或者有其他的想法,欢迎你加入。前提是你先对这个项目包括源代码有充分的了解。

安装jsvnadmin

(在 Google Code 上,需要 FQ 才能下载。我们也会把最新版的 jsvnadmin 放到群共享中) https://code.google.com/p/jsvnadmin/
https://jsvnadmin.googlecode.com/files/svnadmin-3.0.5.zip
安装 MySQL(单独安装,与业务系统的数据库(我们自己项目的数据库)分开)

# rpm -qa | grep mysql 

查看该操作系统上是否已经安装了 mysql 数据库, 有的话,可以通过 rpm -e 命令 或者 rpm -e --nodeps 命令来卸载掉

# yum install mysql-server mysql mysql-devel
# service mysqld start

# chkconfig --list | grep mysqld

mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off
用上面的命令查看到 MySQL 并没有设置开机启动,所以需要设置开机启动

# chkconfig mysqld on

为了方便远程管理,防火墙中打开 3306 端口

# vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT 

重启防火墙,使端口配置生效

# service iptables restart

设置 MySQL 数据库 root 用户的密码:

# mysqladmin -u root password 'wusc.123' 

登录数据库:

# mysql -u root -p

MySQL 授权远程访问(先用 root 登录 mysql)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'wusc.321' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

使用 Tomcat7 部署 svnadmin

# cd /root

使用 wget 下载最新版的 tomcat7 的 tar.gz 包

# tar -zxvf apache-tomcat-7.0.xx.tar.gz
# mv apache-tomcat-7.0.xx svnadmin-tomcat

修改 Tomcat 的端口为 9000 和容器编码为 UTF-8

 # vi /root/svnadmin-tomcat/conf/server.xml 

修改以下标红的内容

<Server port="9005" shutdown="SHUTDOWN">
<Connector port="9000" protocol="HTTP/1.1"
connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />

防火墙中打开 9000 端口

# vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT

重启防火墙,使端口配置生效

# service iptables restart
# cd /root/svnadmin-tomcat/webapps 
# rm -rf *

上传 svnadmin.war 到/root/svnadmin-tomcat/webapps 目录

# cd /root/svnadmin-tomcat/webapps

解压

# unzip svnadmin.war -d svnadmin

备份

# mv svnadmin.war /root/tools/
# cd svnadmin/WEB-INF
# vi jdbc.properties

内容改为如下

db=MySQL
#MySQL
MySQL.jdbc.driver=com.mysql.jdbc.Driver MySQL.jdbc.url=jdbc:mysql://127.0.0.1:3306/svnadmin?characterEncoding=utf-8 MySQL.jdbc.username=root
MySQL.jdbc.password=wusc.123

创建 svnadmin 数据库并导入相应数据(UTF-8 编码)
执行

db/mysql5.sql 和 db/lang/en.sql

mysql5.sql

/*==============================================================*/
/* DBMS name:      MySQL 5.0                                    */
/* Created on:     2013/1/16 14:32:28                           */
/*==============================================================*/


/*==============================================================*/
/* Table: i18n                                                  */
/*==============================================================*/
create table i18n
(
   lang                 varchar(20) not null,
   id                   varchar(200) not null,
   lbl                  varchar(200) not null,
   primary key (lang, id)
);

/*==============================================================*/
/* Table: pj                                                    */
/*==============================================================*/
create table pj
(
   pj                   varchar(50) not null,
   path                 varchar(200) not null,
   url                  varchar(200) not null,
   type                 varchar(10) not null,
   des                  varchar(200),
   primary key (pj)
);

/*==============================================================*/
/* Table: pj_gr                                                 */
/*==============================================================*/
create table pj_gr
(
   pj                   varchar(50) not null,
   gr                   varchar(50) not null,
   des                  varchar(100),
   primary key (pj, gr)
);

/*==============================================================*/
/* Table: pj_gr_auth                                            */
/*==============================================================*/
create table pj_gr_auth
(
   pj                   varchar(50) not null,
   gr                   varchar(50) not null,
   res                  varchar(200) not null,
   rw                   varchar(10),
   primary key (pj, res, gr)
);

/*==============================================================*/
/* Table: pj_gr_usr                                             */
/*==============================================================*/
create table pj_gr_usr
(
   pj                   varchar(50) not null,
   gr                   varchar(50) not null,
   usr                  varchar(50) not null,
   primary key (pj, usr, gr)
);

/*==============================================================*/
/* Table: pj_usr                                                */
/*==============================================================*/
create table pj_usr
(
   pj                   varchar(50) not null,
   usr                  varchar(50) not null,
   psw                  varchar(50) not null,
   primary key (usr, pj)
);

/*==============================================================*/
/* Table: pj_usr_auth                                           */
/*==============================================================*/
create table pj_usr_auth
(
   pj                   varchar(50) not null,
   usr                  varchar(50) not null,
   res                  varchar(200) not null,
   rw                   varchar(10),
   primary key (pj, res, usr)
);

/*==============================================================*/
/* Table: usr                                                   */
/*==============================================================*/
create table usr
(
   usr                  varchar(50) not null,
   psw                  varchar(50) not null,
   role                 varchar(10),
   primary key (usr)
);

alter table pj_gr add constraint FK_Relationship_2 foreign key (pj)
      references pj (pj) on delete restrict on update restrict;

alter table pj_gr_auth add constraint FK_Reference_6 foreign key (pj, gr)
      references pj_gr (pj, gr) on delete restrict on update restrict;

alter table pj_gr_usr add constraint FK_Reference_10 foreign key (pj, gr)
      references pj_gr (pj, gr) on delete restrict on update restrict;

alter table pj_gr_usr add constraint FK_Reference_9 foreign key (usr)
      references usr (usr) on delete restrict on update restrict;

alter table pj_usr add constraint FK_Reference_5 foreign key (pj)
      references pj (pj) on delete restrict on update restrict;

alter table pj_usr add constraint FK_Reference_7 foreign key (usr)
      references usr (usr) on delete restrict on update restrict;

alter table pj_usr_auth add constraint FK_Reference_11 foreign key (pj)
      references pj (pj) on delete restrict on update restrict;

alter table pj_usr_auth add constraint FK_Reference_8 foreign key (usr)
      references usr (usr) on delete restrict on update restrict;


en.sql

insert into i18n (lang,id,lbl) values ('en','en','English');
insert into i18n (lang,id,lbl) values ('en','i18n.add.title','Add Language');
insert into i18n (lang,id,lbl) values ('en','i18n.current','Current Language');
insert into i18n (lang,id,lbl) values ('en','i18n.error.lang','[Language] cannot be empty');
insert into i18n (lang,id,lbl) values ('en','i18n.error.lbl','[Label] cannot be empty');
insert into i18n (lang,id,lbl) values ('en','i18n.id','Key');
insert into i18n (lang,id,lbl) values ('en','i18n.lang','Language');
insert into i18n (lang,id,lbl) values ('en','i18n.lbl','Label');
insert into i18n (lang,id,lbl) values ('en','i18n.op.addlang','Add Language');
insert into i18n (lang,id,lbl) values ('en','i18n.op.export','Export Language');
insert into i18n (lang,id,lbl) values ('en','i18n.op.submit','Submit');
insert into i18n (lang,id,lbl) values ('en','i18n.title','Language');
insert into i18n (lang,id,lbl) values ('en','login.btn.login','Login');
insert into i18n (lang,id,lbl) values ('en','login.info.setadmin','Welcome to SVN ADMIN,please set the administrator accout and password.');
insert into i18n (lang,id,lbl) values ('en','login.title','SVN ADMIN Login');
insert into i18n (lang,id,lbl) values ('en','main.link.i18n','Language');
insert into i18n (lang,id,lbl) values ('en','main.link.logout','Logout');
insert into i18n (lang,id,lbl) values ('en','main.link.pj','Project');
insert into i18n (lang,id,lbl) values ('en','main.link.user','User');
insert into i18n (lang,id,lbl) values ('en','main.title','SVN ADMIN');
insert into i18n (lang,id,lbl) values ('en','pj.btn.submit','Submit');
insert into i18n (lang,id,lbl) values ('en','pj.des','Desciption');
insert into i18n (lang,id,lbl) values ('en','pj.error.path','[Path] cannot be empty');
insert into i18n (lang,id,lbl) values ('en','pj.error.pj','[Project] cannot be empty');
insert into i18n (lang,id,lbl) values ('en','pj.error.url','[URL] cannot be empty');
insert into i18n (lang,id,lbl) values ('en','pj.op.delete','Delete');
insert into i18n (lang,id,lbl) values ('en','pj.op.delete.confirm','Are you sure to delete?');
insert into i18n (lang,id,lbl) values ('en','pj.op.setauth','Authorization');
insert into i18n (lang,id,lbl) values ('en','pj.op.setgr','Group');
insert into i18n (lang,id,lbl) values ('en','pj.op.setuser','User');
insert into i18n (lang,id,lbl) values ('en','pj.path','Path');
insert into i18n (lang,id,lbl) values ('en','pj.pj','Project');
insert into i18n (lang,id,lbl) values ('en','pj.title','Project');
insert into i18n (lang,id,lbl) values ('en','pj.type','Type');
insert into i18n (lang,id,lbl) values ('en','pj.type.http','http');
insert into i18n (lang,id,lbl) values ('en','pj.type.http.mutil','http(mutil)');
insert into i18n (lang,id,lbl) values ('en','pj.type.svn','svn');
insert into i18n (lang,id,lbl) values ('en','pj.url','URL');
insert into i18n (lang,id,lbl) values ('en','pjauth.btn.submit','Save');
insert into i18n (lang,id,lbl) values ('en','pjauth.error.grusr','Please select Group or User');
insert into i18n (lang,id,lbl) values ('en','pjauth.error.pj','[Project] cannot be empty');
insert into i18n (lang,id,lbl) values ('en','pjauth.error.res','[Resource] can not be empy');
insert into i18n (lang,id,lbl) values ('en','pjauth.op.delete','Delete');
insert into i18n (lang,id,lbl) values ('en','pjauth.op.delete.confirm','Are you sure to delete?');
insert into i18n (lang,id,lbl) values ('en','pjauth.res','Resource');
insert into i18n (lang,id,lbl) values ('en','pjauth.res.select','Please select resource');
insert into i18n (lang,id,lbl) values ('en','pjauth.rw','Access');
insert into i18n (lang,id,lbl) values ('en','pjauth.rw.none','none');
insert into i18n (lang,id,lbl) values ('en','pjauth.rw.r','Read');
insert into i18n (lang,id,lbl) values ('en','pjauth.rw.rw','Read-write');
insert into i18n (lang,id,lbl) values ('en','pjauth.title','Authorization');
insert into i18n (lang,id,lbl) values ('en','pjgr.btn.submit','Submit');
insert into i18n (lang,id,lbl) values ('en','pjgr.error.gr','[Group] cannot be empty');
insert into i18n (lang,id,lbl) values ('en','pjgr.error.pj','[Project] cannot be empty');
insert into i18n (lang,id,lbl) values ('en','pjgr.op.delete','Delete');
insert into i18n (lang,id,lbl) values ('en','pjgr.op.delete.confirm','Are you sure to delete?');
insert into i18n (lang,id,lbl) values ('en','pjgr.op.setuser','User');
insert into i18n (lang,id,lbl) values ('en','pjgr.title','Groups');
insert into i18n (lang,id,lbl) values ('en','pjgrusr.error.usr','[User] cannot be empty');
insert into i18n (lang,id,lbl) values ('en','pjgrusr.op.delete','Delete');
insert into i18n (lang,id,lbl) values ('en','pjgrusr.op.delete.confirm','Are you sure to delete?');
insert into i18n (lang,id,lbl) values ('en','pjgrusr.op.submit','Add User');
insert into i18n (lang,id,lbl) values ('en','pjgrusr.title','Group User');
insert into i18n (lang,id,lbl) values ('en','pjusr.error.pj','[Project] cannot be empty');
insert into i18n (lang,id,lbl) values ('en','pjusr.error.psw','[Password] cannot be empty');
insert into i18n (lang,id,lbl) values ('en','pjusr.error.usr','[User] cannot be empty');
insert into i18n (lang,id,lbl) values ('en','pjusr.info','(Notice:Project user setting only effect this project)');
insert into i18n (lang,id,lbl) values ('en','pjusr.op.delete','Delete');
insert into i18n (lang,id,lbl) values ('en','pjusr.op.submit','Submit');
insert into i18n (lang,id,lbl) values ('en','pjusr.psw.psw','Password');
insert into i18n (lang,id,lbl) values ('en','pjusr.title','Project User');
insert into i18n (lang,id,lbl) values ('en','pjusr.usr.select','Please select user');
insert into i18n (lang,id,lbl) values ('en','pj_gr.des','Desciption');
insert into i18n (lang,id,lbl) values ('en','pj_gr.gr','Group');
insert into i18n (lang,id,lbl) values ('en','rep.btn.go','Refresh');
insert into i18n (lang,id,lbl) values ('en','svn.auth.error','authorization failed');
insert into i18n (lang,id,lbl) values ('en','sys.error','Error:');
insert into i18n (lang,id,lbl) values ('en','sys.error.pj.empty','Can not access');
insert into i18n (lang,id,lbl) values ('en','sys.error.timeout','Session has been timeout,please login again.');
insert into i18n (lang,id,lbl) values ('en','sys.lbl.no','No.');
insert into i18n (lang,id,lbl) values ('en','usr.error.psw','[Password] cannot be empty');
insert into i18n (lang,id,lbl) values ('en','usr.error.usr','[User] cannot be empty');
insert into i18n (lang,id,lbl) values ('en','usr.op.delete','Delete');
insert into i18n (lang,id,lbl) values ('en','usr.op.delete.confirm','Are you sure to delete?');
insert into i18n (lang,id,lbl) values ('en','usr.op.submit','Submit');
insert into i18n (lang,id,lbl) values ('en','usr.psw','Password');
insert into i18n (lang,id,lbl) values ('en','usr.role','Role');
insert into i18n (lang,id,lbl) values ('en','usr.role.select','Please select role');
insert into i18n (lang,id,lbl) values ('en','usr.title','User');
insert into i18n (lang,id,lbl) values ('en','usr.usr','User');
insert into i18n (lang,id,lbl) values ('en','zh_CN','Simplified Chinese');

启动 svnadmin-tomcat

# /root/svnadmin-tomcat/bin/startup.sh 

浏览器中打开:http://192.168.4.221:9000/svnadmin/

在这里插入图片描述

如:输入 admin,wusc.123
在这里插入图片描述
创建库
在这里插入图片描述
这里的url中的svn是安装svn时候上面的配置

# vi subversion.conf 
添加以下内容
//svn是多库的父目录
<Location /svn/>

然后点击提交
在这里插入图片描述
此时:
/svn/目录下会创建一个 wusc_edu 的 SVN 库目录,就是上面提交的库。
同时也会多出一个 httpd.conf 文件,内容与 subversion.conf 一样,在 /etc/httpd/conf.d/subversion.conf 中已配置。
/svn/authz 授权文件中会多出如下内容:

[aliases]
[groups]
//开发组、管理组、测试组
wusc_edu_developer=
wusc_edu_manager=
wusc_edu_tester=

[wusc_edu:/]
//管理组读写权限
@wusc_edu_manager=rw

以上过程其实是调用了 svn 对应的命令做了相应的操作,和下面的这段描述功能一样

在库的页面点击库的连接url,进去发现认证失败,所以点击返回,在外面点击“设置用户组”,点进去之后点击“设置用户”,将admin移到右边,然后点击增加用户,下面的表格中会出现刚才的admin===》然后回到,在库的页面点击库的连接url,进去发现还是认证失败,(当前页面中已经给当前项目分给了manager并且是可读可写的权限)

配置库目录权限

# cd /svn
## ll
//发现wusc_edu这个目录权限拥有者是root root (是实际情况而定)
//因为当前的svn是通过apache访问的,所以当前是通过http访问的,所以是通过Apache的用户组访问
//vi /etc/httpd/conf/httpd.conf查找group字段,发现 User apache  , Group apache
//证明当前是apache用户在操作,所以要把wusc_edu授权改为apache
# chown -R apache.apache wusc_edu
//读写权限
# chmod -R 777 wusc_edu 

(如创建新库----修改名字wusc_edu为新的名字,需要对新建的库目录执行以上两步授权操作)
关闭 SELinux(Linux 的访问控制)
因为回合svn的目录访问有某些冲突,所以要禁用一下
修改/etc/selinux/config 文件

# vi /etc/selinux/config

将 SELINUX=enforcing 改为 SELINUX=disabled 重启机器即可

# reboot

重启成功后再次进入刚才的“在库的页面点击库的连接url,进去发现认证失败”,发现认证不是失败的了。

SVN 版本管理平台(Subversion+Apache+Jsvnadmin)的使用:

先安装 SVN 管理客户端 TortoiseSVN,方便对 SVN 库的操作和管理
http://tortoisesvn.net/downloads.html
(注意 64 位系统要安装 64 位版)

如果安装成功的话,鼠标右键===》TortoiseSVN===》Repo-broeser
输入刚才配置的库的地址http://192.168.4.221/svn/wusc_edul===》点击ok
设置用户密码===>点击ok

接下来可以对 wusc_edu 库进行相应的操作
(1) 用户组
(2) 用户
(3) 授权
(4) 导入项目
在这里插入图片描述
设置用户:

点击用户可以设置用户==>加入有新的成员进来了就输入账号密码==>选择角色(如果不是管理员就不用选择==>点击提交下面会出现新的用户==>点击查看权限==>下面会出现权限信息

授权:

点击右上角的项目==>设置用户组==>填入项目、用户组、描述==>提交==>设置用户==>移动用户,添加用户==>点击右上角的项目==>设置权限==>点击一下左边的项目==>右边的资源会自动选中目前的项目==>用户组的右边的任命点击“>”>点击下面的权限>点击右上角的用户==>点击查看权限,发现有了项目和权限

权限管理界面==>账号右边的*代表所有用户

回到linux服务器查看

cd svn
vi passwd.http
//发现有了刚才配置的用户,当然数据库中也有这个人,这里的配置文件就是从数据库中拿过来的
vi authz
//查看授权,发现这个人的授权是刚才配置的rw

如果新建一个库发现还是连接失败==>设置用户组==>设置用户==>把admin进行添加用户 即可
到svn目录下,发现又多了一个目录就是刚才添加的哪个项目名称,执行 ll,发现还是属于root用户的,需要再次执行上面的两步

# chown -R apache.apache wusc_edu
# chmod -R 777 wusc_edu 

以上库已经建好了
上面已经通过鼠标右键进入了TortoiseSVN,在工具的最上面可以输入库的url“http://192.168.4.221/svn/wusc_edu”
如果连接成功客户端下面会出现这个库的文件,右键==>add folder==>选择项目==>ok==>等待上传
注意:在上传文件的时候最好写上描述message,因为在linux的/svn目录下多了一个刚才上传的项目的路径,点进去有一个hooks(钩子),在hooks中可以设置开发人员需要写的注释,比如说最少五个字符之类的。

上传完成后页面中的库文件下会出现刚才上传的项目

将前几节中所有的项目导入
edu-common-parent(Maven父配置)
edu-common (公共工程)
edu-common-config (公共配置工程)
edu-common-core (公共core工程)
edu-common-web (公共web工程)
edu-facade-user(用户服务接口)
edu-service-user(用户服务实现)
edu-web-boss(服务消费者)

eclipse安装“SVN资源库”的插件
打开eclipse==>点击右上角“SVN资源库”进入SVn资源库空间, 在左侧项目区域右击空白处==>资源库位置==>添加url“http://192.168.4.221/svn/wusc_edu”>左侧项目区域的多了一个名为了http://192.168.4.221/svn/wusc_edui/wusc_edu的库,点击进去就是原来我们的项目
>全选项>右键
>检出项目
点击右上角“MyEclipse”回到Eclipse空间
有时候不希望提交target目录,在SVN资源库空间,打开项目,鼠标点击target目录右击==>删除==>进入eclipse工作空间==>点击项目右击==>team==>更新(发现target目录的图标变了)>点击target目录右击>delete==>点击项目右击==>team==>设置属性==>属性名==>svn ignore(设置忽略属性,将来不论target提交什么,都忽略)>这个时候不论做什么变化,target目录都没有黑星点形状的标识(原来是有的),即target目录不在受版本管理>右键team==>提交测验下

猜你喜欢

转载自blog.csdn.net/dataiyangu/article/details/88550692