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/



posted @ 2011-01-19 14:13  天不会黑  阅读(637)  评论(0编辑  收藏  举报