zoukankan      html  css  js  c++  java
  • SVN经常使用命令说明

    SVN版本号:1.5 及更新版本号

    名词说明:

    WC:Working Copy 你的工作区

    Versioned:受控的;受版本号控制的

     

    SVN是什么?

     

    • SVN是开源的版本号控制系统。
    • 比CVS很多其它的特性。

      一个更好的CVS?因此SVN具有大部分CVS拥有的特性。

    • 不仅仅是文件受控,文件夹也增加版本号控制。
    • 复制。删除,重命名这些操作都是受控的。

    • 特殊作用的元数据(属性)。

    • 提交事务原子性。

      提交完毕之前不论什么一个部分都不会正真生效。版本号号基于提交,而不是基于文件。

      提交时的log message也是依附于提交的那个版本号。

    • 创建分支和标记非常easy。简单的通过copy命令就能够创建分支和标记。
    • 合并跟踪。

      在合并时协助你处理全部的更改点。

    • 文件锁定。svn支持文件锁定改动策略。
    • Unix的link能够受控了。前提是WC必须在Unix下。

    • 可选的Apache network server,基于WEBDAV/DeltaV 协议。

      熟悉Apache的管理员会非常喜欢这一点。

    • 内置的server选择(svnserve)。假设不想用Apache。能够试试Svn自己的server:svnserve。

      相同也能提供授权和验证,ssh通道等功能。

    • 方便解析的输出。svn的输出尽量做到方便阅读和方便机器解析。
    • 冲突解决交互性良好。

      svn命令行client提供多种不同的方式解决冲突。

    • svn提供一个有用工具。svnsync来实现从主库到仅仅读附属库的同步。

    • 持续写入代理功能让仅仅读的附属库专门处理全部的读请求。全部的写请求交给主库处理。这个功能仅仅在使用Apache WebDAV server的时候才有效。
    • 基于本地化的客户机服务器体系。分层的库,明晰的API方便扩展。
    • 高效处理二进制文件。

    • 性能消耗与更改点的数量成正比。
    • svn的api能够和多种语言集成。Python。Perl,Java,Ruby(svn本身是用C写的)
    • ChangeLists功能。

    Svn的安装分client和服务端。

    你能够在例如以下地址找到下载:http://subversion.tigris.org/

    这篇文章主要介绍的是svnclient的命令,你至少须要安装client。

    默认就是以SVN做版本号控制的。假设你不想在自己机器上安装服务版。google code是个练习svn命令的好地方。

    http://code.google.com上申请托管项目非常easy,可是如今不支持svn lock。眼下最大支持1G空间。

     

    下面是svnclient经常使用命令一览:

     

    svn add [path]

    别名:无

    描写叙述:加入文件或文件夹到你的wc,打上新增标记。这些文件会在下一次你提交wc的时候提交到svnserver。

    在提交前。你也能够用svn revert撤销新增的文件。

    訪问库:否

    eg: svn add file.cpp

     

    svn blame Target[@REV]

    别名:praise,annotate,ann

    描写叙述:显示某个已受控文件的每一行的最后改动版本号和作者

    訪问库:是

    eg: svn blame file.cpp

    eg: svn blame --xml file.cpp  ##加上xml參数能够以xml格式显示每一行的属性。

     

    svn cat TARGET[@REV]

    别名:无

    描写叙述:输出指定目标的内容,这里的目标通常是文件。

    訪问库:是

    eg:svn cat file.cpp

    eg:svn cat file.cpp -r 2 ##显示版本为二的file.cpp内容。

    eg:svn cat file.cpp --revision HEAD ##显示最新版本号的file.cpp内容。

     

    svn changelist CLNAME TARGET...

    svn changelist --remove TARGET

    别名:cl

    描写叙述:能够将wc中的文件从逻辑上分组.

    訪问库:否

    eg:svn cl clName file.cpp file2.cpp file3.cpp  ##将file.cpp等三个文件增加名叫clName的changelist 

    eg:svn commit --changelist clName -m "ci"  ##将clName下的全部文件提交

     

    svn checkout URL[@REV]... [PATH]

    别名:co

    描写叙述:检出

    訪问库:否

    eg:svn checkout file:///var/svn/repos/test  file:///var/svn/repos/quiz working-copies

    eg:svn checkout -r 2 file:///var/svn/repos/test mine  ##check out 版本为2的项目

     

    svn cleanup [PATH...]

    别名:无

    描写叙述:递归的清理WC中过期的锁和未完毕的操作。

    訪问库:否

    eg:svn cleanup

     

    svn commit [PATH...]

    别名:ci

    描写叙述:把你WC的更改提交到仓库

    訪问库:是

    eg:svn commit -m "added howto section." ##默认情况下提交必须提供log message 

     

    svn copy SRC[@REV]... DST

    别名:cp

    描写叙述:copy操作能够从WC到WC;WC到URL;URL到WC;URL到URL。如今SVN仅仅支持同一个仓库内文件的拷贝。不同意跨仓库操作。

    訪问库:是

    eg:svn copy -r 11 file:///var/svn/repos/test/trunk

               file:///var/svn/repos/test/tags/0.6.32-prerelease

               -m "Forgot to tag at rev 11"

    ##copy命令是创建分支和标记的经常使用方式。copy到url的操作隐含了提交动作。所以须要提供log messages。

     

    svn delete PATH...

    别名:del,remove,rm

    描写叙述:删除

    訪问库:假设PATH是库地址时会,删除WC内的文件不会。

    eg:svn del localfile.cpp    ##删除WC里的文件,在下一次提交WC的时候才会真正在仓库里将相应文件删除。

    eg: svn del file:///var/svn/repos/test/yourfile  ##删除仓库里的文件

     

    svn diff

    别名:di

    描写叙述:用来比較并显示改动点。

    訪问库:

    eg:svn diff   ##最经常使用的方式,用来显示WC基于近期一次更新以后的全部的本地改动点。

    eg:svn diff -r 301 bin ## 比較WC和版本号301中的bin文件夹的改动点

    eg:svn diff -r 3000:3500 file:///var/svn/repos/myProject/trunk   ##比較库里主干3000版和3500版的差异。

    eg:svn diff --summarize --xml http://svn.red-bean.com/repos/test@r2 http://svn.red-bean.com/repos/test  ##--summarize --xml 參数将差异情况以xml文档的方式显示出来。

     

    svn export [-r REV] URL[@PEGREV] [PATH]

    svn export [-r REV] PATH1[@PEGREV] [PATH2]

    别名:无

    描写叙述:导出一个干净的文件夹树,不包括全部的受控信息。

    能够选择从URL或WC中导出。

    訪问库:假设訪问的是URL则会。

    eg:svn export file:///var/svn/repos my-export   ##导出到my-export文件夹。

     

    svn help — Help!

    别名:?,h

    描写叙述:不用解释了

    訪问库:否。

     

    svn import [PATH] URL

    别名:无

    描写叙述:导入本地一个文件夹到库中。可是导入后。本地的文件夹并不会处于受控状态。

    訪问库:是。

    eg:svn import -m "New import" myproj http://svn.myProject.com/repos/trunk/misc

     

    svn info [TARGET[@REV]...]

    别名:无

    描写叙述:显示指定WC和URL信息。

    訪问库:仅当訪问的是库路径时。

    eg:svn info --xml http://svn.myProject.com/repos/test  ##将信息以xml格式显示。

     

    svn list [TARGET[@REV]...]

    别名:ls

    描写叙述:显示目标下的文件和文件夹列表。

    訪问库:假设訪问的是库地址就会。

    eg:svn list --verbose file:///var/svn/repos   ##--verbose參数表示显示具体信息。

     

    svn lock TARGET...

    别名:无

    描写叙述:对目标获得改动锁。假设目标已被其它用户锁定,则会抛出警告信息。用--force參数强制从其它用户那里获得锁。

    訪问库:是

    eg:svn lock --force tree.jpg

     

    svn log [PATH]

    svn log URL[@REV] [PATH...]

    别名:无

    描写叙述:从库中显示log消息。

    log消息代码 A :added  D:deleted  M:modified  R:replaced

    訪问库:是

    eg:svn log -v http://svn.myProject.com/repos/test/ foo.c bar.c   ##具体显示指定URL的库中foo.c和bar.c全部版本号的log信息。

    eg:svn log -r 14:15    ##显示当前WC的14和15版本号log信息。

    eg:##假设版本不连续,仅仅能採用例如以下方式。

    $ svn log -r 14 > mylog

    $ svn log -r 19 >> mylog

    $ svn log -r 27 >> mylog

     

    svn merge sourceURL1[@N] sourceURL2[@M] [WCPATH]

    svn merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]

    svn merge [[-c M]... | [-r N:M]...] [SOURCE[@REV] [WCPATH]]

    别名:无

    描写叙述:合并两个受控源的不同之处。存放到一个WC里。

    訪问库:仅仅有当訪问库地址时。

    eg:svn merge --reintegrate http://svn.example.com/repos/calc/branches/my-calc-branch  ##合并分支上的改变项到WC,往往用于分支合并到主干。

    eg:svn merge -r 156:157 http://svn.example.com/repos/calc/branches/my-calc-branch   ##将制定URL版本号156到157的全部更新合并到WC。

     

    svn mkdir PATH...

    svn mkdir URL...

    别名:无

    描写叙述:在WC或库路径创建文件夹

    訪问库:仅仅有当訪问库地址时。

    eg:svn mkdir newdir

     

    svn move SRC... DST

    别名:mv, rename, ren

    描写叙述:等同于svn copy命令跟个svn delete命令。WC到URL的重命名是不被同意的。

    訪问库:仅仅有当訪问库地址时。

    eg:svn move foo.c bar.c  ##将foo.c改名成bar.c。

     

    svn propdel PROPNAME [PATH...]

    svn propdel PROPNAME --revprop -r REV [TARGET]

    别名:pdel, pd

    描写叙述:从受控文件,文件夹等删除属性。另外一种是删除某个指定版本号上的附加属性。

    訪问库:仅仅有当訪问库地址时。

    eg:svn propdel svn:mime-type someFile    ##从someFile上移除svn:mime-type这个属性。

     

    svn propedit PROPNAME TARGET...

    svn propedit PROPNAME --revprop -r REV [TARGET]

    别名:pedit, pe

    描写叙述:编辑属性

    訪问库:仅仅有当訪问库地址时。

    eg:svn propedit svn:keywords  file.c  ##改动file.c上的svn:keywords属性。

     

    svn propget PROPNAME [TARGET[@REV]...]

    svn propget PROPNAME --revprop -r REV [URL]

    别名:pget,pg

    描写叙述:从文件,文件夹或版本号取得指定属性的值。

    訪问库:仅仅有当訪问库地址时。

    eg:svn propget svn:keywords file.c   ##从file.c中取得svn:keywords属性的值

     

    svn proplist [TARGET[@REV]...]

    svn proplist --revprop -r REV [TARGET]

    别名:plist, pl

    描写叙述:列出文件、文件夹或版本号上的全部附加属性

    訪问库:仅仅有当訪问库地址时。

    eg:svn proplist --verbose file.c

     

    svn propset PROPNAME [PROPVAL | -F VALFILE] PATH...

    svn propset PROPNAME --revprop -r REV [PROPVAL | -F VALFILE] [TARGET]

    别名:pset,ps

    描写叙述:给文件、文件夹或版本号附加属性并赋值

    訪问库:仅仅有当訪问库地址时。

    eg:svn propset svn:mime-type image/jpeg file.jpg   ##给file.jpg附加属性svn:mime-type 其值为image/jpeg

    eg:svn propset --revprop -r 25 svn:log "Journaled about trip to New York."

    ##给版本号25补上log message

    eg:svn propset svn:ignore '.classpath' . 

    ##在本地忽略掉.classpath文件

     

    svn resolve PATH...

    别名:无

    描写叙述:将冲突的文件标记为已解决。而且删掉冲突产生的暂时文件。注意这个命令并非能把冲突解决,解决冲突还是得靠人工。

    訪问库:否

    eg:svn resolve --accept mine-full foo.c   ##1.5版本号后,加上--accept參数,尝试自己主动处理冲突。

     

    svn resolved PATH...

    别名:无

    描写叙述:已过时,被resolve --accept代替。去除冲突的状态和冲突暂时文件。

    訪问库:否

     

    svn revert PATH...

    别名:无

    描写叙述:还原WC中全部的本地更改。

    訪问库:否

    eg:svn revert --depth=infinity .   ##将整个文件夹全部文件还原

     

    svn status [PATH...]

    别名:stat, st

    描写叙述:输出WC中文件和文件夹的状态。假设WC提交,这些状态就会同步到库里。

    一般状态有         ' '  没有改动

    'A'  新增

    'D'  删除

    'M'  改动

    'R'  替代

    'C'  冲突

    'I'  忽略

    '?

    '  未受控

    '!'  丢失,通常是将受控文件直接删除导致

    訪问库:加上--show-updates參数时会

    eg:svn status wc

     

    svn switch URL[@PEGREV] [PATH]

    svn switch --relocate FROM TO [PATH...]

    别名:sw

    描写叙述:将WC转向一个其它的库地址同步

    訪问库:是

    eg:svn sw http://svn.myProject.com/repos/trunk/vendors .  ##将当前WC切换到还有一个URL

     

    svn unlock TARGET...

    别名:无

    描写叙述:解锁

    訪问库:是

    eg:svn unlock somefile

     

    svn update [PATH...]

    别名:up

    描写叙述:更新WC,更新反馈有例如以下几种分类。

            A  新增

    B  锁破坏

    D  删除

    U  更新

    C  冲突

    G  合并

    E  存在的

    訪问库:是

    eg:svn up -r22   ##更新到一个指定版本号

     

    ps:怎样去除SVN中保存的用户授权password

    在Subversion安装文件夹下找到auth/svn.simple文件夹,将以下的文件删除就可以。

    假设在乌龟中。能够setting->saved data->Authentication Data   点 clear 就可以。

     

    參考资料:http://svnbook.red-bean.com/en/1.5/svn.ref.svn.c.checkout.html

  • 相关阅读:
    Android开发 ViewConfiguration View的配置信息类
    Android 开发 倒计时功能 转载
    Android 开发 关于7.0 FileUriExposedException异常 详解
    Android 开发 实现文本搜索功能
    Android 开发 Activity里获取View的宽度和高度 转载
    Android 开发 存储目录的详解
    Android 开发 Fresco框架点击小图显示全屏大图实现 ZoomableDraweeView
    Android 开发 将window变暗
    Android 开发 DisplayMetrics获取Android设备的屏幕高宽与其他信息
    Android 开发 DP、PX、SP转换详解
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5268613.html
Copyright © 2011-2022 走看看