【Linux-SVN】SVN日常管理命令
时间:2015-11-26 12:11:57 作者:vaster 标签: svn 常用命令 分类: Linux Linux服务
1、检出
svn co svn://path/ [local_path] --username username --password passwdsvn co <=> svn checkout svn co <=> svn checkout
2、导出( 导出一个干净的不带.svn文件夹的目录树)
svn export [ -r 版本号 ] svn://path/ [ local_path ] --username username --password passwd svn export 本地检出的(带.svn文件夹的)目录全路径 local_path未指定版本号,则导出最新的 未指定版本号,则导出最新的
3、添加新文件/目录
svn add filename/pathname (必须提交才会真的生效,这里只是告诉SVN服务器要添加文件了) svn mkdir path svn mkdir -m "message" svn://path/dirsvn import http://localhost/svn/hehehehehhe -m=sdfsdf //可在任何目录下,将当前文件夹下的所以文件递归导入到 svn response 的hehehhhe 目录下。 svn import http://localhost/svn/hehehehehhe -m=sdfsdf //可在任何目录下,将当前文件夹下的所以文件递归导入到 svn response 的hehehhhe 目录下。
4、提交
svn ci -m "注释" [ -N ] [ --no-unlock ] filename svn ci <=>svn commit--no-unlock 保持锁开关就用些选项 --no-unlock 保持锁开关就用些选项
5、更新
svn update [ -r 版本号] [文件名]
6、删除文件
svn delete svn://path/ -m "注释" (必须提交才会真的生效,这里只是告诉SVN服务器要添加文件了)
推荐操作:
svn delete filenamesvn ci -m "message" svn ci -m "message"
7、加锁和解锁
svn lock -m "message" [ --force ] filenamesvn unlock filename svn unlock filename
8、比较差异
svn diff filename #与基础版本(最后检出或的版本)比较 svn diff -r head #与版本库中最新版本对比svn diff -r 修改版本号m:修正版本号n filename svn diff -r 修改版本号m:修正版本号n filename
9、查看文件或目录状态
svn st pathsvn st <=> svn status svn st <=> svn status
目录下的文件和子目录状态,状态正常不显示; ?:不在SVN控制中; M:内容被修改; C:发生冲突; A:预定加入到版本库; K:被锁定 svn st -v path 显示文件和子目录状态(含子目录的文件) 第一列保持相同,第二列显示版本号,第三列和第四列显示最后一次修改的版本号和修改人
10、查看最新版本号
svnlook youngest /svn/www5 5
11、显示一个版本仓库中文件和目录的树形结构图
svnlook tree /svn/www/ --show-ids / <0.0.r1/626> a <0-1.0.r1/51> b <3-1.0.r1/207>c <5-1.0.r1/365> c <5-1.0.r1/365>
10、查看日志
svn log filename
11、查看文件详细信息
svn info filename
12、查看版本库下的文件和目录列表
svn list svn://path/
13、恢复本地修改
svn revert [--recursive] filename
14、把工作拷贝别的URL
svn switch svn://newpath localpath
15、不checkout而查看输出特定文件或URL的内容
svn cat svn://path/
16、新建一个分支copy
svn copy branchA branchB -m "message" //from A to B
17、合并内容到分支merge
svn merge branchA branchB //把对A的修改合并到B
18、解决冲突
svn resolved [localpath]
当有冲突时,会生成.mine,.r版本号的文件
19.显示被修改的文件
svnlook diff path
20、svn备份
svnadmin dump path > /newpath #完全备份版本库,并保存为newpath svnadmin dump path -r n --incremental > /newpath #以增量把版本库版本n的信息并转存到newpathsvnadmin dump path -r 10:20 --incremental > /root/www_bak_10-20 #对于一些较大的版本库可以分解备份 svnadmin dump path -r 10:20 --incremental > /root/www_bak_10-20 #对于一些较大的版本库可以分解备份
参数介绍: -r [--revision] ARG : 指定版本 ARG (或 X:Y 范围) --incremental : 以增量方式进行转存 --deltas : 在转存输出中使用差异 -q [--quiet] : 在标准错误输出不显示进度 (仅错误) svnadmin hotcopy /svn/www/ /root/www_hotcopy #热拷贝www这个版本库,可以直接拿来用,但要确保权限
21、SVN还原
svnadmin load /svn/www/ < /root/www_full_bak #还原完全备份 svnadmin dump /svn/www/ -r 5 --incremental > /root/www_bak_1 #再还原增量备份 svnadmin dump /svn/www/ -r 10:20 --incremental > /root/www_bak_1 #再还原增量备份svnadmin dump /svn/www/ -r 21:40 --incremental > /root/www_bak_1 #再还原增量备份 svnadmin dump /svn/www/ -r 21:40 --incremental > /root/www_bak_1 #再还原增量备份
22、SVN合并
svnadmin create /svn/crazy #创建版本库crazy svnadmin dump /svn/www > /root/www_full_bak 备份/svn/www 和 /svn/redhat 版本库 svnadmin dump /svn/redhat/ > /root/redhat_full_bak svnadmin load /svn/crazy/ --parent-dir test < /root/www_full_bak 合并版本库svnadmin load /svn/crazy/ --parent-dir test1 < /root/redhat_full_bak 23、SVN帮助 svn help svn help ci 以上所有协议可以是svn,http,https;不指定password,会提示输密码 svnadmin load /svn/crazy/ --parent-dir test1 < /root/redhat_full_bak 23、SVN帮助 svn help svn help ci 以上所有协议可以是svn,http,https;不指定password,会提示输密码
-------------------------------------------命令帮助---------------------------------
svn add
add: 把文件和目录放入版本控制中, 通过调度加到档案库。它们会在下一次提交时加入。
用法:add 路径...
有效选项:
--targets arg : 传递文件ARG 内容为附件参数
-N [--non-recursive] : 只在单个目录操作
-q [--quiet] : 打印尽可能少
--config-dir arg : 从目录 ARG 读取用户配置文件
--force : 强制操作运行
--auto-props : 使自动属性有效
--no-auto-props : 使自动属性无效
eg.(下面的命令必须在工作拷贝目录下运行 ) sh> svn add test.c //加一个文件 sh> svn add test //加一个目录,目录下有任意结构的文件夹 sh> svn import http://localhost/svn/hehehehehhe -m=sdfsdf //可在任何目录下,将当前文件夹下的所以文件递归导入到 svn response 的hehehhhe 目录下。
sh>svn export export: 产生一个无版本控制的目录树拷贝。 用法:1 、export [-r REV] URL[@PEGREV] [PATH] 2、export [-r REV] PATH1[@PEGREV] [PATH2]
1、从 URL 指定的档案库,导出一个干净的目录树到 PATH。如果有指定REV 的话,内容即为该修订版的,否则就是 HEAD 修订版。如果 PATH被省略的话,地址 (URL)的最后部份会被用来当成本地的目录名称。
2、在工作拷贝中,从指定的 PATH1 导出一个干净的目录树到 PATH2。如果有指定 REV 的话,会从指定的修订版导出,否则从 WORKING 导出。如果PATH2 被省略的话, PATH1 的最后部份会被用来当成本地的目录名称。如果没有指定 REV 的话,所有的本地修改都还会保持著,但是未纳入版本控制的文件不会被复制。 如果指定了 PEGREV ,将从指定的修订版本开始查找。 有效选项: -r [--revision] arg : ARG (一些命令需要 ARG1:ARG2 ) 修订版参数可以是: 数字 修订版号 "{" 日期 "}" 在指定时间以后的修订版 date "HEAD" 最近的档案库 "BASE" 基线,基于修订版的工作条目 "COMMITTED" 最后提交或基线之前 "PREV" 修订版提交之前 -q [--quiet] : 打印尽可能少 -N [--non-recursive] : 只在单个目录操作 --force : 强制操作运行 --username arg : 指定用户 ARG --password arg : 指定密码 ARG --no-auth-cache : 不要缓冲用户验证 --non-interactive : 不要交互提示 --config-dir arg : 从目录 ARG 读取用户配置文件 --native-eol arg : 使用一个与标准不同的 EOL 标记 文件的系统标记是一个本地的 svn:eol-style 属性。 ARG 可能是一下之一 'LF','CR' ,'CRLF' --ignore-externals : ignore externals definitions
eg. sh> svn export http://localhost/svn/hehehehehhhe
sh> svn merge merge: 将两个来源之间的差异应用至工作拷贝路径。 用法:1 、 merge sourceURL1[@N] sourceURL2[@M] [WCPATH] 2、merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH] 3、merge -r N:M SOURCE[@REV] [WCPATH]
1、第一种形式中,来源 URL 各被指定到修订版 N 与 M。这两个就是作为比较的来源。如果没有指定修订版的话,默认为 HEAD 2、在第二种形式中,对应到两个来源的工作拷贝路径的 URL 定义出用以进行比较的来源。这里必须指定修订版。 3、第三种形式中, SOURCE 可为 URL 或工作拷贝项目,后者会使用对应的地址 (URL)。在修订版 REV 的 地址 (URL) 会以它存在于修订版 N 与 M 的路径来作比较。如果未指定 REV,就会假设为 HEAD。
WCPATH 是接受改变的工作拷贝路径。如果省略 WCPATH 的话,默认值为'.',除非来源的主要名字符合 '.' 里的某个文件;在这种情况下,文件差异将会直接应用至该文件去。
有效选项: -r [--revision] arg : ARG (一些命令需要 ARG1:ARG2 ) 修订版参数可以是: 数字 修订版号 "{" 日期 "}" 在指定时间以后的修订版 date "HEAD" 最近的档案库 "BASE" 基线,基于修订版的工作条目 "COMMITTED" 最后提交或基线之前 "PREV" 修订版提交之前 -N [--non-recursive] : 只在单个目录操作 -q [--quiet] : 打印尽可能少 --force : 强制操作运行 --dry-run : 尝试操作但不修改 --diff3-cmd arg : 使用 ARG 作为合并命令 --ignore-ancestry : 合并时忽略原始信息 --username arg : 指定用户 ARG --password arg : 指定密码 ARG --no-auth-cache : 不要缓冲用户验证 --non-interactive : 不要交互提示 --config-dir arg : 从目录 ARG 读取用户配置文件
svn help 用法:svn [options] [args] Subversion 命令行客户端,版本 1.2.0。 请使用 “svn help ” 显示子命令的辅助说明。 大多数的子命令可接受文件或目录参数,对目录进行递回存取。 如无指定参数给命令,默认将会自当前的目录 (包含) 进 行递归存取。
可用的子命令:(括号内是子命令的简写 ) add blame (praise, annotate, ann) cat checkout (co) //从源码库取出一个工作版本的拷贝 cleanup // commit (ci) //提交当前工作拷贝的更改。这个地方是有可能出现代码冲突的。 copy (cp) //做一个工作拷贝的拷贝。 delete (del, remove, rm) //删除本地或者svn server response上的文件或者目录。 diff (di) //比较某个文件与库中的对应文件的不同,类似于系统的 diff命令。参数:文件名。 export //导出一个无版本控制的目录树拷贝。一般用于导出发行,或者投入运行的版本。 help (?, h) import //将本地当前目录下的文件导入到 svn response 中。 info //当前目录下工作拷贝中某文件 (文件夹) 的信息,如 URL,版本,修改日期等。参数:要看的文件 (文件夹) list (ls) //列出当前工作拷贝下的文件 ,相当于系统的ls命令,不过只能在工作拷贝目录下使用。 lock log merge //将两个来源之间的差异应用至工作拷贝路径。 mkdir //在本地或者 svn respon上新建一个文件夹.参数: URL或者路径 move (mv, rename, ren) propdel (pdel, pd) propedit (pedit, pe) propget (pget, pg) proplist (plist, pl) propset (pset, ps) resolved revert status (stat, st) //svn工作拷贝当前状态,与 svn server上的源码比较的结果。 switch (sw) unlock update (up) //将 svn server端文件同步到本地
>svn co checkout (co): Check out a working copy from a repository. usage: checkout URL[@REV]... [PATH]
If specified, REV determines in which revision the URL is first looked up.
If PATH is omitted, the basename of the URL will be used as the destination. If multiple URLs are given each will be checked out into a sub-directory of PATH, with the name of the sub-directory being the basename of the URL.
有效选项: -r [--revision] arg : ARG (一些命令需要 ARG1:ARG2 ) 修订版参数可以是: 数字 修订版号 "{" 日期 "}" 在指定时间以后的修订版 date "HEAD" 最近的档案库 "BASE" 基线,基于修订版的工作条目 "COMMITTED" 最后提交或基线之前 "PREV" 修订版提交之前 -q [--quiet] : 打印尽可能少 -N [--non-recursive] : 只在单个目录操作 --username arg : 指定用户 ARG --password arg : 指定密码 ARG --no-auth-cache : 不要缓冲用户验证 --non-interactive : 不要交互提示 --config-dir arg : 从目录 ARG 读取用户配置文件 --ignore-externals : ignore externals definitions