• linux svn使用


     SVN是一种版本管理系统,前身是CVS,是开源软件的基石。即使在沟通充分的情况下,多人维护同一份源代码的一定也会出现混乱的情况,版本管理系统就是为了解决这些问题。


    SVN中的一些概念 : 
    a. repository(源代码库) 
       源代码统一存放的地方。 
    b. Checkout (提取) 
       当你手上没有源代码的时候,你需要从repository checkout一份。 
    c. Commit (提交) 
       当你已经修改了代码,你就需要Commit到repository。 
    d. Update (更新) 
        当你已经Checkout了一份源代码, Update一下你就可以和Repository上的源代码同步,你手上的代码就会有最新的变更。   

    Centos 搭建SVN服务,有效的管理代码,以下三步可以快速搞定。

    1、安装          

    [root@www ~]# yum install subversion 

    [root@www ~]# svnserve --version   判断是否安装成功 
      svnserve, version 1.6.11 (r934486) 出现类型提示,说明安装成功。 

    有了SVN软件后还需要建立SVN库。 
    [root@www ~]# mkdir /opt/svn/repos 
    [root@www ~]# svnadmin create /opt/svn/repos 
    执行上面的命令后,自动在repos下建立多个文件, 分别是conf, db,format,hooks, locks, README.txt。 

       

    2、配置

         上面的操作很简单,几个命令就搞定, 下面的操作也不难。

         进入上面生成的文件夹conf下,进行配置,   有以下几个文件authz, passwd, svnserve.conf

         其中authz 是权限控制,可以设置哪些用户可以访问哪些目录,   passwd是设置用户和密码的,    svnserve是设置svn相关的操作。

     2 .1先设置passwd 
      [root@www ~]# vi passwd 
    [users]
    # harry = harryssecret
    # sally = sallyssecret
    hello=123
    用户名=密码

    这样我们就建立了hello用户, 123密码  

       2.2 再设置权限authz 
    [root@www ~]# vi authz 

    [/]
    hello= rw

    意思是hello用户对所有的目录有读写权限,当然也可以限定。
    如果是自己用,就直接是读写吧。 


    2.3最后设定snvserv.conf 
    [root@www ~]# vi snsvserv.conf 

    anon-access = none # 使非授权用户无法访问 
    auth-access = write # 使授权用户有写权限 
    password-db = password
    #authz-db = authz   # 访问控制文件 
    realm = /opt/svn/repos # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。
    采用默认配置. 以上语句都必须顶格写, 左侧不能留空格, 否则会出错.

    好了,通过以上配置,你的svn就可以了。

    3、连接

      [root@www ~]# svnserve -d -r /opt/svn/repos 启动svn:


    如果已经有svn在运行,可以换一个端口运行 
    [root@www ~]# svnserve -d -r /opt/svn/repos --listen-port 3391 

    这样同一台服务器可以运行多个svnserver

    好了,启动成功后,就可以使用了。
    建议采用TortoiseSVN, 连接地址为: svn://your server address (如果指定端口需要添加端口  :端口号)

    连接后可以上传本地的文件,有效的管理你的代码。 

    开放svn端口

    修改
    iptables -I INPUT -p tcp --dport 3690 -j ACCEPT
    保存
    /etc/rc.d/init.d/iptables save
    重启
    service iptables restart
    查看
    /etc/init.d/iptables status

    svn 命令详解

    1、将文件checkout到本地目录

    svn checkout path(path是服务器上的目录)

    例如:svn checkout svn://192.168.1.1/pro/domain

    简写:svn co

    2、往版本库中添加新的文件

    svn add file

    例如:svn add test.php(添加test.php)

    svn add *.php(添加当前目录下所有的php文件)

    3、将改动的文件提交到版本库

    svn commit -m “LogMessage“ [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)

    例如:svn commit -m “add test file for my test“ test.php

    简写:svn ci

    4、加锁/解锁

    svn lock -m “LockMessage“ [--force] PATH

    例如:svn lock -m “lock test file“ test.php

    svn unlock PATH

    5、更新到某个版本

    svn update -r m path

    例如:

    svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。

    svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)

    svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)

    简写:svn up

    6、查看文件或者目录状态

    1)svn status path(目录下的文件和子目录的状态,正常状态不显示)

    【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】

    2)svn status -v path(显示文件和子目录状态)

    第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。

    注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。

    简写:svn st

    7、删除文件

    svn delete path -m “delete test fle“

    例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file”

    或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘,推荐使用这种

    简写:svn (del, remove, rm)

    8、查看日志

    svn log path

    例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化

    9、查看文件详细信息

    svn info path

    例如:svn info test.php

    10、比较差异

    svn diff path(将修改的文件与基础版本比较)

    例如:svn diff test.php

    svn diff -r m:n path(对版本m和版本n比较差异)

    例如:svn diff -r 200:201 test.php

    简写:svn di

    11、将两个版本之间的差异合并到当前文件

    svn merge -r m:n path

    例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)

    12、SVN 帮助

    svn help

    svn help ci

    13、版本库下的文件和目录列表

    svn list path

    显示path目录下的所有属于版本库的文件和目录

    简写:svn ls

    创建版本库:
    终端输入:svnadmin create [路径]
    该路径可以是相对路径,例如,当前在home/user/svn/目录下,输入svnadmin create myproject,则该版本库会被创建在home/user/svn/目录下,新建一个文件夹名为myproject,其中便是版本库的文件了。


    将文件导入版本库:
    终端输入:svn import [源路径] [目标版本库路径] -m [日志信息]
    源路径可以是相对路径,导入时会递归导入源路径下的所有文件和文件夹,目标版本库路径需要绝对目录(反正我试验是这样的),例如版本库的目录是:home/user/svn/myproject/。则应该这样写:file:///home/user/svn/myproject/
    例如将当前目录导入版本库myproject:
    svn import . file:///home/user/svn/myproject -m "导入文件"

    svn import /alidata/www/weijdan/ file:///alidata/server/svn/weiqiye/ -m 'create weiqiye'


    从版本库导出:
    导入后原文件并未被纳入版本管理,若想获得受版本控制的文件,就需要从版本库导出
    终端输入:svn co [版本库路径] [导出目标路径]
    例如将myproject库中的文件导出到当前目录:svn co file:///home/user/svn/myproject .

     svn co file:///alidata/server/svn/weiqiye/ /alidata/www/weijdan

    svn提交文件后自动同步更新到网站目录


    #!/bin/bash
    REPOS="$1"
    REV="$2"

    export LANG=zh_CN.UTF-8
    svn update /alidata/www/weijdan_test
    echo `date`,`whoami`,$REPOS,$REV >> /alidata/server/svn/weiqiye/svn.log

    chmod +x /alidata/server/svn/weiqiye/hooks/post-commit

    svn开机启动

    1.创建执行脚本svn.sh(/root路径下),其内容很简单,如下:

    #!/bin/bash 
    svnserve -d -r /var/www/svn/test

         2.添加可执行权限

    命令行运行

    #chmod ug+x /root/svn.sh

         3.添加自动运行

         打开(vi或gedit) /etc/rc.d/rc.local ,在最后添加一行内容如下:

    /root/svn.sh

         保存退出。

         4.检查

         重启服务器,使用 ps -ef 看看svn进程是否启动了。

  • 相关阅读:
    gitlab安装配置
    jenkins忘记admin密码的处理方法
    jenkins权限管理插件role-based(二)
    jenkins安装部署(一)
    ERROR 1129 (HY000): Host '192.168.7.210' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
    nginx重试机制proxy_next_upstream
    nginx配置ssi
    python实现查找指定文件
    python 调用系统命令
    Android 调用资源字符串的几种方法
  • 原文地址:https://www.cnblogs.com/terryguan/p/4546370.html
Copyright © 2020-2023  润新知