注册 登录  
 加关注

网易博客网站关停、迁移的公告:

将从2018年11月30日00:00起正式停止网易博客运营
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

老狗的博客

尽管每一步都很微小,但我确认我在进步

 
 
 

日志

 
 
关于我
sky

认真生活,努力工作 热爱技术,关注DB,存储,分布式,中间层,java,c++,php

网易考拉推荐

svn 常用命令 学习  

2012-05-11 17:53:02|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

摘自subversion FAQ



Each time you commit a change, the repository stores a new revision of that overall repository tree, and labels the new tree with a new revision number. Of course, most of the tree is the same as the revision before, except for the parts you changed
每次当你提交一个change,repository会存储整个repository tree为一个新的revision, 而且用一个revision number来标识它

For the purposes of this discussion, here's a simple definition of changeset: it's a collection of changes with a unique name. The changes might include textual edits to file contents, modifications to tree structure, or tweaks to metadata. In more common speak, a changeset is just a patch with a name you can refer to
下面是对于changeset的定义:用一个唯一的名字来表示一组change的集合,这些change包括文件内容的文本改变,树结构的修改,或者元数据的变化
In Subversion, a global revision number N names a tree in the repository: it's the way the repository looked after the Nth commit. It's also the name of an implicit changeset: if you compare tree N with tree N#1, you can derive the exact patch that was committed
在subversion中,一个全局的revision number N对respository tree进行了命名,这个repository进行了N次提交,
它也是隐式的changeset的名字,如果你比较N和N#1,你可以推导出提交过的精确的patch
Subversion manages versioned trees as first order objects (the repository is an array of trees), and the changesets are things that are derived (by comparing adjacent trees.
subversion 用数组来管理版本树,changeset通过比较相邻的树可以推导出

结论

从以上四段话,我们可以得出以下两点:
1. 当你每次提交代码的时候,代码库会产生一个全局的revision number
2. 每一个revision number标识了代码库的tree结构,通过对比tree结构,可以得到changeset

查看svn帮助信息
1. svn help
查看svn的所有命令
2. svn help <subcommand>
查看svn的某个子命令

svn checkout
1. 查看帮助信息svn help co
1. 常见用法
svn co <csvpath> <dstpath>
注意如果没有dstpath,则会在当前目录中checkout出csvpath中所有内容,并且创建目录
2. svn up
全量checkout以后,则使用svn up更新目录

svn commit
1. 查看帮助信息svn help ci
2. 常见用法
svn ci -m "added by xxx"
-m : message

svn修改
1. 添加目录文件
svn add <dir/file>
2. 删除目录文件
svn del <dir/file>
3. 创建目录
svn mkdir <dir>
4. 移动/改名
svn mv <dir/file> <dir/file>

svn 清理
1. 在某些时候出现问题的时候,使用cleanup 命令进行清理
svn cleanup

svn 状态
1. svn info [target@ver]
info: Display information about a local or remote item.
可以显示本地或者远程的条目

2. svn status
With no args, print only locally modified items (no network access).
没有参数,则打印本地修改的条目(在没有网络的情况下)
 With -q, print only summary information about locally modified items.
-q参数,打印本地修改的汇总信息
 With -u, add working revision and server out-of-date information.
-u参数,打印正在工作的版本,以及和server的过期信息
 With -v, print full revision information on every item.
-v参数,打印每个条目的全版本信息

3. svn resolved
有时候代码出现了冲突,可以用svn st看到其为C状态,既是发生了冲突
文件夹中针对这个文件会多出来几个文件:a.c.mine a.c.their a.c
这个时候,你可以通过编辑a.c,来解决冲突
然后通过svn resolved a.c,来声明你已经解决了冲突,这个时候就可以提交了

svn merge应用

1. 用法1
merge sourceURL1[@N] sourceURL2[@M] [WCPATH]

对比得到 sourceurl1 版本的N版本 和sourceurl2的M版本, 将得到的changeset应用到本地的workspace copy中去

2. 用法2

merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]

对比得到 sourceWCPATH1的N版本和 sourceWCPATH2的M版本,将得到的changeset应用到wcpath中去

2.  用法3

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

source可以是代码库的一个url,也可以是本地的workespace copy, 找出source版本N和M之间的不同,然后应用到workspace copy上去, -c M等价于-r M-1:M

  评论这张
 
阅读(375)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018