-
svn子命令
名称
svn add — 添加文件、目录或符号链。
概要
svn add PATH...描述
添加文件、目录或符号链到你的工作拷贝并且预定添加到版本库。它们会在下次提交上传并添加到版本库,如果你在提交之前改变了主意,你可以使用
svn revert取消预定。
别名
无
变化
工作拷贝
是否访问版本库
否
选项
--targets FILENAME--non-recursive (-N)--quiet (-q)--config-dir DIR--auto-props--no-auto-props--force例子
添加一个文件到工作拷贝:
$ svn add foo.c A foo.c当添加一个目录,
svn add缺省的行为方式是递归的:
$ svn add testdirA testdirA testdir/aA testdir/bA testdir/cA testdir/d你可以只添加一个目录而不包括其内容:
$ svn add --non-recursive otherdirA otherdir通常情况下,命令
svn add *会忽略所有已经在版本控制之下的目录,有时候,你会希望添加所有工作拷贝的未版本化文件,包括那些隐藏在深处的文件,可以使用svn add的--force递归到版本化的目录下:
$ svn add * --forceA foo.cA somedir/bar.cA otherdir/docs/baz.doc…
--------------------------------------------------------------------------------
名称
svn blame — 显示特定文件和URL内嵌的作者和修订版本信息。
概要
svn blame TARGET[@REV]...描述
显示特定文件和URL内嵌的作者和修订版本信息。每一行文本在开头都放了最后修改的作者(用户名)和修订版本号。
别名
praise、annotate、ann
变化
无
是否访问版本库
是
选项
--revision (-r) REV--username USER--password PASS--no-auth-cache--non-interactive--config-dir DIR--verbose例子
如果你希望在测试版本库看到blame标记的readme.txt源代码:
$ svn blame http://svn.red-bean.com/repos/test/readme.txt 3 sally This is a README file. 5 harry You should read this.
--------------------------------------------------------------------------------
名称
svn cat — 输出特定文件或URL的内容。
概要
svn cat TARGET[@REV]...描述
输出特定文件或URL的内容。列出目录的内容可以使用
svn list。
别名
无
变化
无
是否访问版本库
是
选项
--revision (-r) REV--username USER--password PASS--no-auth-cache--non-interactive--config-dir DIR例子
如果你希望不检出而察看版本库的readme.txt的内容:
$ svn cat http://svn.red-bean.com/repos/test/readme.txtThis is a README file.You should read this.提示
如果你的工作拷贝已经过期(或者你有本地修改),并且希望察看工作拷贝的HEAD修订版本的一个文件,如果你给定一个路径,
svn cat会自动取得HEAD的修订版本:
$ cat foo.cThis file is in my local working copy and has changes that I've made.$ svn cat foo.cLatest revision fresh from the repository!
--------------------------------------------------------------------------------
名称
svn checkout — 从版本库取出一个工作拷贝。
概要
svn checkout URL[@REV]... [PATH]描述
从版本库取出一个工作拷贝,如果省略PATH,URL的基名称会作为目标,如果给定多个URL,每一个都会检出到PATH的子目录,使用URL基名称的子目录名称。
别名
co
变化
创建一个工作拷贝。
是否访问版本库
是
选项
--revision (-r) REV--quiet (-q)--non-recursive (-N)--username USER--password PASS--no-auth-cache--non-interactive--ignore-externals--config-dir DIR例子
取出一个工作拷贝到mine:
$ svn checkout file:///tmp/repos/test mineA mine/aA mine/bChecked out revision 2.$ lsmine检出两个目录到两个单独的工作拷贝:
$ svn checkout file:///tmp/repos/test file:///tmp/repos/quizA test/aA test/bChecked out revision 2.A quiz/lA quiz/mChecked out revision 2.$ lsquiz test检出两个目录到两个单独的工作拷贝,但是将两个目录都放到working-copies:
$ svn checkout file:///tmp/repos/test file:///tmp/repos/quiz working-copiesA working-copies/test/aA working-copies/test/bChecked out revision 2.A working-copies/quiz/lA working-copies/quiz/mChecked out revision 2.$ lsworking-copies如果你打断一个检出(或其它打断检出的事情,如连接失败。),你可以使用同样的命令重新开始或者是更新不完整的工作拷贝:
$ svn checkout file:///tmp/repos/test testA test/aA test/b^Csvn: The operation was interruptedsvn: caught SIGINT$ svn checkout file:///tmp/repos/test testA test/cA test/d^Csvn: The operation was interruptedsvn: caught SIGINT$ cd test$ svn updateA test/eA test/fUpdated to revision 3.
--------------------------------------------------------------------------------
名称
svn cleanup — 递归清理工作拷贝。
概要
svn cleanup [PATH...]描述
递归清理工作拷贝,删除未完成的工作拷贝锁定,并恢复未完成的操作。如果你得到一个“
工作拷贝已锁定”的错误,运行这个命令可以删除无效的锁定,让你的工作拷贝再次回到可用的状态。
如果,因为一些原因,运行外置的区别程序(例如,用户输入或是网络错误)有时候会导致一个
svn update失败,使用--diff3-cmd选项可以完全清除你的外置区别程序所作的合并,你也可以使用--config-dir指定任何配置目录,但是你应该不会经常使用这些选项。
别名
无
变化
工作拷贝
是否访问版本库
否
选项
--diff3-cmd CMD--config-dir DIR例子
svn cleanup没有输出,没有太多的例子,如果你没有传递PATH,会使用“.”。
$ svn cleanup$ svn cleanup /path/to/working-copy
--------------------------------------------------------------------------------
名称
svn commit — 将修改从工作拷贝发送到版本库。
概要
svn commit [PATH...]描述
将修改从工作拷贝发送到版本库。如果你没有使用--file或--message提供一个提交日志信息,
svn会启动你的编辑器来编写一个提交信息,见“config”一节的editor-cmd小节。svn commit will send found lock tokens and release locks on all PATHS committed (recursively) unless --no-unlock is passed.
提示
如果你开始一个提交并且Subversion启动了你的编辑器来编辑提交信息,你仍可以退出而不会提交你的修改,如果你希望取消你的提交,只需要退出编辑器而不保存你的提交信息,Subversion会提示你是选择取消提交、空信息继续还是重新编辑信息。
别名
ci(“check in”的缩写;不是“checkout”的缩写“co”。)
变化
工作拷贝,版本库
是否访问版本库
是
选项
--message (-m) TEXT--file (-F) FILE--quiet (-q)--no-unlock--non-recursive (-N)--targets FILENAME--force-log--username USER--password PASS--no-auth-cache--non-interactive--encoding ENC--config-dir DIR例子
使用命令行提交一个包含日志信息的文件修改,当前目录(“.”)是没有说明的目标路径:
$ svn commit -m "added howto section."Sending aTransmitting file data .Committed revision 3.提交一个修改到foo.c(在命令行明确指明),并且msg文件中保存了提交信息:
$ svn commit -F msg foo.cSending foo.cTransmitting file data .Committed revision 5.如果你希望使用在--file选项中使用在版本控制之下的文件作为参数,你需要使用--force-log选项:
$ svn commit --file file_under_vc.txt foo.csvn: The log message file is under version controlsvn: Log message file is a versioned file; use '--force-log' to override$ svn commit --force-log --file file_under_vc.txt foo.cSending foo.cTransmitting file data .Committed revision 6.提交一个已经预定要删除的文件:
$ svn commit -m "removed file 'c'."Deleting cCommitted revision 7.
--------------------------------------------------------------------------------
名称
svn copy — 拷贝工作拷贝的一个文件或目录到版本库。
概要
svn copy SRC DST描述
拷贝工作拷贝的一个文件或目录到版本库。SRC和DST既可以是工作拷贝(WC)路径也可以是URL:
WC -> WC
拷贝并且预定一个添加的项目(包含历史)。
WC -> URL
将WC或URL的拷贝立即提交。
URL -> WC
检出URL到WC,并且加入到添加计划。
URL -> URL
完全的服务器端拷贝,通常用在分支和标签。
注意
你只可以在单个版本库中拷贝文件,Subversion还不支持跨版本库的拷贝。
别名
cp
变化
如果目标是URL则包括版本库。
如果目标是WC路径,则是工作拷贝。
是否访问版本库
如果目标是版本库,或者需要查看修订版本号,则会访问版本库。
选项
--message (-m) TEXT--file (-F) FILE--revision (-r) REV--quiet (-q)--username USER--password PASS--no-auth-cache--non-interactive--force-log--editor-cmd EDITOR--encoding ENC--config-dir DIR例子
拷贝工作拷贝的一个项目(只是预定要拷贝—在提交之前不会影响版本库):
$ svn copy foo.txt bar.txtA bar.txt$ svn statusA + bar.txt拷贝你的工作拷贝的一个项目到版本库的URL(直接的提交,所以需要提供一个提交信息):
$ svn copy near.txt file:///tmp/repos/test/far-away.txt -m "Remote copy."Committed revision 8.拷贝版本库的一个项目到你的工作拷贝(只是预定要拷贝—在提交之前不会影响版本库):
提示
这是恢复死掉文件的推荐方式!
$ svn copy file:///tmp/repos/test/far-away near-hereA near-here最后,是在URL之间拷贝:
$ svn copy file:///tmp/repos/test/far-away file:///tmp/repos/test/over-there -m "remote copy."Committed revision 9.提示
这是在版本库里作“
标签”最简单的方法—svn copy那个修订版本(通常是HEAD)到你的tags目录。
$ svn copy file:///tmp/repos/test/trunk file:///tmp/repos/test/tags/0.6.32-prerelease -m "tag tree"Committed revision 12.不要担心忘记作标签—你可以在以后任何时候给一个旧版本作标签:
$ svn copy -r 11 file:///tmp/repos/test/trunk file:///tmp/repos/test/tags/0.6.32-prerelease -m "Forgot to tag at rev 11"Committed revision 13.
--------------------------------------------------------------------------------
名称
svn delete — 从工作拷贝或版本库删除一个项目。
概要
svn delete PATH...svn delete URL...描述
PATH指定的项目会在下次提交删除,文件(和没有提交的目录)会立即从版本库删除,这个命令不会删除任何未版本化或已经修改的项目;使用--force选项可以覆盖这种行为方式。
URL指定的项目会在直接提交中从版本库删除,多个URL的提交是原子操作。
别名
del, remove, rm
变化
如果操作对象是文件则是工作拷贝变化,对象是URL则会影响版本库。
是否访问版本库
对URL操作时访问
选项
--force--force-log--message (-m) TEXT--file (-F) FILE--quiet (-q)--targets FILENAME--username USER--password PASS--no-auth-cache--non-interactive--editor-cmd EDITOR--encoding ENC--config-dir DIR例子
使用
svn从工作拷贝删除文件只是预定要删除,当你提交,文件才会从版本库删除。
$ svn delete myfileD myfile$ svn commit -m "Deleted file 'myfile'."Deleting myfileTransmitting file data .Committed revision 14.然而直接删除一个URL,你需要提供一个日志信息:
$ svn delete -m "Deleting file 'yourfile'" file:///tmp/repos/test/yourfileCommitted revision 15.如下是强制删除本地已修改文件的例子:
$ svn delete over-there svn: Attempting restricted operation for modified resourcesvn: Use --force to override this restrictionsvn: 'over-there' has local modifications$ svn delete --force over-there D over-theresvn diff — 比较两条路径的区别。概要diff [-r N[:M]] [TARGET[@REV]...]
diff [-r N[:M]] --old OLD-TGT[@OLDREV] [--new NEW-TGT[@NEWREV]] [PATH...]
diff OLD-URL[@OLDREV] NEW-URL[@NEWREV]
描述
显示两条路径的区别,
svn diff有三种使用方式:svn diff [-r N[:M]] [--old OLD-TGT] [--new NEW-TGT] [PATH...]会 显示OLD-TGT和NEW-TGT的区别。如果给定路径PATH,它会被看作OLD-TGT和NEW-TGT的相对路径,输出也会限制在这些路径的区别 上。OLD-TGT和NEW-TGT可以是工作拷贝路径或者是URL[@REV]。OLD-TGT缺省是当前工作目录,而NEW-TGT缺省是OLD- TGT。N缺省是BASE,M缺省时当前目录的版本,但如果NEW-TGT是一个URL,则默认是HEAD。svn diff -r N设置OLD-TGT的修订版本为N,svn diff -r N:M设置NEW-TGT的修订版本是M。svn diff [-r N[:M]] URL1[@N] URL2[@M]是svn diff [-r N[:M]] --old=URL1 --new=URL2的缩写。
TARGET是一个URL,然后可以使用前面提到的--revision或“
@”符号来指定N和M。
如果TARGET是工作拷贝路径,则--revision选项的含义是:
--revision N:M
服务器比较 TARGET@N和TARGET@M。
--revision N
客户端比较TARGET@N和工作拷贝。
(无--revision)
客户端比较base和 TARGET的TARGET。
如果使用其他语法,服务器会比较URL1和URL2各自的N和M。如果省掉N或M,会假定为HEAD。
缺省情况下,svn diff忽略文件的祖先,只会比较两个文件的内容。如果你使用--notice-ancestry,比较修订版本(也就是,当你运行svn diff比较两个内容相同,但祖先历史不同的对象会看到所有的内容被删除又再次添加)时就会考虑路径的祖先。
别名
di
变化
无
是否访问版本库
获得工作拷贝非BASE修订版本的区别时会
选项
--revision (-r) REV--old OLD-TARGET--new NEW-TARGET--extensions (-x) "ARGS"--non-recursive (-N)--diff-cmd CMD--notice-ancestry--username USER--password PASS--no-auth-cache--non-interactive--no-diff-deleted--config-dir DIR
例子
比较BASE和你的工作拷贝(svn diff最经常的用法):
$ svn diff COMMITTERS Index: COMMITTERS===================================================================--- COMMITTERS (revision 4404)+++ COMMITTERS (working copy)
察看你的工作拷贝对旧的修订版本的修改:
$ svn diff -r 3900 COMMITTERS Index: COMMITTERS===================================================================--- COMMITTERS (revision 3900)+++ COMMITTERS (working copy)
使用“@”语法与修订版本3000和35000比较:
$ svn diff http://svn.collab.net/repos/svn/trunk/COMMITTERS@3000 /http://svn.collab.net/repos/svn/trunk/COMMITTERS@3500Index: COMMITTERS===================================================================--- COMMITTERS (revision 3000)+++ COMMITTERS (revision 3500)…
使用范围符号来比较修订版本3000和3500(在这种情况下只能传递一个URL):
$ svn diff -r 3000:3500 http://svn.collab.net/repos/svn/trunk/COMMITTERSIndex: COMMITTERS===================================================================--- COMMITTERS (revision 3000)+++ COMMITTERS (revision 3500)
使用范围符号比较修订版本3000和3500trunk中的所有文件:
$ svn diff -r 3000:3500 http://svn.collab.net/repos/svn/trunk
使用范围符号比较修订版本3000和3500trunk中的三个文件:
$ svn diff -r 3000:3500 --old http://svn.collab.net/repos/svn/trunk COMMITTERS README HACKING
如果你有工作拷贝,你不必输入这么长的URL:
$ svn diff -r 3000:3500 COMMITTERS Index: COMMITTERS===================================================================--- COMMITTERS (revision 3000)+++ COMMITTERS (revision 3500)
使用--diff-cmd CMD -x来指定外部区别程序
$ svn diff --diff-cmd /usr/bin/diff -x "-i -b" COMMITTERS Index: COMMITTERS===================================================================0a1,2> This is a test>
--------------------------------------------------------------------------------
名称
svn export — 导出一个干净的目录树。
概要
svn export [-r REV] URL[@PEGREV] [PATH]
svn export [-r REV] PATH1[@PEGREV] [PATH2]
描述
第一种从版本库导出干净工作目录树的形式是指定URL,如果指定了修订版本REV,会导出相应的版本,如果没有指定修订版本,则会导出HEAD,导出到PATH。如果省略PATH,URL的最后一部分会作为本地目录的名字。
从工作拷贝导出干净目录树的第二种形式是指定PATH1到PATH2,所有的本地修改将会保留,但是不再版本控制下的文件不会拷贝。
别名
无
变化
本地磁盘
是否访问版本库
只有当从URL导出时会访问
选项
--revision (-r) REV--quiet (-q)--force--username USER--password PASS--no-auth-cache--non-interactive--non-recursive--config-dir DIR--native-eol EOL--ignore-externals
例子
从你的工作拷贝导出(不会打印每一个文件和目录):
$ svn export a-wc my-exportExport complete.
从版本库导出目录(打印所有的文件和目录):
$ svn export file:///tmp/repos my-exportA my-export/testA my-export/quiz…Exported revision 15.
当使用操作系统特定的分发版本,使用特定的EOL字符作为行结束符号导出一棵树会非常有用。--native-eol选项会这样做,但是如果影响的文件拥有svn:eol-style = native属性,举个例子,导出一棵使用CRLF作为行结束的树(可能是为了做一个Windows的.zip文件分发版本):
$ svn export file://tmp/repos my-export --native-eol CRLFA my-export/testA my-export/quiz…Exported revision 15.
--------------------------------------------------------------------------------
名称
svn help — 帮助!
概要
svn help [SUBCOMMAND...]
描述
当手边没有这本书时,这是你使用Subversion最好的朋友!
别名
?, h
变化
无
是否访问版本库
不访问
选项
--version--quiet (-q)
--------------------------------------------------------------------------------
名称
svn import — 递归提交一个路径的拷贝到版本库。
概要
svn import [PATH] URL
描述
递归提交一个路径的拷贝到URL。如果省略PATH,默认是“
.”。版本库中对应的父目录必须已经创建。
别名
无
变化
版本库
是否访问版本库
是
选项
--message (-m) TEXT--file (-F) FILE--quiet (-q)--non-recursive (-N)--username USER--password PASS--no-auth-cache--non-interactive--force-log--editor-cmd EDITOR--encoding ENC--config-dir DIR--auto-props--no-auto-props--ignore-externals
例子
这会导入本地目录myproj到版本库的 根目录:
$ svn import -m "New import" myproj http://svn.red-bean.com/repos/testAdding myproj/sample.txt…Transmitting file data .........Committed revision 16.
这将本地目录myproj导入到版本库的trunk/misc,trunk/misc在导入之前不需要存在—
svn import会递归的为你创建目录:
$ svn import -m "New import" myproj / http://svn.red-bean.com/repos/test/trunk/misc/myprojAdding myproj/sample.txt…Transmitting file data .........Committed revision 19.
在导入数据之后,你会发现原先的目录树
并没有纳入版本控制,为了开始工作,你还是要运行svn checkout得到一个干净的目录树工作拷贝。
--------------------------------------------------------------------------------
名称
svn info — 显示本地或远程条目的信息。
概要
svn info [TARGET...]
描述
打印你的工作拷贝路径和URL的信息,包括:
路经
名称
URL
修订版本
版本库的根
版本库的UUID
节点类型
最后修改的作者
最后修改的修订版本
最后修改的日期
最后更新的文本
最后更新的属性
核对
锁定令牌
锁定拥有者
锁定创建时间
别名
无
变化
无
是否访问版本库
对URL操作时访问
选项
--targets FILENAME--recursive (-R)--revision (-r)--config-dir DIR
例子
svn info会展示所有项目的所有有用信息,它会显示文件的信息:
$ svn info foo.cPath: foo.cName: foo.cURL: http://svn.red-bean.com/repos/test/foo.cRepository Root: http://svn.red-bean.com/repos/testRepository UUID: 5e7d134a-54fb-0310-bd04-b611643e5c25Revision: 4417Node Kind: fileSchedule: normalLast Changed Author: sallyLast Changed Rev: 20Last Changed Date: 2003-01-13 16:43:13 -0600 (Mon, 13 Jan 2003)Text Last Updated: 2003-01-16 21:18:16 -0600 (Thu, 16 Jan 2003)Properties Last Updated: 2003-01-13 21:50:19 -0600 (Mon, 13 Jan 2003)Checksum: /3L38YwzhT93BWvgpdF6Zw==
它也会展示目录的信息:
$ svn info vendorsPath: vendorsURL: http://svn.red-bean.com/repos/test/vendorsRepository Root: http://svn.red-bean.com/repos/testRepository UUID: 5e7d134a-54fb-0310-bd04-b611643e5c25Revision: 19Node Kind: directorySchedule: normalLast Changed Author: harryLast Changed Rev: 19Last Changed Date: 2003-01-16 23:21:19 -0600 (Thu, 16 Jan 2003)
svn info也可以针对URL操作(另外,可以注意一下例子中的readme.doc文件已经被锁定,所以也会显示锁定信息):
$ svn info http://svn.red-bean.com/repos/test/readme.docPath: readme.docName: readme.docURL: http://svn.red-bean.com/repos/test/readme.docRepository Root: http://svn.red-bean.com/repos/testRepository UUID: 5e7d134a-54fb-0310-bd04-b611643e5c25Revision: 1Node Kind: fileSchedule: normalLast Changed Author: sallyLast Changed Rev: 42Last Changed Date: 2003-01-14 23:21:19 -0600 (Tue, 14 Jan 2003)Text Last Updated: 2003-01-14 23:21:19 -0600 (Tue, 14 Jan 2003)Checksum: d41d8cd98f00b204e9800998ecf8427eLock Token: opaquelocktoken:14011d4b-54fb-0310-8541-dbd16bd471b2Lock Owner: harryLock Created: 2003-01-15 17:35:12 -0600 (Wed, 15 Jan 2003)
--------------------------------------------------------------------------------
名称
svn list — 列出版本库目录的条目。
概要
svn list [TARGET[@REV]...]
描述
列出每一个TARGET文件和TARGET目录的内容,如果TARGET是工作拷贝路径,会使用对应的版本库URL。
缺省的TARGET是“
.”,意味着当前工作拷贝的版本库URL。
伴随--verbose,如下的字段展示了项目的状态:
最后一次提交的修订版本号
最后一次提交的作者
大小(单位字节)
最后提交的日期时间
使用选项--xml,输出是XML格式(如果没有指定--incremental,会包括一个头和一个围绕的元素)。会展示所有的信息;不接受--verbose选项。
别名
ls
变化
无
是否访问版本库
是
选项
--revision (-r) REV--verbose (-v)--recursive (-R)--incremental--xml--username USER--password PASS--no-auth-cache--non-interactive--config-dir DIR
例子
如果你希望在没有下载工作拷贝时察看版本库有哪些文件,svn list会非常有用:
$ svn list http://svn.red-bean.com/repos/test/supportREADME.txtINSTALLexamples/…
你也可以传递--verbose选项来得到额外信息,非常类似UNIX的ls -l命令:
$ svn list --verbose file:///tmp/repos 16 sally 28361 Jan 16 23:18 README.txt 27 sally 0 Jan 18 15:27 INSTALL 24 harry Jan 18 11:27 examples/
更多细节见“svn list”一节。
--------------------------------------------------------------------------------
名称
svn lock — 锁定版本库的工作拷贝路径或URL,所以没有其他用户可以提交这些文件的修改。
Synopsis
svn lock TARGET...
描述
锁定每个TARGET。如果任何TARGET已经被另一个用户锁定,则会打印警告信息并且继续锁定剩下的TARGET。可以使用--force从其它用户来窃取锁定。
别名
无
变化
工作拷贝,版本库
是否访问版本库
是
选项
--targets ARG--message (-m) ARG--file (-F) ARG--force-log--encoding ARG--username ARG--password ARG--no-auth-cache--non-interactive--config-dir ARG--force
例子
在工作拷贝锁定两个文件:
$ svn lock tree.jpg house.jpg'tree.jpg' locked by user 'harry'.'house.jpg' locked by user 'harry'.
锁定工作拷贝的一个被其它用户锁定的文件:
$ svn lock tree.jpgsvn: warning: Path '/tree.jpg is already locked by user 'harry in / filesystem '/svn/repos/db'$ svn lock --force foo'tree.jpg' locked by user 'sally'.
没有工作拷贝的情况下锁定文件:
$ svn lock http://svn.red-bean.com/repos/test/tree.jpg'tree.jpg' locked by user 'sally'.
更多细节见
“锁定”一节。
--------------------------------------------------------------------------------
名称
svn log — 显示提交日志信息。
概要
svn log [PATH]
svn log URL [PATH...]
描述
缺省目标是你的当前目录的路径,如果没有提供参数,
svn log会显示当前目录下的所有文件和目录的日志信息,你可以通过指定路径来精炼结果,一个或多个修订版本,或者是任何两个的组合。对于本地路径的缺省修订版本范围BASE:1。
如果你只是指定一个URL,就会打印这个URL上所有的日志信息,如果添加部分路径,只有这条路径下的URL信息会被打印,URL缺省的修订版本范围是HEAD:1。
svn log使用--verbose选项也会打印所有影响路径的日志信息,使用--quiet选项不会打印日志信息正文本身(这与--verbose协调一致)。
每个日志信息只会打印一次,即使是那些明确请求不止一次的路径,日志会跟随在拷贝过程中,使用--stop-on-copy可以关闭这个特性,可以用来监测分支点。
别名
无
变化
无
是否访问版本库
是
选项
--revision (-r) REV--quiet (-q)--verbose (-v)--targets FILENAME--stop-on-copy--incremental--limit NUM--xml--username USER--password PASS--no-auth-cache--non-interactive--config-dir DIR
例子
你可以在顶级目录运行
svn log看到工作拷贝中所有修改的路径的日志信息:
$ svn log------------------------------------------------------------------------r20 | harry | 2003-01-17 22:56:19 -0600 (Fri, 17 Jan 2003) | 1 lineTweak.------------------------------------------------------------------------r17 | sally | 2003-01-16 23:21:19 -0600 (Thu, 16 Jan 2003) | 2 lines…
检验一个特定文件所有的日志信息:
$ svn log foo.c------------------------------------------------------------------------r32 | sally | 2003-01-13 00:43:13 -0600 (Mon, 13 Jan 2003) | 1 lineAdded defines.------------------------------------------------------------------------r28 | sally | 2003-01-07 21:48:33 -0600 (Tue, 07 Jan 2003) | 3 lines…如果你手边没有工作拷贝,你可以查看一个URL的日志:
$ svn log http://svn.red-bean.com/repos/test/foo.c------------------------------------------------------------------------r32 | sally | 2003-01-13 00:43:13 -0600 (Mon, 13 Jan 2003) | 1 lineAdded defines.------------------------------------------------------------------------r28 | sally | 2003-01-07 21:48:33 -0600 (Tue, 07 Jan 2003) | 3 lines…如果你希望查看某个URL下面不同的多个路径,你可以使用URL [PATH...]语法。
$ svn log http://svn.red-bean.com/repos/test/ foo.c bar.c------------------------------------------------------------------------r32 | sally | 2003-01-13 00:43:13 -0600 (Mon, 13 Jan 2003) | 1 lineAdded defines.------------------------------------------------------------------------r31 | harry | 2003-01-10 12:25:08 -0600 (Fri, 10 Jan 2003) | 1 lineAdded new file bar.c------------------------------------------------------------------------r28 | sally | 2003-01-07 21:48:33 -0600 (Tue, 07 Jan 2003) | 3 lines…当你想¿ž接多个队日志命令的调用结果,你会希望使用--incremental选项。
svn log通常会在日志信息的开头和每一小段间打印一行虚线,如果你对一段修订版本运行svn log,你会得到下面的结果:
$ svn log -r 14:15------------------------------------------------------------------------r14 | ... ------------------------------------------------------------------------r15 | ... ------------------------------------------------------------------------然而,如果你希望收集两个不连续的日志信息到一个文件,你会这样做:
$ svn log -r 14 > mylog$ svn log -r 19 >> mylog$ svn log -r 27 >> mylog$ cat mylog------------------------------------------------------------------------r14 | ... ------------------------------------------------------------------------------------------------------------------------------------------------r19 | ... ------------------------------------------------------------------------------------------------------------------------------------------------r27 | ... ------------------------------------------------------------------------你可以使用incremental选项来避免两行虚线带来的混乱:
$ svn log --incremental -r 14 > mylog$ svn log --incremental -r 19 >> mylog$ svn log --incremental -r 27 >> mylog$ cat mylog------------------------------------------------------------------------r14 | ... ------------------------------------------------------------------------r19 | ... ------------------------------------------------------------------------r27 | ... --incremental选项为--xml提供了一个相似的输出控制。
提示
如果你在特定路径和修订版本运行
svn log,输出结果为空
$ svn log -r 20 http://svn.red-bean.com/untouched.txt------------------------------------------------------------------------这只意味着这条路径在那个修订版本没有修改,如果从版本库的顶级目录运行这个命令,或者是你知道那个修订版本修改了那个文件,你可以明确的指定它:
$ svn log -r 20 touched.txt ------------------------------------------------------------------------r20 | sally | 2003-01-17 22:56:19 -0600 (Fri, 17 Jan 2003) | 1 lineMade a change.------------------------------------------------------------------------
--------------------------------------------------------------------------------
名称
svn merge — 应用两组源文件的差别到工作拷贝路径。
概要
svn merge sourceURL1[@N] sourceURL2[@M] [WCPATH]svn merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]svn merge -r N:M SOURCE[@REV] [WCPATH]描述
第一种和第二种形式里,源路径(第一种是URL,第二种是工作拷贝路径)用修订版本号N和M指定,这是要比较的两组源文件,如果省略修订版本号,缺省是HEAD。
第三种形式,SOURCE可以是URL或者工作拷贝项目,与之对应的URL会被使用。在修订版本号N和M的URL定义了要比较的两组源。
WCPATH是接收变化的工作拷贝路径,如果省略WCPATH,会假定缺省值“
.”,除非源有相同基本名称与“.”中的某一文件名字匹配:在这种情况下,区别会应用到那个文件。
不像
svn diff,合并操作在执行时会考虑文件的祖先,当你从一个分支合并到另一个分支,而这两个分支有各自重命名的文件时,这一点会非常重要。
别名
无
变化
工作拷贝
是否访问版本库
只有在对URL操作时会
选项
--revision (-r) REV--non-recursive (-N)--quiet (-q)--force--dry-run--diff3-cmd CMD--ignore-ancestry--username USER--password PASS--no-auth-cache--non-interactive--config-dir DIR例子
将一个分支合并回主干(假定你有一份主干的工作拷贝,分支在修订版本250创建):
$ svn merge -r 250:HEAD http://svn.red-bean.com/repos/branches/my-branchU myproj/tiny.txtU myproj/thhgttg.txtU myproj/win.txtU myproj/flo.txt如果你的分支在修订版本23,你希望将主干的修改合并到分支,你可以在你的工作拷贝的分支上这样做:
$ svn merge -r 23:30 file:///tmp/repos/trunk/vendorsU myproj/thhgttg.txt…合并一个单独文件的修改:
$ cd myproj$ svn merge -r 30:31 thhgttg.txt U thhgttg.txt
--------------------------------------------------------------------------------
名称
svn mkdir — 创建一个纳入版本控制的新目录。
概要
svn mkdir PATH...svn mkdir URL...描述
创建一个目录,名字是提供的PATH或者URL的最后一部分,工作拷贝PATH指定的目录会预定要添加,而通过URL指定的目录会作为一次立即提交在版本库建立。多个目录URL的提交是原子操作,在两种情况下,中介目录必须已经存在。
别名
无
变化
如果是对URL操作则会影响版本库,否则是工作拷贝
是否访问版本库
只有在对URl操作时会
选项
--message (-m) TEXT--file (-F) FILE--quiet (-q)--username USER--password PASS--no-auth-cache--non-interactive--editor-cmd EDITOR--encoding ENC--force-log--config-dir DIR例子
在工作拷贝创建一个目录:
$ svn mkdir newdirA newdir在版本库创建一个目录(立即提交,所以需要日志信息):
$ svn mkdir -m "Making a new dir." http://svn.red-bean.com/repos/newdirCommitted revision 26.
--------------------------------------------------------------------------------
名称
svn move — 移动一个文件或目录。
概要
svn move SRC DST描述
这个命令移动文件或目录到你的工作拷贝或者是版本库。
提示
这个命令同
svn copy加一个svn delete等同。
注意
Subversion不支持在工作拷贝和URL之间拷贝,此外,你只可以一个版本库内移动文件—Subversion不支持跨版本库的移动。
WC -> WC
移动和预订一个文件或目录将要添加(包含历史)。
URL -> URL
完全服务器端的重命名。
别名
mv, rename, ren
变化
如果对URL操作会影响版本库,否则只影响工作拷贝
是否访问版本库
只有在对URL操作时会
选项
--message (-m) TEXT--file (-F) FILE--revision (-r) REV--quiet (-q)--force--username USER--password PASS--no-auth-cache--non-interactive--editor-cmd EDITOR--encoding ENC--force-log--config-dir DIR例子
移动工作拷bede一个文件:
$ svn move foo.c bar.cA bar.cD foo.c移动版本库中的一个文件(一个立即提交,所以需要提交信息):
$ svn move -m "Move a file" http://svn.red-bean.com/repos/foo.c / http://svn.red-bean.com/repos/bar.cCommitted revision 27.svn propdel — 删除一个项目的一个属性。概要svn propdel PROPNAME [PATH...]
svn propdel PROPNAME --revprop -r REV [URL]
描述
这会删除文件、目录或修订版本的属性。第一种形式是在工作拷贝删除版本化属性,第二种是在一个版本库修订版本中删除未版本化的属性。
别名
pdel, pd
变化
如果对URL操作会影响版本库,否则只影响工作拷贝
是否访问版本库
只有在对URL操作时会
选项
--quiet (-q)--recursive (-R)--revision (-r) REV--revprop--username USER--password PASS--no-auth-cache--non-interactive--config-dir DIR
例子
删除你的工作拷贝中一个文件的一个属性
$ svn propdel svn:mime-type some-scriptproperty 'svn:mime-type' deleted from 'some-script'.
删除一个修订版本的属性:
$ svn propdel --revprop -r 26 release-date property 'release-date' deleted from repository revision '26'
--------------------------------------------------------------------------------
名称
svn propedit — 修改一个或多个版本控制之下文件的属性。
概要
svn propedit PROPNAME PATH...
svn propedit PROPNAME --revprop -r REV [URL]
描述
使用喜欢的编辑器编辑一个或多个属性,第一种形式是在工作拷贝编辑版本化的属性,第二种形式是远程编辑未版本化的版本库修订版本属性。
别名
pedit, pe
变化
如果对URL操作会影响版本库,否则只影响工作拷贝
是否访问版本库
只有在对URL操作时会
选项
--revision (-r) REV--revprop--username USER--password PASS--no-auth-cache--non-interactive--encoding ENC--editor-cmd EDITOR--config-dir DIR
例子
svn propedit对修改多个值的属性非常简单:
$ svn propedit svn:keywords foo.c <svn will launch your favorite editor here, with a buffer open containing the current contents of the svn:keywords property. You can add multiple values to a property easily here by entering one value per line.>Set new value for property 'svn:keywords' on 'foo.c'
--------------------------------------------------------------------------------
名称
svn propget — 打印一个属性的值。
概要
svn propget PROPNAME [TARGET[@REV]...]
svn propget PROPNAME --revprop -r REV [URL]
描述
打印一个文件、目录或修订版本的一个属性的值,第一种形式是打印工作拷贝中一个或多个项目的版本化的属性,第二种形式是远程打印版本库修订版本的未版本化的属性。属性的详情见
“属性”一节。
别名
pget, pg
变化
如果对URL操作会影响版本库,否则只影响工作拷贝
是否访问版本库
只有在对URL操作时会
选项
--recursive (-R)--revision (-r) REV--revprop--strict--username USER--password PASS--no-auth-cache--non-interactive--config-dir DIR
例子
检查工作拷贝的一个文件的一个属性:
$ svn propget svn:keywords foo.cAuthorDateRev
对于修订版本属性相同:
$ svn propget svn:log --revprop -r 20 Began journal.
--------------------------------------------------------------------------------
名称
svn proplist — 列出所有的属性。
概要
svn proplist [TARGET[@REV]...]
svn proplist --revprop -r REV [URL]
描述
列出文件、目录或修订版本的属性,第一种形式是列出工作拷贝的所有版本化的属性,第二种形式是列出版本库修订版本的未版本化的属性。
别名
plist, pl
变化
如果对URL操作会影响版本库,否则只影响工作拷贝
是否访问版本库
只有在对URL操作时会
选项
--verbose (-v)--recursive (-R)--revision (-r) REV--quiet (-q)--revprop--username USER--password PASS--no-auth-cache--non-interactive--config-dir DIR
例子
你可以使用proplist察看你的工作拷贝的一个项目的属性:
$ svn proplist foo.cProperties on 'foo.c': svn:mime-type svn:keywords owner
通过--verbose选项,svn proplist也可以非常便利的显示属性的值:
$ svn proplist --verbose foo.cProperties on 'foo.c': svn:mime-type : text/plain svn:keywords : Author Date Rev owner : sally
--------------------------------------------------------------------------------
名称
svn propset — 设置文件、目录或者修订版本的属性PROPNAME为PROPVAL。
概要
svn propset PROPNAME [PROPVAL | -F VALFILE] PATH...
svn propset PROPNAME --revprop -r REV [PROPVAL | -F VALFILE] [URL]
描述
设置文件、目录或者修订版本的属性PROPNAME为PROPVAL。第一个例子在工作拷贝创建了一个版本化的本地属性修改,第二个例子创建了一个未版本化的远程的对版本库修订版本的属性修改。
提示
Subversion有一系列“
特殊的”影响行为方式的属性,关于这些属性的详情请见“特别属性”一节。
别名
pset, ps
变化
如果对URL操作会影响版本库,否则只影响工作拷贝
是否访问版本库
只有在对URL操作时会
选项
--file (-F) FILE--quiet (-q)--revision (-r) REV--targets FILENAME--recursive (-R)--revprop--username USER--password PASS--no-auth-cache--non-interactive--encoding ENC--force--config-dir DIR
例子
设置文件的mimetype:
$ svn propset svn:mime-type image/jpeg foo.jpg property 'svn:mime-type' set on 'foo.jpg'
在UNIX系统,如果你希望一个文件设置执行权限:
$ svn propset svn:executable ON somescriptproperty 'svn:executable' set on 'somescript'
或许为了合作者的利益你有一个内部的属性设置:
$ svn propset owner sally foo.cproperty 'owner' set on 'foo.c'
如果你在特定修订版本的日志信息里有一些错误,并且希望修改,可以使用--revprop设置svn:log为新的日志信息:
$ svn propset --revprop -r 25 svn:log "Journaled about trip to New York."property 'svn:log' set on repository revision '25'
或者,你没有工作拷贝,你可以提供一个URL。
$ svn propset --revprop -r 26 svn:log "Document nap." http://svn.red-bean.com/reposproperty 'svn:log' set on repository revision '25'
最后,你可以告诉propset从一个文件得到输入,你甚至可以使用这个方式来设置一个属性为二进制内容:
$ svn propset owner-pic -F sally.jpg moo.c property 'owner-pic' set on 'moo.c'
注意
缺省,你不可以在Subversion版本库修改修订版本属性,你的版本库管理员必须显示的通过创建一个名字为pre-revprop-change的钩子来允许修订版本属性修改,关于钩子脚本的详情请见
“钩子脚本”一节。
--------------------------------------------------------------------------------
名称
svn resolved — 删除工作拷贝文件或目录的“
冲突”状态。
概要
svn resolved PATH...
描述
删除工作拷贝文件或目录的“
conflicted”状态。这个程序不是语义上的改变冲突标志,它只是删除冲突相关的人造文件,从而重新允许PATH提交;也就是说,它告诉Subversion冲突已经“解决了”。关于解决冲突更深入的考虑可以查看“解决冲突(合并别人的修改)”一节。
别名
无
变化
工作拷贝
是否访问版本库
否
选项
--targets FILENAME--recursive (-R)--quiet (-q)--config-dir DIR
例子
如果你在更新时得到冲突,你的工作拷贝会产生三个新的文件:
$ svn updateC foo.cUpdated to revision 31.$ lsfoo.cfoo.c.minefoo.c.r30foo.c.r31
当你解决了foo.c的冲突,并且准备提交,运行
svn resolved让你的工作拷贝知道你已经完成了所有事情。
警告
你
可以仅仅删除冲突的文件并且提交,但是svn resolved除了删除冲突文件,还修正了一些记录在工作拷贝管理区域的记录数据,所以我们推荐你使用这个命令。
--------------------------------------------------------------------------------
名称
svn revert — 取消所有的本地编辑。
概要
svn revert PATH...
描述
恢复所有对文件和目录的修改,并且解决所有的冲突状态。
svn revert不会只是恢复工作拷贝中一个项目的内容,也包括了对属性修改的恢复。最终,你可以使用它来取消所有已经做过的预定操作(例如,文件预定要添加或删除可以“恢复”)。
别名
无
变化
工作拷贝
是否访问版本库
否
选项
--targets FILENAME--recursive (-R)--quiet (-q)--config-dir DIR
例子
丢弃对一个文件的修改:
$ svn revert foo.cReverted foo.c
如果你希望恢复一整个目录的文件,可以使用--recursive选项:
$ svn revert --recursive .Reverted newdir/afileReverted foo.cReverted bar.txt
最后,你可以取消预定的操作:
$ svn add mistake.txt whoopsA mistake.txtA whoopsA whoops/oopsie.c$ svn revert mistake.txt whoopsReverted mistake.txtReverted whoops$ svn status? mistake.txt? whoops
注意
如果你没有给
svn revert提供了目标,它不会做任何事情—为了保护你不小心失去对工作拷贝的修改,svn revert需要你提供至少一个目标。
--------------------------------------------------------------------------------
名称
svn status — 打印工作拷贝文件和目录的状态。
概要
svn status [PATH...]
描述
打印工作拷贝文件和目录的状态。如果没有参数,只会打印本地修改的项目(不会访问版本库),使用--show-updates选项,会添加工作修订版本和服务器过期信息。使用--verbose会打印每个项目的完全修订版本信息。
输出的前六列都是一个字符宽,每一列给出了工作拷贝项目的每一方面的信息。
第一列指出一个项目的是添加、删除还是其它的修改。
' '
没有修改。
'A'
预定要添加的项目。
'D'
预定要删除的项目。
'M'
项目已经修改了。
'R'
项目在工作拷贝中已经被替换了。这意味着文件预定要删除,然后有一个同样名称的文件要在同一个位置替换它。
'C'
项目的内容(相对于属性)与更新得到的数据冲突了。
'X'
项目与外部定义相关。
'I'
项目被忽略(例如使用svn:ignore属性)。
'?'
项目不在版本控制之下。
'!'
项目已经丢失(例如,你使用
svn移动或者删除了它)。这也说明了一个目录不是完整的(一个检出或更新中断)。 '~'
项目作为一种对象(文件、目录或链接)纳入版本控制,但是已经被另一种对象替代。
第二列告诉一个文件或目录的属性的状态。
' '
没有修改。
'M'
这个项目的属性已经修改。
'C'
这个项目的属性与从版本库得到的更新有冲突。
第三列只在工作拷贝锁定时才会出现。(见“svn cleanup”一节。)
' '
项目没有锁定。
'L'
项目已经锁定。
第四列只在预定包含历史添加的项目出现。
' '
没有历史预定要提交。
'+'
历史预定要伴随提交。
第五列只在项目跳转到相对于它的父目录时出现(见“转换工作拷贝”一节)。
' '
项目是它的父目录的孩子。
'S'
项目已经转换。
第六列显示锁定信息。
' '
当使用--show-updates,文件没有锁定。如果
不使用--show-updates,这意味着文件在工作拷贝被锁定。 K
文件锁定在工作拷贝。
O
文件被另一个工作拷贝的另一个用户锁定,只有在使用--show-updates时显示。
T
文件锁定在工作拷贝,但是锁定被“
窃取”而不可用。文件当前锁定在版本库,只有在使用--show-updates时显示。 B
文件锁定在工作拷贝,但是锁定被“
破坏”而不可用。文件当前锁定在版本库,只有在使用--show-updates时显示。
过期信息出现在第七列(只在使用--show-updates选项时出现)。
' '
这个项目在工作拷贝是最新的。
'*'
在服务器这个项目有了新的修订版本。
余下的字段是可变得宽度且使用空格分隔,如果使用--show-updates或--verbose选项,工作修订版本是下一个字段。
如果传递--verbose选项,最后提交的修订版本和最后的提交作者会在后面显示。
工作拷贝路径永远是最后一个字段,所以它可以包括空格。
别名
stat, st
变化
无
是否访问版本库
只有使用--show-updates时会访问
选项
--show-updates (-u)--verbose (-v)--non-recursive (-N)--quiet (-q)--no-ignore--username USER--password PASS--no-auth-cache--non-interactive--config-dir--ignore-externals
例子
这是查看你在工作拷贝所做的修改的最简单的方法。
$ svn status wc M wc/bar.cA + wc/qax.c
如果你希望找出工作拷贝哪些文件是最新的,使用--show-updates选项(这不会对工作拷贝有任何修改)。这里你会看到wc/foo.c在上次更新后有了修改:
$ svn status --show-updates wc M 965 wc/bar.c * 965 wc/foo.cA + 965 wc/qax.cStatus against revision: 981
注意
--show-updates
只会在过期的项目(如果你运行svn update,就会更新的项目)旁边安置一个星号。--show-updates不会导致状态列表反映项目的版本库版本。
最后,是你能从status子命令得到的所有信息:
$ svn status --show-updates --verbose wc M 965 938 sally wc/bar.c * 965 922 harry wc/foo.cA + 965 687 harry wc/qax.c 965 687 harry wc/zig.cHead revision: 981
关于svn status的更多例子可以见“svn status”一节。
--------------------------------------------------------------------------------
名称
svn switch — 把工作拷贝更新到别的URL。
概要
svn switch URL [PATH]
switch --relocate FROM TO [PATH...]
描述
这个子命令更新你的工作拷贝来反映新的URL—通常是一个与你的工作拷贝分享共同祖先的URL,尽管这不是必需的。这是Subversion移动工作拷贝到分支的方式。更深入的了解请见
“转换工作拷贝”一节。
别名
sw
变化
工作拷贝
是否访问版本库
是
选项
--revision (-r) REV--non-recursive (-N)--quiet (-q)--diff3-cmd CMD--relocate--username USER--password PASS--no-auth-cache--non-interactive--config-dir DIR
例子
如果你目前所在目录vendors分支到vendors-with-fix,你希望转移到那个分支:
$ svn switch http://svn.red-bean.com/repos/branches/vendors-with-fix .U myproj/foo.txtU myproj/bar.txtU myproj/baz.cU myproj/qux.cUpdated to revision 31.
为了跳转回来,只需要提供最初取出工作拷贝的版本库URL:
$ svn switch http://svn.red-bean.com/repos/trunk/vendors .U myproj/foo.txtU myproj/bar.txtU myproj/baz.cU myproj/qux.cUpdated to revision 31.
提示
如果你不希望跳转所有的工作拷贝,你可以只跳转一部分。
有时候管理员会修改版本库的“基本位置”—换句话说,版本库的内容并不改变,但是访问根的主URL变了。举个例子,主机名变了、URL模式变了或者是URL中的任何一部分改变了。我们不选择重新检出一个工作拷贝,你可以使用svn switch来重写版本库所有URL的开头。使用--relocate来做这种替换,没有文件内容会改变,访问的版本库也不会改变。只是像在工作拷贝.svn/运行了一段Perl脚本s/OldRoot/NewRoot/。
$ svn checkout file:///tmp/repos testA test/aA test/b…$ mv repos newlocation$ cd test/$ svn updatesvn: Unable to open an ra_local session to URLsvn: Unable to open repository 'file:///tmp/repos'$ svn switch --relocate file:///tmp/repos file:///tmp/newlocation .$ svn updateAt revision 3.
警告
小心使用--relocate选项,如果你输入了错误的选项,你会在工作拷贝创建无意义的URL,会导致整个工作区不可用并且难于修复。理解何时应该使用--relocate也是非常重要的,下面是一些规则:
如果工作拷贝需要反映一个版本库的新目录,只需要使用
svn switch。
如果你的工作拷贝还是反映相同的版本库目录,但是版本库本身的位置改变了,使用
svn switch --relocate。
--------------------------------------------------------------------------------
名称
svn unlock — 解锁工作拷贝路径或URL。
概要
svn unlock TARGET...
描述
解锁每个TARGET。如果任何另一个用户锁定了TARGET,或者没有正确工作拷贝的锁定令牌,打印警告并继续解锁余下的TARGET。使用--force可以打破其它用户或工作拷贝的锁定。
别名
无
变化
工作拷贝,版本库
是否访问版本库
是
选项
--targets ARG--username ARG--password ARG--no-auth-cache--non-interactive--config-dir ARG--force
例子
解锁工作拷贝中的两个文件:
$ svn unlock tree.jpg house.jpg'tree.jpg' unlocked.'house.jpg' unlocked.
解锁工作拷贝的一个被其他用户锁定的文件:
$ svn unlock tree.jpgsvn: 'tree.jpg' is not locked in this working copy$ svn unlock --force tree.jpg'tree.jpg' unlocked.
没有工作拷贝时解锁一个文件:
$ svn unlock http://svn.red-bean.com/repos/test/tree.jpg'tree.jpg unlocked.
更多细节见
“锁定”一节.
--------------------------------------------------------------------------------
名称
svn update — 更新你的工作拷贝。
概要
svn update [PATH...]
描述
svn update会把版本库的修改带到工作拷贝,如果没有给定修订版本,它会把你的工作拷贝更新到HEAD修订版本,否则,它会把工作拷贝更新到你用--revision指定的修订版本。为了保持同步,也会删除所有在工作拷贝发现的无效锁定(见“svn cleanup”一节)。
对于每一个更新的项目开头都有一个表示所做动作的字符,这些字符有下面的意思:
A
添加
D
删除
U
更新
C
冲突
G
合并
第一列的字符反映文件本身的更新,而第二列会反映文件属性的更新。
别名
up
变化
工作拷贝
是否访问版本库
是
选项
--revision (-r) REV--non-recursive (-N)--quiet (-q)--diff3-cmd CMD--username USER--password PASS--no-auth-cache--non-interactive--config-dir DIR--ignore-externals
例子
获取你上次更新之后版本库的修改:
$ svn updateA newdir/toggle.cA newdir/disclose.cA newdir/launch.cD newdir/READMEUpdated to revision 32.
你也可以将工作拷贝更新到旧的修订版本(Subversion没有CVS的“sticky”文件的概念;见附录 A, Subversion对于CVS用户):
$ svn update -r30A newdir/READMED newdir/toggle.cD newdir/disclose.cD newdir/launch.cU foo.cUpdated to revision 30.
提示
如果你希望检查单个文件的旧的修订版本,你会希望使用
svn cat。
本文来自[Svn中文网]转发请保留本站地址:http://www.svn8.com/SVNSY/20090602/5927_2.html