您的位置:首页 > 编程语言 > Java开发

Myeclipse中SVN的使用

2015-10-11 22:44 309 查看
在我的博客“记惠普javaweb实训周之版本控制系统的实践”中已提到安装配置的使用

本文主要分享SVN的使用技巧

工具说明:VisualSVN Server  +  TortoiseSVN  +  Myeclipse  +  浏览器

首先,我们使用VisualSVN Server建个版本库

VDFS是基于FSFS的,公司的官网有介绍:VisualSVN Server

It's worth to notice that VDFS data store is built on top of the standard FSFS backend. The existing FSFS-based repositories can be instantly converted into a VDFS repository. Moreover, there is no data lock-in
and you can instantly convert a VDFS repository back into a regular FSFS-based repository.

简单来说这个是VisualSVN基于FSFS文件系统格式扩展的,根据wikipedia的说法:VisualSVN Server

VisualSVN Distributed File System (VDFS). Multisite Repository Replication is based on VDFS technology. VDFS enables automatic, transparent, bidirectional replication of Subversion repositories
between multiple locations (each slave repository is writeable). VDFS follows the classic master / slave replication architecture and uses Microsoft
RPC as its transport layer.

也就是说,分布式版本管理DVCS兴起之后,大家发现多个仓库的好处了,开始给SVN增加这个功能。

至于FSFS本身是SVN在2004年开始替换Berkeley DB的,是基于文件系统概念设计的,而不是基于数据库的概念,根据 http://svnbook.red-bean.com/en/1.1/ch05.html 的说法,采用目录树的结构去做transaction,可以在目录外创建完一次提交,然后把完成的提交一次性移动进版本历史。另外,根据他们的数据结构,对Berkeley
DB的append操作是O(N^2)的,而FSFS是O(N)的。当然更完整的介绍可以看:http://svn.apache.org/repos/asf/subversion/tags/1.8.4/notes/fsfs

如果你不是太在乎私有格式,也需要多仓库同步,可以用VDFS,官方文档说了VDFS默认的service是没有启动的,所以对你日常应该没有影响。如果不喜欢私有格式,就用FSFS就好。
(上段文字引自知乎 http://www.zhihu.com/question/26085317)
给仓库起个名字

接下来就是选择结构啦

我们选择了第二种,是一种标准的目录结构,第一种是空目录

这里有第二种目录结构的用法介绍http://www.cnblogs.com/dafozhang/archive/2012/06/28/2567769.html

接下来是访问权限的设置

我这里选择第一种,稍后再为这个仓库设置用户

好了,Create已经等你很久了,点击TA!

我们可以看到,仓库已经建好了

这里说明下访问协议的设置

呐,这里就不需要我多废话啦,建议使用https,端口默认8443。这里的Server name不妨碍使用IP地址的访问

接下来,为仓库设置用户账户和密码

test用户具有读写权限

接下来我们从Myeclipse中打开版本库(我们此处按资源库已设置好连接)

选择一个项目,将他共享到版本库

右键项目--》team-》share project

完成后我们就会发现,项目的图标变成这样了

好,我们用TortoiseSVN打开仓库看一下

TortoiseSVN已经集成在右键菜单中

输入正确的用户名和密码,我们就看到仓库中的文件了

相信你注意到左侧src有个?demo的图标上也有*,同时右侧仅有demo目录,并无src目录

接下来,我们从myeclipse中把此文件夹提交

提交后

可见修改(如果是第一次部署,可以右键项目提交,这样demo上的*标示也就消失了)

接下来我们新建一个文件,分享一下其他的操作技巧

左侧目录也是动态显示是否有待提交文件

我们可以很方便的看到修改号,修改时间和修改的用户,此时,该文件在其他团队成员那里就可以更新到他们本地了

刚才我们是初始提交了新的文件到版本库,那么,若是我们修改了已有文件再去提交呢?

当然也可以,不过这里需要注意的就是,若有多个用户同时修改了这个文件,那么提交时候就会产生冲突

我用客户端修改了该文件(相当于其他用户修改了文件),那么Myeclipse的提交就会报错,那么该怎么解决呢?

我们执行文件右键-》team-》与资源库同步(即先更新再提交)

如果没有提交冲突,同步会显示资源库与本地差异的文件,可选择将其更新到本地或者查看与本地文件的差异再做修改

这里可以比较本地与资源库中文件的差异

通过编辑冲突或者还原操作,可以解决冲突

那么为了防止冲突的出现,我们是否有其他解决办法呢,答案是有的

可以从客户端看到,该文件被锁定了

我们尝试修改它

可以看到,修改操作是不能完成的,说明有其他人在修改这个文件,并且进行了锁定,只有解锁后其他人才能再修改它

这也就防止了冲突的产生

我们在Myeclipse中将其解锁后,再提交修改操作,修改成功

该修改成功提交到资源库了

所以,当你要对某文件进行修改时,先锁定它,修改完提交后再解锁

不过,这不能解决多人需同时修改同一个文件的问题,通常做法是,提交前先更新,如果有差异,进行比较和编辑冲突,然后再进行提交

我们编辑冲突,修改好后再提交修改后的版本

右键team-》显示资源历史记录

可以看到提交过的历史版本,并可以双击打开,查看历史编辑

另外,我们还可以使用浏览器来查看资源库中的文件

查看目录及文件以及修改编号和修改者等,点击标记处可以查看历史详细

A——增加;M——修改;D——删除;“+”“-”代表内容的修改

这是文件的当前版本的查看

使用也是很方便,不过不提供在线修改和提交,只提供了文件的checkout功能

到这里呢,补充下新成员如何下载已有资源版本

我将myeclipse中现有项目删除(并从硬盘删除)

然后,连接好资源库后,找到相应目录,右键检出

1、Fully recursive——全递归:检出完整的目录树,包含所有的文件或子目录。

2、Immediate children,including folders——直接子节点,包含文件夹:检出目录,包含其中的文件或子目录,但是不递归展开子目录。

3、Only file chlidren——仅文件子节点:检出指定目录,包含所有文件,但是不检出任何子目录。

4、Only this item——仅此项:只检出目录。不包含其中的文件或子目录。

接下来,我们就可以顺利地又见到我们的项目啦

注:以上是在本机演示,若在局域网中,请务必注意防火墙或其他安全软件的设置,保证资源库的正常连接

且团队开发时需注意账户的建立和权限管理

团队开发前务必统一编码格式,务必统一编码格式,务必统一编码格式

附:推荐定义成熟的提交规范,此处引用部分提交规范

完整健全的注释规则(例如所修改代码的影响或者维护信息)

提交要求

1、提交的原始代码代码

2、新特性的开发提交的代码

3、问题修改的代码提交(bug)

4、发布版本注明

5、禁止代码的随意更改

6、在产品代码编写周期内的提交频率

SVN提交流程

针对开发代码提交以及问题修改的代码提交要遵循如下的流程:

1、先在工作目录进行开发、调试、修改

2、同步编译目录的代码到SVN服务器上的最新版本

3、将本次要提交的修改内容从工作目录合入到编译目录

4、编译目标代码并进行验证测试

5、将改动内容合入到SVN

6、(可选)从SVN重新下载包含本次改动的代码,进行编译、验证

其他要求:

1、工作目录也要及时更新,不要和SVN服务器有太大的差别

2、提交代码时,如果出现冲突,必须仔细分析解决,不可以强行提交
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息