美文网首页我爱编程
macbook SVN 版本控制工具的使用

macbook SVN 版本控制工具的使用

作者: Jason_M_Ho | 来源:发表于2018-04-02 22:10 被阅读0次

    Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统。

    在 Linux 系统上安装 svn 很简单,执行 yum install subversion 即可。

    而在 mac 电脑上自带 svn,可使用命令 svn --version 查看版本,笔者的是
    svn, version 1.9.4 (r1740329) compiled Apr 10 2017, 20:36:46 on x86_64-apple-darwin15.0.0

    无论什么系统,使用 svn 都是差不多的。

    一、创建代码仓库

    先在 /Users/jason/ 目录下新建一个 svn 目录,以后可以在这个目录下创建多个仓库目录;
    打开终端,创建一个mycode仓库,输入指令:svnadmin create /Users/jason/svn/mycode
    创建成功后会在 mycode 文件夹下面出现多个文件和目录,这是用来控制版本的,说明仓库已经建好。

    二、配置svn的用户和权限

    主要是修改/svn/mycode/conf目录下的三个文件
    svnserve.conf --> svn服务的配置
    passwd --> 设置用户名和密码
    authz --> 用户组权限管理

    1、 打开svnserve.conf,将下列配置项前面的#和空格都去掉(注意空格一定要去掉)
    这几行配置所在行第一个字母前不能有任何空格,配置项等号左右两边各一个空格。配置项后面也不要紧跟着#之类的注释字符,否则会报错。

    anon-access = read
    auth-access = write
    password-db = passwd
    authz-db = authz
    

    anon-access = read代表匿名访问的时候是只读的,若改为anon-access = none代表禁止匿名访问,需要帐号密码才能访问。

    2、 打开 passwd,在[users]下面添加帐号和密码

    [users]
    jason = 123456
    guest = 123456
    

    一个账号是 jason,密码是123456
    一个账号是 guest,密码是123456

    3、打开authz,配置用户组和权限
    我们可以将在 passwd 里添加的用户分配到不同的用户组里,以后的话,就可以对不同用户组设置不同的权限,没有必要对每个用户进行单独设置权限。
    - 配置用户组
    在[groups]下面添加组名和用户名,多个用户之间用逗号(,)隔开
    [groups]
    mygroup = jason,guest
    说明 jason 和 guest 同在 mygroup 这个组,下面再进行权限配置。
    - 配置权限
    使用[/]代表svn服务器中的所有资源库
    [/]
    @mygroup = rw
    上面的配置说明 mygroup 这个组中的所有用户对所有资源库都有读写(rw)权限,组名前面要用@;如果是用户名,不用加@,比如 jason 这个用户有读写权限
    [/]
    jason = rw

    4、 启动svn服务器
    在终端输入下列指令:svnserve -d -r /Users/jason/svn
    或者输入:svnserve -d -r /Users/jason/svn/mycode
    没有任何提示就说明启动成功了
    可以通过 ps -A | grep svnserve查看有没有启动,如果有启动,就会有一个线程。

    5、 关闭svn服务器
    关闭svn服务器,可以通过活动监视器,找到 svnserve 进程,结束它;
    或是通过 ps -A | grep svnserve,查出线程号,直接 kill 掉;
    或是简单直接的 killall svnserve

    注:首次配置完先关闭svn服务器再进行数据的上传和下载操作。

    三、使用svn客户端功能

    1. 从本地导入代码到服务器(第一次初始化导入)

    在终端中输入
    svn import /Users/jason/Desktop/test svn://localhost/mycode/test --username=jason --password=123456 -m "第一次导入"
    将/Users/jason/Desktop/test中的所有内容,上传到服务器 mycode 仓库的 test 目录下,后面双引号中的"第一次导入"是注释

    导入到服务器上的文件在 svn/mycode/test 里面的文件夹里是找不到的,那么,文件到底提交到哪去了呢?SVN在服务器端的存储方式和客户端是不一样的,在服务器端是看不到源文件的。SVN服务器端默认采用的FSFS格式存储文件,这些数据存放在版本库的 db 目录中,里面的 revs 和 revprops 分别存放着每次提交的差异数据和日志等信息,而且它是将每次 commit 的内容以增量方式存放的,每个增量包存成1个文件,这个增量包中包括了这次commit的全部数据。

    2. 从服务器端下载代码到客户端本地

    在终端中输入
    svn checkout svn://localhost/mycode --username=jason --password=123456 /Users/jason/Desktop/test
    将服务器中 mycode 仓库的内容下载到 /Users/jason/Desktop/test 目录中

    checkout 到本地文件夹的文件会有一个 .svn 的隐藏文件夹,表示这个文件夹是受 svn 控制的,.svn 里面是版本控制的元数据信息。

    要导入文件有两种做法:
    (1) 用import指令,将客户端文件夹导入到服务器端
    (2) 先checkout空库到客户端,然后将要导入的文件夹放入客户端checkout产生的空文件夹,然后执行add将这些文件夹纳入SVN控制,最后执行commit上传到服务器。

    第一步是从本地文件到服务器文件的关联,第二步是从服务器到本地文件的关联,这两步都是使服务器和本地产生关联;
    使用 svn 一定要明确两个概念:仓库和工作区
    仓库指的是服务器上的代码仓库,比如这里的 mycode 目录;
    工作区是指每一台电脑上具体的工作目录,比如这里的 test 目录。

    3. 提交代码到服务器

    在步骤2中已经将服务器端的代码都下载到了 /Users/jason/Desktop/test 目录中,现在增加一个 readme.txt,然后提交到服务器

    (1) 打开终端,先定位到 /Users/jason/Desktop/test 目录,创建一个 readme.txt 文件;

    (2) 输入提交指令:svn add readme.txt; 把新创建的文件添加到缓存区;

    (3) 输入提交指令:svn commit -m "第二次提交,增加了readme.txt"

    可以看到终端的打印信息:

    Adding (bin) readme.txt
    Transmitting file data .done
    Committing transaction...
    Committed revision 2.

    4. 更新服务器端的代码到客户端

    这个应该是最简单的指令了,就是把服务器上最新的版本更新下来,在终端中定位到客户端代码目录后,比如上面的 /Users/jason/Desktop/test 目录,然后再输入指令:svn update
    一般提交之前需先更新,否则别人上传的新版本你没有更新下来就会被覆盖,别人上传的就丢失了。

    5. 了解 svn 的更多用法,在终端输入:svn help

    注:

    1、系统自带的svn无法支持本地删除文件的更新,即当本地删除文件后去更新服务器的文件时,删除的文件又从服务器上的文件夹中下载到你的本地文件夹中。但是它是支持文件修改后的更新操作的。
    2、记得写注释,否则系统不会识别命令。

    相关文章

      网友评论

        本文标题:macbook SVN 版本控制工具的使用

        本文链接:https://www.haomeiwen.com/subject/mllfhftx.html