专栏首页阿dai_linux代码管理工具——SVN 原

代码管理工具——SVN 原

SVN

版本控制的作用:记录若干文件内容变化,以便将来查阅特定版本修订情况。 版本管理工具发展简史,cvs-->svn-->Git(参考:http://luckypoem14.github.io/test/2012/04/24/scm-history/ )。 svn全称subversion,是一个开源版本控制系统(C/S架构),始于2000年;git(gitlab/GitHub)是linux创始人linus发起的,2005年发布,最初目的是更好管理linux内核代码, gitlab可以认为是一个开源的github,两者没有直接关系;git和svn不同在于git不需要依赖服务端就可以工作,即git是分布式的。

服务端安装和配置SVN

IP:192.168.8.131 系统:centos7

安装:
[root@linux ~]# yum install -y subversion

创建版本库:
[root@linux ~]# mkdir -p /data/svnroot/myproject  

版本库初始化:
[root@linux ~]# svnadmin create /data/svnroot/myproject
[root@linux ~]# ll /data/svnroot/myproject/
总用量 8
drwxr-xr-x 2 root root  54 10月 30 18:55 conf
drwxr-sr-x 6 root root 233 10月 30 18:55 db
-r--r--r-- 1 root root   2 10月 30 18:55 format
drwxr-xr-x 2 root root 231 10月 30 18:55 hooks
drwxr-xr-x 2 root root  41 10月 30 18:55 locks
-rw-r--r-- 1 root root 229 10月 30 18:55 README.txt

进入配置文件目录:
[root@linux ~]# cd /data/svnroot/myproject/conf/
[root@linux conf]# ls
authz  passwd  svnserve.conf  
##authz:控制权限
##passwd:密码文件
##svnserve.conf:仓库配置文件  

配置用户及权限:
[root@linux conf]# vim authz
[groups]
admins = adai,user1
##admin:组名
##adai,user1:两个用户
[/]
##[/]:指定目录,“/”代表仓库的根目录,即/data/svnroot/myproject/
@admins = rw
##指定admins组所对应的权限
* = r
##指定others用户对应的权限
[myproject:/]
##myproject:项目名称,该方法适合SVN有多个项目(或有多个子项目)时使用
user1 = rw

配置用户密码:  
[root@linux conf]# vim passwd
[users]
adai = 123456
user1 = 123456
##为了提高安全性,真是环境要设置复杂密码

配置仓库文件:
[root@linux conf]# vim svnserve.conf
[general]
anon-access = none
##指定匿名用户权限
auth-access = write
##指定认证用户权限
password-db = passwd
##指定用户密码文件
authz-db = authz
##指定用户权限文件
realm = /data/svnroot/myproject
##指定对用的仓库文件(绝对路径)

启动SVN:
[root@linux conf]# svnserve -d -r /data/svnroot/
##-d:表示后台运行
##-r:=restrict(限制、约束)限制只输出指定路径下的版本库

查看进程及端口:
[root@linux conf]# ps aux |grep svn
root      2543  0.0  0.1 162188   656 ?        Ss   19:30   0:00 svnserve -d -r /data/svnroot/
[root@linux conf]# netstat -lntp |grep svn
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      2543/svnserve     

注意: 在客户端进行连接之前要保证server端没有相关的防火墙规则拦截该服务。

客户端安装和使用SVN

Linux系统

IP:192.168.8.130 系统:centos7

安装:
[root@client ~]# yum install -y subversion

进入测试目录:
[root@client svntest]# pwd
/home/svntest

捡出代码(客户端1):
[root@client svntest]# svn checkout svn://192.168.8.131/myproject --username=adai
认证领域: <svn://192.168.8.131:3690> /data/svnroot/myproject
“adai”的密码: 

##如果该机器从未使用过SVN
##执行该命令后将在本机保存一个曾连接过的SVNserver的用户名和密码
##--username:指定用户  
##192.168.8.131:服务端IP
-----------------------------------------------------------------------
注意!  你的密码,对于认证域:

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

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

你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?yes

[root@client svntest]# ls
myproject
[root@client svntest]# ls myproject/
[root@client svntest]# ls -a
.  ..  myproject
[root@client svntest]# ls -a  myproject/
.  ..  .svn

测试

[root@client svntest]# cd myproject/
[root@client myproject]# ls
[root@client myproject]# cp /etc/fstab ./
[root@client myproject]# ls
fstab

上传本地文件到服务端:
[root@client myproject]# svn add ./fstab 
A         fstab
##添加项目

[root@client myproject]# svn commit -m "add fstab"
正在增加       fstab
传输文件数据.
提交后的版本为 1。
##提交项目
##-m:=mark,做标记

在服务端使用user1作为用户登录(作为客户端2):
[root@linux myproject]# mkdir /home/svntest2
[root@linux svntest2]# pwd
/home/svntest2
[root@linux svntest2]# svn checkout svn://192.168.8.131/myproject --username=user1
A    myproject/fstab
取出版本 1。
[root@linux svntest2]# ls
myproject
[root@linux svntest2]# cd myproject/
[root@linux myproject]# ls
fstab
##此时,在客户端1中提交的文件被同步到客户端2中
##再次上传新文件后可以使用命令:svn update进行同步


客户端1:
[root@client myproject]# vim test.txt
[root@client myproject]# ls
fstab  test.txt
[root@client myproject]# svn add ./test.txt 
A         test.txt
[root@client myproject]# svn commit -m "add test.txt"
正在增加       test.txt
传输文件数据.
提交后的版本为 2。


客户端2:
[root@linux myproject]# ls
fstab
[root@linux myproject]# svn update 
正在升级 '.':
已还原“test.txt”
版本 2。
[root@linux myproject]# ls
fstab  test.txt
##注:此处update可以简写为up


客户端密码文件保存位置:
[root@client svn.simple]# pwd
/root/.subversion/auth/svn.simple
[root@client svn.simple]# ls
3e416d0d3d501036e774e769d63df7c7
[root@client svn.simple]# cat 3e416d0d3d501036e774e769d63df7c7

##如果在某客户端删除该文件,再次使用svn update进行同步时会提示输入root用户名和密码
##在此,直接回车,然后输入svn指定的用户和密码即可


删除文件:  
[root@linux myproject]# svn delete filename  //在本地删除
[root@linux myproject]# svn commit -m “delete filename” //在服务器上删除
[root@linux myproject]# svn update //把当前目录下的文件都更新到最新版

[root@linux myproject]# svn log //查看变更日志

Windows系统

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • chmod命令、chown命令、chgrp命令、umask命令、chattr命令、lsattr命令

    语法: chgrp [-R] [组名] filename (-R表示级联更改,只针对目录文件)

    阿dai学长
  • Keepalived+LVS(DR)集群之一键部署rs机器路由转发

    且dir机器与rs机器均关闭防火墙(SELinux&firewalld)并安装rsync工具。

    阿dai学长
  • 分发系统——expect 原

    (adsbygoogle = window.adsbygoogle || []).push({});

    阿dai学长
  • leecode刷题(24)-- 翻转二叉树

    二叉树问题,我们首先要想到的使用递归的方式来解决,有了这个思路,处理这道问题就很简单了:先互换根节点的左右节点,然后递归地处理左子树,再递归地处理右子树,直到所...

    希希里之海
  • LeetCode 783 & 530 Distance Between BST Nodes

    Given a Binary Search Tree (BST) with the root node root, return the minimum dif...

    大学里的混子
  • 226 Invert Binary Tree

    /** * Definition for a binary tree node. * function TreeNode(val) { * thi...

    用户1624346
  • 8 比对及找变异步骤的质控

    完成后会生成SRR8517856_bqsr_stats类似的文件夹 现在建立一个qualimap文件夹,把上面这种文件夹都移动到里面

    Y大宽
  • 【leetcode刷题】T129-翻转二叉树

    https://leetcode-cn.com/problems/invert-binary-tree/

    木又AI帮
  • BST & AVL 二分搜索树 & 平衡二叉树的实现原理

    本文完整的实现了基本的BST,由于注重的是逻辑和原理的实现,所以没有采用泛型。注意方法的访问修饰符。

    大学里的混子
  • [Leetcode][python]Path Sum/路径总和

    后端技术漫谈

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动