zoukankan      html  css  js  c++  java
  • 转:ubuntu 搭建svn服务器及客户端的使用

    第一部分:svn服务器搭建(主要是四步走)

        参考:http://www.son1c.cn/show/920.html

    一,安装Subversion

     
    1. sudo apt-get install subversion (不用改命令中的任何参数,直接打这行命令即可,在lnuix下安装文件,其安装目录有LNUIX自定义,不用用户指定)

    二,创建资源库

     
    1. cd /home/username

    2. svnserve -d -r /home/username                (第一步:先启服务器)

    3. svnadmin create repos                              (第二步:再建仓库,repos是仓库名字,用户自己决定)

     
         注意:若要启动两个svn服务器,则要指明端口,默认的服务器端口是3690。
         svnserve -d -r /home/username   <=>(等价于)    svnserve -d  --listen-port=3690  -r /home/username
        若要启动第二个服务器,则可svnserve -d  --listen-port=3691   -r /home/username2,但同时后面在checkout时要指明第二个服务器 的端口,如  svn co  svn://192.168.1.1:3691/repos
     

    三,修改用户名和密码                                           (第三步:建完仓库设权限)

    1,修改/home/username/repos/conf/svnserve.conf,把下面三行的注释去掉

    1. anon-access = read 

    2. auth-access = write 

    3. password-db = passwd

         注意:去掉注释时要保证anon-access = read 、auth-access = write和password-db = passwd是顶格形式(即该行的前面没有空格)否则会出现svnserve.conf:12:Option expected的错误。
         可参考http://www.51testing.com/?uid-209173-action-viewspace-itemid-92904 的解释。

    2,修改/home/username/repos/conf/passwd,添加用户和密码

     
    1. hideto = hideto 

    2. lucia = lucia

    3. (格式是)用户名=密码
    这一步骤同样要注意上面提到的顶格形式,否则svn服务器读取passwd时不能识别。

    四,导入project                                                    (第四步:权限设完导文件)

     
    1. svn import -m "Import rails project hilog" /home/username/workspace/hilog svn://192.168.1.1/repos/

    注意:导完文件(包含目录)后,就与原始导入目录/home/username/workspace/hilog无关,即“过河拆桥”。因此,本地客户端使用也需要下面的步骤。

    五,导出project

     
      说明:其实,该步骤属于客户端的操作,写在这里是因为假如你只是搭建一个供你自己在本地使用的svn服务器,那么你的机器既是svn服务器,又是svn客户端。你若要在本地同步svn服务器的数据的话,也要执行checkout等客户端命令。
    1. svn co svn://192.168.1.1/repos/    <=>  svn co svn://192.168.1.1:3690/repos/

         ok,可以用了!checkout不需要认证,checkin需要。      这是使用Subversion自带的svn协议和svnserve工具简单的搭建svn服务器,还可以结合Apache搭建http://和 https://协议的svn服务器及安装Trac

    第二部分:客户端使用

        主要是各种命令的使用,以下是我摘录的最简明的解释

        摘自:http://www.91linux.com/html/article/program/php/20090101/15220.html

    1、 将文件checkout到本地目录(我注:checkout最新版,若要checkout其他版本请用update

    svn  checkout  path(path是服务器上的目录) 例如:svn  checkout svn ://192.168 .1.1 /pro/domain 简写:svn  co

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

    svnadd  file 例如:

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

    svn add onedir (添加onedir目录及目录下的所有文件)

    然后在svn ci -m "add something",这才是真的提交到版本库

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

    svn  commit  -m “LogMessage“ [ -N][ --no-unlock]  PATH22429210_1.gif (如果选择了保持锁,就使用–no-unlock开关) 例如:svn  commit -m “add test file for my test“ test.php 简写:svn  ci

    4、 加锁/解锁

    svn  lock  -m “LockMessage“ [ --force]  PATH22429210_1.gif 例如: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  path22429210_1.gif (目录下的文件和子目录的状态,正常状态不显示) 【?:不在svn 的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】 2)svn  status -v  path22429210_1.gif (显示文件和子目录状态) 第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。 注: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

    14、 创建纳入版本控制下的新目录

    svn  mkdir : 创建纳入版本控制下的新目录。 用法: 1、mkdir PATH… 2、mkdir URL… 创建版本控制的目录。 1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增 调度,以待下一次的提交。 2、每个以URL指定的目录,都会透过立即提交于仓库中创建。 在这两个情况下,所有的中间目录都必须事先存在。

    15、 恢复本地修改

    svn  revert : 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。revert: 用法: revert PATH… 注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复 被删除的目录

    16、 代码库URL变更

    svn  switch (sw):  更新工作副本至不同的URL。 用法: 1、switch URL [PATH] 2、switch –relocate FROM TO [PATH...]

    1、更新你的工作副本,映射到一个新的URL,其行为跟“svn  update”很像,也会将 服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的 方法。

    例如我当前的svn是:http://192.168.12.12/svn/test_1 现在我把这个分支扯到

    http://192.168.12.12/svn/data/test_1 ,则在当前目录下执行:

    svn switch http://192.168.12.12/svn/data/test_1,再svn info查看一下就变了。

    2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动 (比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用 这个命令更新工作副本与仓库的对应关系。

    例如我的svn仓库由192.168.12.12切换到服务器192.168.12.13上去了,则:

    svn switch --relocate http://192.168.12.12/svn/test_1 http://192.168.12.13/svn/test_1

    17、 解决冲突

    svn  resolved:  移除工作副本的目录或文件的“冲突”状态。 用法: resolved PATH… 注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的 相关文件,然后让 PATH 可以再次提交。

    18、 输出指定文件或URL的内容。

    svncat  目标[@版本]…如果指定了版本,将从指定的版本开始查找。 svn  cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)

    19、 中各字母代表的的状态含义:

     

    : 无修改
    A:add,新增
    “C”:conflict,冲突
    “D”:delete,删除
    “M”:modify,本地已经修改
    “G”:modify and merGed,本地文件修改并且和服务器的进行合并
    U:update,从服务器更新
    “R”:replace,从服务器替换
    I :ignored,忽略
    X: 未纳入版本控制,但被外部定义所用
    ?: 未纳入版本控制
    ! :该项目已遗失 (被非 svn 命令所删除) 或是不完整
    ~:版本控制下的项目与其它类型的项目重名
  • 相关阅读:
    vue form dynamic validator All In one
    TypeScript api response interface All In One
    closable VS closeable All In One
    macOS 如何开启 WiFi 热点 All In One
    vue css inline style All In One
    vs2010里面 新建网站里面的 asp.net网站 和 新建项目里面的 asp.net Web应用程序 的区别 (下)
    牛腩新闻 59 整合添加新闻页 FreeTextBox 富文本编辑器,检测到有潜在危险的 Request.Form 值,DropDownList 的使用
    牛腩新闻 61尾声: error.aspx的使用 防止报错
    vs2010里面 新建网站里面的 asp.net网站 和 新建项目里面的 asp.net Web应用程序 的区别 (上)
    牛腩新闻 62:尾声续2 asp.net的编译和发布
  • 原文地址:https://www.cnblogs.com/liuyuan216/p/3510879.html
Copyright © 2011-2022 走看看