当我们使用版本控制的时候,我们觉得他是如此便捷好用,但是真正为什么要使用SVN呢?等等很多问题,先在这里总结基本的知识点:
1.什么是SVN ?
SVN(Visual SVN Server) 是集中式的版本控制,svn服务器有2种运行方式:独立服务器和借助apache运行。对于数据存储有两种方式:BDB(一种事务安全型表类型)和FSFS(一种不需要数据库的存储系统)。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。(DBD和FSFS是什么样的结构?)
有一个简单但不十分精确的比喻:SVN = 版本控制 + 备份服务器;我么可以把SVN当成自己的备份服务器,它不但充当我们每次上传到服务器上的档案内容的保管员,也是每次代码变更的监控者,并且自动的赋予每次的变更的一个版本。用一个图我们可以清楚它的原理如下图:
2.为什么要使用SVN?
- 备份工作档案十分重要,我们永远不知道计算机的硬盘何时会坏掉。
- 版本控管非常重要。你无法保证手头上最新版本永远都是对的。
- 团队之间的数据同步也是非常重要的。很多时候,除了你个人外,还有其它的团队成员也需要你的数据。
3.建立SVN Repository
基本操作:
2 )提交( commit )在工作拷贝中作出修改并提交:在 工作拷贝中随便打开一个文件,作出修改,然后 “ 右键 -> SVN Commit... ” 。这样我们就把修改提交到了版本库,版本库根据情况存储我们提交的数据。
4)更新版本(Update to Latest Revision )
4.SVN权限配置
2)Subversion 提供了面向目录的帐户权限管理功能,通过它,我们就可以很精确地实现项目目录的访问控制。
- filename.mine 存储者本地的修改过的文件。
- filename.rOLDREV 存储者上次update的基础版本文件 。
- filename.rNEWREV 存储着客户端刚从服务器上接收来的版本。
- 手动合并代码,解决冲突。
- 选择一个冲突出现时产生的临时文件来覆盖当前文件。
- 运行svn resolved filename 命令来放弃当前文件的本地的所有修改。
- 在eclipse中安装Subclipse 的插件并做好配置。
- 在eclipse中新建工程,建一个包以及类,并完成相关代码的编写和执行。
- 新建一个svn资源库位置,并将所建的工程import 到svn资源库位置。过程如下:
2. 回到JAVAEE的视图,将项目import到服务器服务器上:鼠标右键点击项目->Team->Share Project ,选择svn,使用刚才指定的svn仓库的url。在svn视图中,项目已经导入到仓库中。
- 在修改文件时,要进行各种SVN操作,比如修改后commit,提交不成功时需要update,这时成功提交并保持与版本库一致;当我们要重新想恢复提交前的版本时,需要进行比较并选择loacl history。不仅仅是这么简单的操作,还有一些列方便管理代码的操作。有待在继续熟练使用
C:\Documents and Settings\Administrator>svn ?
用法: svn <subcommand> [options] [args] Subversion 命令行客户端,版本 1.6.6。
使用“svn help <subcommand>” 显示子命令的帮助信息。
使用“svn --version”查看程序的版本号和版本库访问模块,或者 使用“svn --version --quiet”只查看程序的版本号。
大多数的子命令可接受文件或目录参数,对目录进行递归处理。 如果没有指定参数,默认对当前目录(包含当前目录)递归处理。
可用的子命令:
add:把文件和目录纳入版本控制,通过调度加到版本库。它们会在下一次提交时加入。
blame (praise, annotate, ann):输出指定文件或URL的追溯内容,包含版本和作者信息。
cat:输出指定文件或URL的内容。
changelist (cl):耦合(或解耦)文件与修改列表 CLNAME。
checkout (co):从版本库签出工作副本。
cleanup: 递归清理工作副本,删除锁,继续未完成操作,等等。
commit (ci): 把工作副本的修改提交到版本库。
copy (cp): 在工作副本或版本库中复制数据,保留历史。
delete (del, remove, rm): 从版本库中删除文件和目录。
diff (di): 显示两个版本或路径的差异。
export: 产生一个无版本控制的目录树副本。
help (?, h): 描述本程序或其子命令的用法。
import: 将未纳入版本控制的文件或目录树提交到版本库。
info: 显示本地或远程条目的信息。
list (ls): 列出版本库中的目录内容。
lock: 锁定版本库中的路径,使得其他用户不能向其提交修改。
log: 显示一组版本与/或文件的提交日志信息。
merge: 将两个源差异应用至工作副本。
mergeinfo: 显示合并的相关信息。
mkdir: 创建纳入版本控制的新目录。
move (mv, rename, ren): 在工作副本或版本库中移动或改名文件或目录。
propdel (pdel, pd): 删除目录、文件或版本的属性。
propedit (pedit, pe): 使用外部编辑器编辑属性。
propget (pget, pg): 显示目录、文件或版本的属性取值。
proplist (plist, pl): 列出目录、文件或版本的所有属性。
propset (pset, ps): 设定目录、文件或版本的属性。
resolve: 解决工作副本中目录或文件的冲突。
resolved: 删除工作副本中目录或文件的“冲突”状态。
revert: 将工作副本文件恢复到原始版本(恢复大部份的本地修改)。
status (stat, st): 显示工作副本中目录与文件的状态。
switch (sw): 更新工作副本至不同的 URL。
unlock: 解除工作副本或URL的锁定。
update (up): 更新版本。
回到
JAVAEE
视图
,
将项目
import
到服务器服务器上
:
鼠标右键点击项目
->Team->Share Project
选择
SVN
使用刚才定位的仓库
在
SVN
视图里可以看到
,
项目已经导入
先写到这里,下一篇将写一些基本操作。