温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

一、代码管理平台介绍、安装SVN、客户端上使用SVN(Linux)、Windows

发布时间:2020-08-10 22:05:08 来源:网络 阅读:768 作者:seventeen_ 栏目:系统运维

一、代码管理平台介绍

版本控制,记录若干文件内容的变化,以便将来查阅特定版本修订情况

版本管理工具发展简史,CVS→SVN→Git

CVS:兼容性不太好。

SVN:太慢。全名:Subversion,是一个开源版本控制系统,始于2000年。

Git:Linux创始人linus发起的,2005年发布,最初目的是更好的管理Linux内核代码。

Git和SVN不同在于Git不需要依赖服务端就可以工作,即Git是分布式的。


关于Git和SVN的比较,参考http://blog.lishiming.net/?p=305

SVN和Git的最主要的差异——分布式。

SVN优势:

1.存储

SVN服务器既具有CVS所具有数据储存的优点,数据一般不会丢失,同时又拥有自己的特色。SVN是通过关系数据库及二进制的存储方式,同时解决了既往不能同时读写同一文件等问题,同时增添了自己特有的“零或一”原则。

2.速度

与初始的CVS相比,SVN在速度运行方面有很大提升。因为SVN服务器只支持少量的信息、资源传输,与其他系统相比,更支持的是离线模式,因此避免了网络拥挤现象的出现。

3.安全性

SVN是一种技术性更加安全的产品,实现了系统和控制两方面的结合。一方面可以将系统整体的安全功能有效地分布在分支系统中,进而保证分支系统能正常运行,从而使各分支系统能够互补,最终在系统整体性的安全性得以保障,通过均衡原则实现最终追求安全的目的。


Git优劣势:

优点:

适合分布式开发,强调个体。

公共服务器压力和数据量都不会太大。

速度快、灵活。

任意两个开发者之间可以很容易的解决冲突。

离线工作。

缺点:

资料少(起码中文资料很少)。

学习周期相对而言比较长。

不符合常规思维。

代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。


GitHub是基于Git的在线web页面代码托管平台,可以选择付费服务。

Gitlab可以认为是一个开源的GitHub,两者没有直接联系。

一句话区分,git是管理工具,github是在线的基于git的平台(或者叫做服务)。gitlab和github一样,也是一个基于git的提供web界面的代码管理平台。


二、安装SVN

# yum install -y subversion

创建版本库

# mkdir -p /data/svnroot/myproject   //该目录路径可自定义

# svnadmin create /data/svnroot/myproject     //在这个目录下初始化一些文件

# cd !$/conf   #authz为权限配置文件,passwd为密码文件,svnserve.conf为SVN仓库的配置文件。

# vim authz  //配置文件新增内容如下:
[groups]
admins = aming,user1   //加到用户组的下面

[/]
@admins = rw   //@后面跟组名
* = r   //除了admins组以外的所有人只有只读的权限。

[myproject:/]
user1 = rw
# myproject指项目名,这种用法适合于/data/svnroot/有多个项目的情况下,这只是其中一个项目而已。
# 带冒号指的是一个项目名,这里只有一个项目,可以在这下面创建子目录dir1,dir2。可以写成[/dir1]、[/dir2]的形式。
# 两种不同的形式表达而已。一种是[/dir1]、一种是[myproject:/],一个意思。因为这里只有一个项目。


aliases:别名

groups:用户组

[/]:指的是/data/svnroot/myproject这个目录。

仓库里面的目录或者项目里面的目录,针对这些项目配置的关于用户和组的读写权限:

[/foo/bar]

[repository:/baz/fuz]

# vim passwd  //[users]下新增
[users]
aming = aming_!(*$123     ##左边是用户,右边是密码。
user1 = user1_^^^123
user2 = user2-***123

# vim svnserve.conf
[general]  ##在下面增加这5行内容
anon-access = none  ##匿名用户,没有权限
auth-access = write  ##被授权的用户,有写权限
password-db = passwd  ##用户密码存储位置
authz-db = authz  ##权限控制文件位置,这里只写一个字符串,表示这个字符串就是一个文件名,位置在当前目录下,针对svnserve.conf的相对路径。
realm = /data/svnroot/myproject  ##表示对哪一个项目生效,绝对路径。

# svnserve -d -r /data/svnroot/   //启动SVN,-d:deamon的形式,后台启动;-r:指定SVN所在路径;后面也可以跟到项目名。
# ps aux |grep svn
root       1621  0.0  0.0 162200   656 ?        Ss   19:53   0:00 svnserve -d -r /data/svnroot/
root       1623  0.0  0.0 112676   984 pts/0    S+   19:53   0:00 grep --color=auto svn
# netstat -lntp |grep svn
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      1621/svnserve
# iptables -nvL  //检查一下有没有防火墙规则,有的话后续操作不会太顺利。


三、客户端上使用SVN(Linux)

# yum install -y subversion  //另一台机器上安装,安装好后就可以使用svn命令了。
# mkdir svntest
# cd !$
# svn checkout svn://192.168.93.130/myproject --username=aming  //checkout,检出代码。如果你到一台机器上,从来没有连接过svn服务器的情况下,执行这一步以后,它就可以在本机上保存一个曾经你连接过的svnserve的用户名和密码。上面这条命令可以把远程服务端的myproject项目搞到本地来。
认证领域:  /data/svnroot/myproject
“aming”的密码: aming_!(*$123          //此处的密码就是配置文件中设置的密码
-----------------------------------------------------------------------
注意!  你的密码,对于认证域:

    /data/svnroot/myproject

只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。

你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?yes   //将密码存在了/root/.subversion/servers下
取出版本 0。
[root@MRX svntest]# ls
myproject
# cd project ; ls -la
总用量 0
drwxr-xr-x 3 root root 18 8月  29 18:43 .
drwxr-xr-x 3 root root 23 8月  29 18:43 ..
drwxr-xr-x 4 root root 75 8月  29 18:43 .svn

[root@MRX myproject]# cp /etc/fstab .
# svn add ./fstab  //添加到版本控制中心,把变更的想要搞到服务器上去的东西做个标记
A         fstab
# svn commit -m "add file"   //把文件上传到服务器。先增加,再上传。
# svn commit -m "add fstab"
正在增加       fstab
传输文件数据.
提交后的版本为 1。
# svn delete filename  //在本地删除
# svn commit -m "delete filename"  //在服务器上删除
[root@MRX myproject]# svn delete fstab 
D         fstab
[root@MRX myproject]# svn commit -m "delete fstab"
正在删除       fstab

提交后的版本为 2。
# svn update  //把当前目录下的文件都更新到最新版,把本地的和服务端的同步。
# svn log  //查看变更日志
/root/.subversion/auth/svn.simple下的密码文件,如果某个用户不想存储了,可以删除这个文件。


四、客户端上使用SVN(windows)

官网 https://tortoisesvn.net/index.zh.html

下载TortoiseSVN 并安装

简明教程 http://www.jianshu.com/p/6b3b7b915332

下载好后随便选择一个文件夹,比如新建一个myproject,右键文件夹可以看到SVN Checkout和TortoiseSVN。

第一次使用时,也要先SVN checkout,点击之后,会弹出来一个窗口,在最上面的URL of repository里定义一下服务地址和项目地址就可以点OK了:svn://192.168.93.130/myproject。


点OK后再定义用户名和密码:

aming , aming_!(*$123

再点OK


试验:

在Windows的myproject目录下创建一个txt文档,内容随便写一点。再右键该文档,和在Linux上同样的操作,TortoiseSVN→add,再右键SVN commit,在上方空白框内输入add 123.txt,再点OK就可以了。


再到服务端或者另一台客户端上svn update同步一下,就可以看到123.txt了。

在Linux上写了文档,同样的操作,再到Windows上右键SVN update一下,同样可以看到这个111.txt。

# svn add 111.txt
A         111.txt
[root@MRX myproject]# svn commit -m "add 111.txt"
正在增加       111.txt
传输文件数据.
提交后的版本为 4。


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI