mysqlcluster

博客园 首页 新随笔 联系 订阅 管理

Subversion是广泛使用的版本控制工具。它是CVS的进化,越来越多的开源社区在使用svn。

TortoiseSVN是windows shell程序,是Subversion的客户端,它给予GPL协议,完全免费使用。

svn支持“拷贝-修改-合并”模型,对非二进制的文件如源程序可采用这种模式,这种模式可加快team的效率。

svn也支持“锁定-修改-解锁”模型,你可以选择是否锁定文件,以防止别人修改,在不可合并的文件上加锁通常是有效的,如二进制文件。

svn commit 操作可以作为一个原子事务操作发布任意数量文件和目录的修改。在你的工作副本中,你可以改变文件内容,创建、删除、改名和复制文件和目录,然后作为一个整体提交。

在版本库中,每次提交被当作一次原子事务操作: 要么所有的改变发生,要么都不发生,Subversion 努力保持原子性以应对程序错误、系统错误、网络问题和其他用户行为。

当你提交一个过期的版本,或者删除一个过期的版本,svn服务器将拒绝执行,防止你覆盖你未知的属性。

svn推荐的目录结构:

/trunk
/branches
/tags

版本控制系统非常重要的一个特性就是它的信息从不丢失,即使当你删除了文件或目录,它也许从HEAD版本消失了 ,但这个对象依然存在于历史的早期版本.

工作副本怎样跟踪版本库

对于工作副本的每一个文件,Subversion 在管理目录 .svn/ 记录两项关键的信息:

  • 工作文件的基准版本(叫做文件的工作版本)和

  • 一个本地副本最后更新的时间戳。

给定这些信息,通过与版本库通讯,Subversion 可以告诉我们工作文件是处与如下四种状态的那一种:

未修改且是当前的

文件在工作目录里没有修改,在工作版本之后没有修改提交到版本库。svn commit 操作不做任何事情,svn update 不做任何事情。

本地已修改且是当前的

工作副本已经修改,从基准版本之后没有修改提交到版本库。本地修改没有提交,因此 commit 会成功的提交,update 不做任何事情。

本地未修改且过时

这个文件在工作副本没有修改,但在版本库中已经修改了。这个文件应当更新到最新公共版本。commit 不做任何事情,update 将会更新工作副本到最新的版本。

本地已修改且过时

The file has been changed both in the working directory, and in the repository. A commit of the file will fail with an out-of-date error. The file should be updated first; an update command will attempt to merge the public changes with the local changes. If Subversion can't complete the merge in a plausible way automatically, it leaves it to the user to resolve the conflict

传统配置
SVN的安装并不复杂,如果在Windows下,有专门的Windows安装包可以下载,不过SVN的配置就不那么简单了,所有的配置都要通过SVN的配置文件手工完成,比如用户密码权限等。
切换到Http
Svn可以通过Svn自己的服务程序或者Apache来访问,缺省安装的Svn是使用自己的服务程序svnserve来进行访问的。下表对比了两种访问方式的差别:

特性 Apache svnserve
认证 HTTP basic auth,LDAP,NTLM 服务器上的密码设置
权限 可以对每个path设置读写权限 可以对每个path设置读写权限
加密 可以通过https 通过可选的SASL
日志 完整的Apache log 无log
Web访问 支持WebDAV 不支持
访问速度 稍慢
配置 复杂 简单


可以看出使用Apache来访问Svn虽然慢一些,但提供了更好的访问安全性和功能。因此很多团队使用Apache来访问Svn。不过这需要额外安装Apache,并配置Apache和Svn的集成,这需要不小的配置工作量。并且在将来进行用户及权限调整时都需要手工编辑配置文件。

在eclipse3.2.1上安装subclipse时,提示Subversion Revision Graph(1.0.7)需要 插件“org.eclipse.draw2d(3.2.0)”或更高版本,可下载GEF解决。

未完待续...

posted on 2011-05-02 22:37  mysqlcluster  阅读(1892)  评论(1编辑  收藏  举报