zoukankan      html  css  js  c++  java
  • svn命令总结(原创)

    以下是本人于2011-1-19 对自己经常用到的 svn命令的总结,记载于此,希望能帮助自己记忆,顺便可以帮助下初学者。----yuanfang
    (一)求助:
        svn help
        svn help subcommand (ext: svn help import )
    (二) 导入数据到版本库:
       (svn import 和 svn add)
     •svn import:
        $ svnadmin create /var/svn/newrepos
        $ svn import mytree file:///var/svn/newrepos/some/project \
                     -m "Initial import"
        Adding         mytree/foo.c
        Adding         mytree/bar.c
        Adding         mytree/subdir
        Adding         mytree/subdir/quux.h
        Committed revision 1.
        检验下:$ svn list file:///var/svn/newrepos/some/project
                bar.c
                foo.c
                subdir/
      •一般的版本库布局:
          尽管 Subversion 的灵活性允许你自由布局版本库,但我们有一套推荐的方式,创建一个 trunk
        目录来保存开发的“主线”,一个 branches 目录存放分支拷贝,tags 目录保存标签拷贝,例如:
        $ svn list file:///var/svn/repos
        /trunk
        /branches
        /tags
    (三) 导出工作副本:
        $ svn checkout(co) http://svn.collab.net/repos/svn/trunk
    (四)工作流程
    1. 更新你的工作副本。
       • svn update(up)
    2. 做出修改
       (• svn add    • svn delete     • svn copy     • svn move)
        •svn add foo
          调度将文件, 目录或者符号链接 foo 添加到版本库。当你下次提交后,foo 会成为其父目录的
          一个子对象。注意,如果 foo 是目录,所有 foo 中的内容也会调度增加。如果你只想添加 foo
          本身,请使用 --non-recursive (-N) 参数。
        •svn delete foo
          调度将文件, 目录或者符号链接 foo 从版本库中删除,如果 foo 是文件或符号链接,它会马上
          从工作副本中删除。如果 foo 是目录,不会被删除,但是 Subversion 调度删除它。当你提交修
          改后,foo 就会在你的工作副本和版本库中被删除。1
        •svn copy foo bar
          建立一个新条目 bar 作为 foo 的复制品,并且自动调度增加 bar,当在下次提交时会将 bar
          添加到版本库,这种复制会记录下来历史(按照来自 foo 的方式记录)。如果不传递 --parents,
          svn copy 并不建立中介目录。
        •svn move foo bar
          这个命令与与运行 svn copy foo bar; svn delete foo 完全相同,bar 作为 foo 的拷
          贝调度添加,foo 已经调度删除。如果不传递 --parents,svn move 不建立中介的目录。
        •svn mkdir blort
          这个命令同运行 mkdir blort; svn add blort 相同,也就是创建一个叫做 blort 的文
          件,并且调度增加到版本库。

    3. 检验修改
       • svn status  查看你的修改概况
    $svn status
    ?  scratch.c           # file is not under version control
    A  stuff/loot/bloo.h   # file is scheduled for addition
    C  stuff/loot/lump.c   # file has textual conflicts from an update
    D  stuff/fish.c        # file is scheduled for deletion
    M bar.c              # the content in bar.c has local modifications
    (A:预定加入到版本库的文件, 目录或符号链的item。
     C:文件 item 发生了冲突。从服务器收到的修改与工作副本的本地修改发生交迭(在更新期间不会
    被解决)。在你提交到版本库前,必须手工解决冲突。
     D:文件, 目录或是符号链item预定从版本库中删除。
     M:文件item的内容被修改了。
    )
    如果你传递一个路径给svn status(st),它只给你这个项目的信息:
    $ svn status(st) stuff/fish.c
    D      stuff/fish.c
    svn status也有一个--verbose(-v)选项,它可以显示工作副本中的所有项目,即使没有改变过
    的:
     $ svn status -v
      • svn diff   检查你的本地修改的详情

    4. 取消本地的一些修改
       • svn revert
    $ svn status foo
    ?      foo
    $ svn add foo
    A         foo
    $ svn revert foo
    Reverted 'foo'
    $ svn status foo
    ?      foo
    svn revert item 与删除item,然后执行 svn update -r BASE item 的效果完
    全一样。

    5. 解决冲突(合并别人的修改)
       • svn update
       • svn resolve
    6. 提交你的修改
       • svn commit(ci)
    $ svn commit -m "Add another rule" (-m message)
    (五)查看历史
    1. 产生历史修改列表
       • svn log
         Shows you broad information: log messages with date and author information attached to revisions and which paths changed in each revision
    $ svn log
    $ svn log -r 5:19 # shows logs 5 through 19 in chronological order
    $ svn log -r 19:5 # shows logs 5 through 19 in reverse order
    $ svn log -r 8    # shows log for revision 8
    $ svn log foo.c
    ...
    $ svn log http://foo.com/svn/trunk/code/foo.c
    ...
    $ svn log -r 8 -v   (-v verbose详细的)
    ------------------------------------------------------------------------
    r8 | sally | 2008-05-21 13:19:25 -0500 (Wed, 21 May 2008) | 1 line
    Changed paths:
       M /trunk/code/foo.c
       M /trunk/code/bar.h
       A /trunk/code/doc/README

    2. 检查历史修改详情
       • svn diff
    • 检查本地修改  svn diff
    • 比较工作副本与版本库  $ svn diff -r 3 rules.txt
    • 比较版本库中的版本  $ svn diff -r 2:3 rules.txt
                      $ svn diff -c 3 rules.txt 查看修改 (-c  change)
                  $ svn diff -c 5 http://svn.example.com/repos/example/trunk/text/rules.txt

    3. 显示特定修改的行级详细信息
       • svn cat
       Retrieves a file as it existed in a particular revision number and displays it on your screen
    $ svn cat -r 2 rules.txt
    你可以重定向输出到一个文件:
    $ svn cat -r 2 rules.txt > rules.txt.v2

    4. 显示指定版本的目录中的文件
       • svn list  可以在不下载文件到本地目录的情况下来察看目录中的文件
    $ svn list(ls) -v http://svn.collab.net/repos/svn
      20620 harry            1084 Jul 13 2006 README
      23339 harry                 Feb 04 01:40 branches/
      21282 sally                 Aug 27 09:41 developer-resources/
      23198 harry                 Jan 23 17:17 tags/
      23351 sally                 Feb 05 13:26 trunk/



    天不会黑
  • 相关阅读:
    插入排序和顺序查找,折半查找
    单链表有环判断问题解决办法
    INT_MAX和INT_MAX
    最简单的学习往往是最无效的
    基于Windows安装Mysql数据库
    禁止跨域_五分钟带你了解跨域
    搞定SpringBoot多数据源(2):动态数据源
    API网关(API GATEWAY)是什么?有什么作用?
    一文搞懂蓝绿发布、灰度发布和滚动发布
    第九篇 bootstrap实例
  • 原文地址:https://www.cnblogs.com/yuanfang/p/1939113.html
Copyright © 2011-2022 走看看