SVN
1、概述
1.1、Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统;
现在发展成为 Apache 软件基金会的一个项目;
采用了 分支 管理系统;
1.2、SVN的概念
repository
代码仓库
checkout
从远程仓库获取代码
commit
将本地代码提交到远程仓库
update
从远程仓库获取最新的代码
1.3、SVN是以 行 管理源代码的;
如果2个程序员修改 同一个文件,只要不是同一行,SVN会自动进行合并;
如果修改了同一行,则会提示冲突,需要手动解决;
2、SVN的生命周期
2.1、创建版本库
版本库 相当于 一个集中的空间,用于 存放开发者所有的工作成果;
版本库 不仅 能存放文件,还包括了 每次修改的历史,即每个文件的变动历史;
create 创建一个新的版本库;
2.2、检出
svn checkout 从版本库 创建 一个工作副本;
工作副本 是 开发者私人的工作空间,可以进行内容的修改,然后提交到版本库中;
2.3、更新
svn update 更新版本库的,这个操作 将 工作副本 与 版本库 进行同步;
2.4、执行变更
从版本库 中检出后,自己工作副本中的文件可以进行变更:
编辑文件:
添加文件|目录:
添加后的文件|目录 不会立刻成为 版本库的一部分,而是被添加到 待变更列表 中,直到执行 commit 后 才会成为版本库的一部分;
删除文件|目录:
删除后的文件|目录 立刻 从 工作副本中删除,但该文件|目录只是被添加到 待变更列表 中,直到执行了 commit 操作后 才会从版本库中真正删除;
rename 更新文件|目录 的名字;
2.5、复查变化
当你的工作副本 与 版本库同步后,你对工作副本中的内容进行变更,你的工作副本会比版本库要新,commit操作之前需要复查你的修改;
svn status 展示 工作副本内 变更的列表;
2.6、修复错误
当你的工作副本中的内容变更后,不想再要修改后的,想退出之前的;
svn revert 销毁 待变更列表 并 将 工作副本 恢复 到原始状态;
2.7、解决冲突
commit时,工作副本与版本库会发生冲突;
svn merge 自动处理 可以安全合并的东西;
其他的被当做冲突;
2.8、提交更改
svn commit 将更改的工作副本内容 同步到版本库;
原子操作;
3、svn服务器
3.1、创建版本库目录
mkdir /opt/svn
3.2、创建版本库
svnadmin create /opt/svn/runoob
3.3、启动svn服务器
svnserve -d -r 目录 --listen-port 端口号
-r: 配置方式决定了版本库访问方式。
--listen-port: 指定SVN监听端口,不加此参数,SVN默认监听3690
4、SVN分支
4.1、默认会有一个trunk版;
分支 其实是trunk的copy版;
4.2、本地工作副本 创建分支
svn copy trunk/ branches/我的分支名称
4.3、提交新增的分支 到版本库
svn commit -m "添加新分支" -m:添加注释
4.4、进入新分支
cd branches/我的分支名称/
4.5、查看我的分支下的内容
svn ls
4.6、将我的分支合并到trunk
svn merge ../branches/我的分支名称
5、常用命令
svn checkout ***
从版本库检出
svn diff
查看本地工作副本 与 版本库 不同的内容
-r 比较工作副本与版本库中指定文件 eg:svn diff -r 3 rule.txt 比较版本号为3的rule.txt文件
svn update
从版本库更新本地工作副本内容
svn status
查看本地工作副本的 变更列表
svn revert
放弃对文件的修改
svn log
展示svn的版本作者、日期、路径等;
svn list
不检出文件的情况下查看远程版本库中的文件; eg:svn list 版本库地址
svn add 文件名
将某个文件加入版本控制;
6、SVN添加readme.txt文件
工作副本下新建readme.txt文件--->svn add readme.txt (将文件加到版本控制中,等待提交到版本库)--->svn commit -m "svn readme"(-m 添加注释信息)