《版本控制之道》读书笔记
检查是否安装了svn
svn -version
检查是否安装了客户端
svnadmin -version
创项目仓库
mkdir /home/mike/svn-repos
svnadmin create /home/mike/svn-repos
创建简单的项目
svn import –m “importing Seame project” . file:///homemike/svn-repos/sesame/trunk
签出一个项目
svn co file:///home/mike/svn-repos/sesame/trunk sesame
获得一个或多个文件的状态
svn status Day.txt
更新项目仓库
svn commit –m “some message”
日志功能
svn log Day.txt
svn log –verbose Day.txt 告知具体改动
为了能看到日志信息,应首先运行 svn update
发生冲突时,应仔细查看冲突标记,与其他开发人员进行沟通,修改完后移除冲突标记并提交
svn resolved Number.txt
svn+ssh网络协议
svn chechout svn+ssh://olio/home/mike/svn-repos/sesame/trunk princess
结合Apache的网络协议
svn checkout http://olil.mynetwork.net/svn-repos/sesame/trunk sesame
常见的Subversion命令
- 1. 签出
svn checkout 简写co
svn checkout –r 7 svn://olio/sesame/trunk old-sesame 签出过去的第七版
多个版本并存时使用svn info sesame 查看拷贝是从哪里来的
- 2. 更新
svn update
svn update build.xml src/ test/
应经常更新,一个好处是别的开发者走上岔路是可以很快发现
A新文件 U文件过期 D文件已删除
G文件已过期并且在本地做了修改,Subversion成功合并
C文件已过期并且在本地做了修改,Subversion合并出现冲突,需要解决冲突后才能签入
- 3. 添加文件和目录
svn add timelib 此时只记住了所添加的文件名字,并没有实际添加,必须使用svn commit 提交
- 4. 属性
设置属性 svn propset chechkd-by “Mike Mason” Number.txt
编辑属性 ssvn propedit checked-by Number.txt
列出属性 svn proplist Number.txt
列出属性当前值 svn proget checked-by Number.txt
忽略某些文件svn propedit svn:ignore timelib 在编辑器中输入 *.bak
设置Mime类型 svn:mime-type
可执行标记 svn:executable
主要是Unix,Windows所有文件都可执行,该属性不需关心
自动设置属性编辑Subversion的config目录,去掉这行注释enable-auto-props = yes
去掉autoprops的注释,把想添加的属性添在这
- 5. 拷贝、移动文件和目录
拷贝 svn copy或cp
移动 svn move或mv
- 6. 查看改变
svn diff
-r 版本标识符
号 7
{日期} {“2012-06-17 16:46:41”}
HEAD 仓库中的最新版本
BASE 工作拷贝基准版本,即你最后签出或更新的版本
COMMITTED 最后改动的版本,等于或早于BASE
PREV COMMITTED之前的一个版本
版本之间查找差异 svn diff –r19:21 Clock.java
- 7. 处理合并冲突
svn resolved Number.txt
- 8. 提交改动
svn update
- 9. 查看改动历史
svn log | more 通过more命令使用管道分页
-r
逐行历史 svn blame Number.txt
- 10. 移除改动
svn merge –r 27:26 Contact.java
文件加锁
开启文件加锁 svn propset svn:needs-lock true ccsr.xls 值不必非要true,有就行
基本文件加锁 svn lock ccsr.xls -m “Adding *******”
svn info ccsr.xls 查看被谁锁住了
解锁 svn unlock 自己解锁 svn unlock –force 别人砸锁
使用标签和分支
标签和分支的命名规范
Thing to Name |
Name Style |
Examples |
Release branch |
RB-rel |
RB-1.0 RB-1.0.1a |
Releases |
REL-rel |
REL-1.0 REL-1.0.1a |
Bug fix branches |
BUG-track |
BUG-3035 BUG-10871 |
Pre-bug fix |
PRE-track |
PRE-3035 PRE-10871 |
Post-bug fix |
POST-track |
POST-3035 POST-10871 |
Developer experiments |
TRY-initials-desc |
TRY-MGM-cache-pages TRY-MR-neo-persistence |
创建初始项目
svn import –m “Wibble initial import” svn://olio/wibble/trunk
创建tags和branches目录
svn mkdir –m “Create tags directory” svn://olio/wibble/tags
svn mkdir –m “Create branches directory” svn://olio/wibble/branches