文档章节

100:代码管理平台svn

芬野de博客
 芬野de博客
发布于 11/20 18:46
字数 2346
阅读 14
收藏 0

1:代码管理平台:代码版本管理工具,工作中用于代码更新,代码发布统计,代码版本控制;(频繁更新代码的版本记录),方便查阅历史变更,协同开发及合并;

版本管理工具发展:   cvs(编码兼容不太好)   ---->   svn    ----->   git  

svn(subversion),是一个开源版本控制系统,始于2000年;  C/S架构,要依赖于网络;

git是有linux创始人linus发起,目的用于更好的管理linux内核的代码;

git和svn的区别是:git是分布式,不需要依赖服务端就可以工作,

github是基于git的在线web页面的代码管理平台,可以选择付费服务;

gitlab可以认为是一个开源的github,两者没有直接关系

1:安装svn:yum    install   -y   subversion:

2:创建版本库;  创建一个目录----创建配置文件

[root@localhost_001 ~]# mkdir -p /data/svnroot/myproject
[root@localhost_001 ~]# svnadmin create /data/svnroot/myproject/
[root@localhost_001 ~]# ls /data/svnroot/myproject/
conf  db  format  hooks  locks  README.txt

3:进入到conf目录下; 有三个文件:                 /data/svnroot/myprojict/

[root@localhost_001 ~]# cd !$conf
cd /data/svnroot/myproject/conf
[root@localhost_001 conf]# ls
authz  passwd  svnserve.conf

authz:权限配置文件;

passwd:密码文件;

svnserve.conf: 仓库的配置文件;

4:编辑authz文件,修改其权限:

[root@localhost_001 conf]# vim authz 
[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average

[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
]
#新增如下内容:
admins = aming,user1          #定义组:          
[/]                     #根目录表示上面创建的/data/svnroot/myproject
@admins = rw        
*= r
[myproject:/]           #表示myproject这个项目
user1 = rw

注释:   [/]  和 [myproject:/]这是两种不同的方式:  

[/]   是只一个目录下所有项目表示是之前创建的svn的目录(/data/svnroot/myproject)

[myproject:/]  表示的是一个项目,只表示myproject这个项目;

5:编辑passwd,定义用户名和密码:          格式:    用户名    密码

[root@localhost_001 conf]# cat passwd 

[users]
# harry = harryssecret
# sally = sallyssecret
fenye = nihao123!
user1 = nihao123@
user2 = nihao123#

6:编辑仓库配置文件:svnserver.conf

[root@localhost_001 conf]# cat svnserve.conf 

[general]
anon-access = none                             #匿名用户没有权限;
auth-access = write                            #授权用户可以写的;(用户名和密码登录)
password-db = passwd                           #用户名和密码的文件存在在哪里;
authz-db = authz                               #权限的文件存放在哪里;
realm = /data/svnroot/myproject                #对哪一个项目生效;  绝对路径;

7:svn启动;    svnroot   -d   -r   /data/svnroot

[root@localhost_001 conf]# svnserve -d -r /data/svnroot/

8:svnserver监听端口是3690,

[root@localhost_001 conf]# ps aux |grep svn
root       2048  0.0  0.0 162240   656 ?        Ss   00:29   0:00 svnserve -d -r /data/svnroot/
root       2050  0.0  0.0 112720   972 pts/0    S+   00:29   0:00 grep --color=auto svn
[root@localhost_001 conf]# netstat -npt 
[root@localhost_001 conf]# netstat -lnpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      854/nginx: master p 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      819/sshd            
tcp        0      0 0.0.0.0:56888           0.0.0.0:*               LISTEN      819/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1044/master         
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      854/nginx: master p 
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      2048/svnserve  

9:在客户端测试:需要安装        yum      install   -y  subversion

然后在客户端连接远程svn服务器;  如下:

svn   checkout     svn://192.168.149.129/myproject   --username=fenye

输入密码后进入;  密码保存在服务器的passwd文件里哟;

[root@localhost_002 ~]# svn checkout svn://192.168.149.129/myproject --username=fenye
认证领域: <svn://192.168.149.129:3690> /data/svnroot/myproject
“fenye”的密码: 
-----------------------------------------------------------------------
注意!  你的密码,对于认证域:

   <svn://192.168.149.129:3690> /data/svnroot/myproject

只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。
你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?yes
取出版本 0。

2:用ls查看是有project这个目录的,然后进入这个目录,查看目录下的隐藏文件.svn(svn的配置文件在这个目录);

[root@localhost_002 ~]# ls        #用ls查看有project目录;
 myproject
[root@localhost_002 ~]# cd myproject/
[root@localhost_002 myproject]# ls -la
drwxr-xr-x   3 root root   18 11月 20 17:37 .
dr-xr-x---. 12 root root 4096 11月 20 17:37 ..
drwxr-xr-x   4 root root   75 11月 20 17:37 .svn

3:客户端的文件变更了之后,需要和服务端同步一下;那么如何同步了,如下:

本地创建一个fenye.txt的文件,然后使用svn  add ./fenye.txt  打标记,添加到版本管理数据库里;

然后使用svn   commit   -m   "add  fenye.txt"              把文件上传到服务器;

客户端:
[root@localhost_002 myproject]# touch fenye.txt
[root@localhost_002 myproject]# svn add ./fenye.txt             #添加版本控制中心;
A         fenye.txt
[root@localhost_002 myproject]# svn commit -m "add fenye.txt"   #上传至服务器;
正在增加       fenye.txt
传输文件数据.
提交后的版本为 1。

4:已经上传到了服务端,而在其他的客户端还是无法显示,那么怎么办;在另一个台客户端上查看:

使用  svn   up  同步其他客户端代码过来;

[root@localhost_04 ~]# svn checkout svn://192.168.149.129/myproject --username=fenye
认证领域: <svn://192.168.149.129:3690> /data/svnroot/myproject
“fenye”的密码: 
-----------------------------------------------------------------------
注意!  你的密码,对于认证域:
   <svn://192.168.149.129:3690> /data/svnroot/myproject
只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。

你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?yes
A    myproject/fenye.txt
取出版本 1。
[root@localhost_04 ~]# ls
anaconda-ks.cfg  myproject
[root@localhost_04 ~]# cd myproject/
[root@localhost_04 myproject]# svn up
正在升级 '.':
版本 1。
[root@localhost_04 myproject]# ls
fenye.txt

如上就可是在几个客户端之间同步了;

把当前目录下svn更新到最新版; svn  update   =     svn   up 

本地删除svn文件fenye.txt

[root@localhost_04 myproject]# ls
fenye.txt
[root@localhost_04 myproject]# svn delete fenye.txt
D         fenye.txt

删除远端服务器的svn文件fenye.txt

[root@localhost_04 myproject]# svn commit -m "delete fenye.txt"
正在删除       fenye.txt

提交后的版本为 2。

更新当前svn目录为最新版,服务端已经删除,本地还没有,更新下则删除本地的文件;

[root@localhost_002 myproject]# ls
fenye.txt
[root@localhost_002 myproject]# svn update
正在升级 '.':
D    fenye.txt
更新到版本 2。
[root@localhost_002 myproject]# ls

注释:svn客户端输入一次后就会记住密码;   位置:/root/.subversion/auth/svn.simple/

[root@localhost_002 ~]# cd /root/.subversion/auth/svn.simple/
[root@localhost_002 svn.simple]# ls
fe73cf291c2ec6f05f9a8b54789036fe
[root@localhost_002 svn.simple]# cat fe73cf291c2ec6f05f9a8b54789036fe 
K 8
passtype
V 6
simple
K 8
password
V 9
nihao123!
K 15
svn:realmstring
V 52
<svn://192.168.149.129:3690> /data/svnroot/myproject
K 8
username
V 5
fenye
END

如果不想记住,可以删除这个文件;  rm   -fr   

注释:系统里默认会记录曾经授权过的用户名和密码,不需要每次都输入;

如在02这个客户端删除/root/.subversion/auth/svn.simple/下文件,然后在02这台机器上在更新一个文件,然后在02在同步时则发现需要输入root的密码和密码,回车后输入用户名和密码,然后可以正常同步,如下;

客户端03:
[root@localhost_04 myproject]# touch yy.txt
root@localhost_04 myproject]# svn add ./yy.txt 
A         yy.txt
[root@localhost_04 myproject]# svn commit  -m "ch yy.txt"
正在增加       yy.txt
传输文件数据.
提交后的版本为 3。
客户端02:
[root@localhost_002 myproject]# svn up
正在升级 '.':
认证领域: <svn://192.168.149.129:3690> /data/svnroot/myproject
“root”的密码: 
认证领域: <svn://192.168.149.129:3690> /data/svnroot/myproject
用户名: fenye
“fenye”的密码: 
-----------------------------------------------------------------------
注意!  你的密码,对于认证域:
   <svn://192.168.149.129:3690> /data/svnroot/myproject
只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。
你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?yes
版本 2。
[root@localhost_002 myproject]# ls
yy.txt

这样既可以了;

也可以查看变更历史:  svn  log

[root@localhost_002 myproject]# svn log
------------------------------------------------------------------------
r3 | fenye | 2018-11-18 01:28:19 +0800 (日, 2018-11-18) | 1 行

ch yy.txt
------------------------------------------------------------------------
r2 | fenye | 2018-11-18 01:16:17 +0800 (日, 2018-11-18) | 1 行

delete fenye.txt
------------------------------------------------------------------------
r1 | fenye | 2018-11-18 01:02:17 +0800 (日, 2018-11-18) | 1 行

add fenye.txt
------------------------------------------------------------------------

7:在windows如何使用svn客户端;    tortoisesvn小乌龟

首先在https://tortoisesvn.net官网下载软件,对应电脑32位和64位来下载;

然后在D盘的123目录下创建一个文件夹myproject;

右击目录--->svn   checkout 

url  of   repository    设置svn服务的地址:      svn://192.168.149.129/myproject

checkout  directory     D:/123/myproject  

点击保存,添加用户名和密码;

在windows客户端创建了一个文件后,点击文件右键---->tortoisesvn---> add(带了一个小加号)    也需要使用commit提交才可以;

注释:挡在linux客户端更新后,需要在windows客户端也要修改使用svn  up,  也是右击才可以;

扩展:

svn的钩子  http://coolnull.com/1716.html

gitlab修改端口  http://blog.csdn.net/arybd/article/details/54635295

修改主机名 http://www.mamicode.com/info-detail-1316828.html

第三方邮件 http://blog.csdn.net/liuruiqun/article/details/50000213

应该修改  /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

# If you use non-standard ssh port you need to specify it

ssh_port: xxxxx

gitlab的钩子相关配置 http://fighter.blog.51cto.com/1318618/1670667

 

 

 

 

© 著作权归作者所有

共有 人打赏支持
芬野de博客
粉丝 10
博文 117
码字总数 210100
作品 0
海淀
程序员
私信 提问
 代码管理平台介绍、安装svn、客户端上使用svn(linux)、客户端上使用svn(windows)

代码管理平台介绍 代码管理平台介绍--svn 版本控制,记录若干文件内容变化,以便将来查阅特定版本修订情况. 比如某一个业务,需要不断更新,比如产品经理这周提交了产品新的需求,改动了一些...

Linux_Anna
2017/10/23
0
0
SVN 有任何胜过 git 的地方吗?

好的技术问题通常会引出技术专家们依据经验得出的深层次的观点。但对于这样的问题的答案也很容易演变成完全基于个人喜好的情绪倾泄,而不是根据事实、标准和具体的专业知识。就比如本文的这个...

oschina
2013/12/17
13.9K
62
项目 | SVN 环境搭建与使用

最近有机会接触到公司的新项目,对于多人参与的项目,充分感受到 的重要性。为了深刻理解和复用起见,本文将从 、 和 多方面总结 SVN。 当然,版本控制的工具有很多,譬如 CVS、GIT、SVN,C...

Kofe_
08/27
0
0
2014-01-16 SVN使用手册Windows X86平台

1.安装Setup-Subversion-1.8.5.msi http://jaist.dl.sourceforge.net/project/win32svn/1.8.5/Setup-Subversion-1.8.5.msi 2.安装VisualSVN-Server-2.7.3.msi http://www.visualsvn.com/fil......

查封炉台
2014/01/16
0
0
MoPaaS服务使用之SVN-Docker

上周MoPaaS V2更新了,推出了最新的V2.7版本,哎哟,看上去不错哦!究竟有什么新内容我也是好奇的很呐,除了微信中看到的免费套餐,及手机APP推送之外,我还发现了一个新奇的玩意儿。瞧,就这...

Amethyst_C
2015/11/19
587
0

没有更多内容

加载失败,请刷新页面

加载更多

Impala和Hive集成Sentry、Kerberos认证

关于 Kerberos 的安装和 HDFS 配置 kerberos 认证,请参考 HDFS配置kerberos认证。 关于 Kerberos 的安装和 YARN 配置 kerberos 认证,请参考 YARN配置kerberos认证。 关于 Kerberos 的安装和...

hblt-j
10分钟前
0
0
Ubuntu 18.04 PostgreSQL 11 apt 默认安装某些问题解析

首先默认安装软件(本文以PostgreSQL 11.1为例,其他版本类似)。 sudo apt install postgresql-11 等待软件自动安装并完成配置,启动服务。 服务状态如下: vmware@vmware-virtual-machine:...

白豆腐徐长卿
23分钟前
1
0
一步步动手实现高并发的Reactor模型 —— Kafka底层如何充分利用多线程优势去处理网络I/O与业务分发

一、从《Apeche Kafka源码剖析》上搬来的概念和图 Kafka网络采用的是Reactor模式,是一种基于事件驱动的模式。熟悉Java编程的读者应该了解Java NIO提供了Reactor模式的API。常见的单线程Jav...

Anur
27分钟前
1
0
数字信号处理各种处理及图象

https://wenku.baidu.com/view/b1bb67f1f90f76c661371a75.html?sxts=1544696459935

whoisliang
30分钟前
1
0
rabbitmq学习

使用docker安装rabbit docker run -d --hostname my-rabbit --name rabbit -p 8080:15672 rabbitmq:management--hostname:指定容器主机名称--name:指定容器名称-p:将mq端口号映射到本地...

元谷
45分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部