Linux下搭建版本控制器SVN-创新互联

    关于版本控制器,大致可分为集中式和分布式两种。

创新互联公司是一家专业提供潜山企业网站建设,专注与成都网站建设、成都网站制作H5技术、小程序制作等业务。10年已为潜山众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。

    集中式的版本控制器通常会存在一个中央服务器,主要是用来存放版本库的,(这里暂且先不说分支的事)当我们工作之前,首先需要从中央服务器得到一份最新版本的代码,修改完毕之后,再次推送到中央服务器。集中式的版本控制器有个大的缺点,就是必须要联网才能工作,同时,一旦中央服务器挂掉,整个项目就全部奔溃,但是用起来确实要方便一些。

Linux下搭建版本控制器SVN

    分布式版本控制器的优势就很明显了,对于分布式的版本控制器,并没有中央服务器一说,加入该版本控制器的每个人的电脑上都有一个完整的版本库,因此,也同时避免了联网的缺点。当进行了本地的修改之后,只要推送给彼此,各自的修改就都可以看到。为了方便,通常的分布式版本控制器中也有一台类似于中央处理器的机器,只是为了大家相互推送的时候更加地方便,即使一台服务器down掉,只需要再拷贝一个版本库即可,容灾性要好得多。

Linux下搭建版本控制器SVN

    对于这两种版本控制器,SVN是集中式的代表,Git是分布式的代表,两者各有优缺点,在互联网公司中,两者都有着一定的应用。这里要说的是SVN的搭建与操作。

环境:  CentOS6.5

操作之前:安装svnserver,直接使用yum安装即可,一些情况下,电脑是自动安装了svn和git的

开始操作:

1、SVN仓库的建立

a、创建项目目录dir,并进行仓库初始化

   mkdir  /svn_repo

   svnadmin create /svn_repo

b、修改仓库目录下的conf文件夹下的三个文件的内容,每行开头没有空格

   authz:权限相关信息

 [/]                # 仓库所在目录

 muhui = rw         # 给muhui用户rw权限

 *=                # 其他用户没有任何权限

   passwd:用户名和密码相关信息

user = passswd

   svnserver.conf:相关配置路径

 anon-access = none         匿名用户权限

 auth-access = write        授权用户有写权限

 password-db = passwd        密码文件,未指定路径,表示当前目录

 authz-db = authz         权限文件

 realm = /svn_repo/httpd       版本库所在目录

2、SVN项目目录

a、创建主工作目录manager

     [root@bogon svn_test]# tree

     .

     └── manager

       └── httpd

         ├── branched     # 子分支目录

         ├── tags

         └── trunk      # 主分支目录

   进入到manager目录,3将manager的目录结构同步到仓库,在httpd项目目录下,有了这个三个文件夹。

     svn import httpd svn://127.0.0.1/httpd -m "init httpd"

b、创建用户,并将主分支的代码检出到本地。

   mkdir -p  /svn_test/dev1

   cd  /svn_test/dev1

   svn  co svn://127.0.0.1/httpd/trunk httpd

c、文件修改,并提交文件

     [root@bogon httpd]# vim main.cpp

     [root@bogon httpd]# ls

     main.cpp

     [root@bogon httpd]# svn st

     ?    main.cpp                            #  ?表示该文件未纳入版本控制

     [root@bogon httpd]# svn add main.cpp       # add将该文件添加到版本控制

     A     main.cpp

     [root@bogon httpd]# svn ci -m "dev1 modify"  # 将修改提交到服务器

     增加      main.cpp

     传输文件数据.

     提交后的版本为 2。

3、多人协作

    需要说明的一点,多人协作,和多分支操作是两个概念。一个分支上可以有多个user在操作,这里说的是在主分支下的多用户操作。

a、创建用户dev2,下拉代码修改并再次提交

[root@bogon httpd]# pwd

/svn_test/dev2/httpd

[root@bogon httpd]# vim main.cpp

[root@bogon httpd]# svn st

M    main.cpp

[root@bogon httpd]# svnup              # 更新代码,防止远程库代码已被更改

版本 2。

[root@bogon httpd]# svn log             # 查看提交日志信息

.........

[root@bogon httpd]# svn diff             # 查看修改信息

.........

[root@bogon httpd]# svn ci -m "dev2 write sub"    # 提交代码到仓库

.........

b、冲突解决

   冲突原因:多个用户同时下拉一份代码进行修改,修改完毕在提交之前,未再次svn  up更新,多个用户同时对一个版本进行修改,造成冲突。

[root@bogon httpd]# svn ci -m "dev1--complict"       # 提交失败,存在冲突

正在发送    main.cpp

传输文件数据.svn: 提交失败(细节如下):

svn: 文件 “/trunk/main.cpp” 已经过时

[root@bogon httpd]# svn up

在 “main.cpp” 中发现冲突。

选择: (p) 推迟,(df) 显示全部差异,(e) 编辑,

    (mc) 我的版本, (tc) 他人的版本,

    (s) 显示全部选项: p                         # p选项,进行延时

C  main.cpp

更新到版本 4。

冲突概要:

 正文冲突:1

            # 出现很多临时文件,为各个版本的源文件

[root@bogon httpd]# svn resolve --accept working main.cpp      # 冲突双方进行协商,修改源文件,之后临时文件被删除

“main.cpp”的冲突状态已解决

[root@bogon httpd]# svn ci -m "deal complict"           # 再次提交,冲突解决

4、分支操作

a、分支创建

     [root@bogon dev3]# svn copy svn://127.0.0.1/httpd/trunk svn://127.0.0.1/httpd/branched/branch2 -m "add new branch2"        提交后的版本为 6。

    #  svn分支创建的过程,实际上是对主分支的一份拷贝

b、查看共有多少个分支

 [root@bogon dev3]# svn list svn://127.0.0.1/httpd/branched -v            6 muhui                 5月 28 09:38 ./            6 muhui                 5月 28 09:38 branch2/

c、从分支branch2分支检出代码到当前工作目录,并查看当前属于那个分支

 [root@bogon dev3]# svn  co svn://127.0.0.1/httpd/branched/branch2  httpd      A    httpd/main.cpp      取出版本 6。      [root@bogon httpd]# svn info      路径: .      URL: svn://127.0.0.1/httpd/branched/branch2      版本库根: svn://127.0.0.1/httpd      版本库 UUID: 39c9dc13-9f79-4073-bb0e-2b58c9b71fbb      版本: 6      节点种类: 目录      调度: 正常      最后修改的作者: muhui      最后修改的版本: 6      最后修改的时间: 2017-05-28 09:38:49 +0800 (日, 2017-05-28)

d、分支合并操作,要在主分支目录下进行合并

分支上的用户修改文件内容,并检入到分支

  [root@bogon httpd]# svn ci -m "branch2 modify"      正在发送       main.cpp      传输文件数据.      提交后的版本为 7。

获取查看分支时的版本号

 [root@bogon httpd]# svn log --verbose --stop-on-copy      ------------------------------------------------------------------------      r6 | muhui | 2017-05-28 09:38:49 +0800 (日, 2017-05-28) | 1 行      改变的路径:         A /branched/branch2 (从 /trunk:5)      add new branch2      ------------------------------------------------------------------------

获取主干目录的最新版本号

 [root@bogon httpd]# svn up        版本 7。

分支合并

  [root@bogon httpd]#  svn merge -r 6:7 svn://127.0.0.1/httpd/branched/branch2

5、版本回退

1、仅仅修改源文件,但还未进行ci操作

[root@bogon httpd]#   svn  revert main.cpp

2、修改完毕的结果已经进行了commit

[root@bogon httpd]# svn  up          # 获取版本库最新版本       [root@bogon httpd]# svn  log         # 找到要回滚的版本号 [root@bogon httpd]# svn merge -r 9:8  main.cpp         # merge进行回退,9表示当前版本号,8表示要回退到的版本号

            ------muhuizz整理

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


标题名称:Linux下搭建版本控制器SVN-创新互联
转载来源:http://myzitong.com/article/doihio.html