Jiang's C++ Space

创作,也是一种学习的过程。

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
在Google输入VSS和SVN,看看网上对这两者的评价,估计九成以上的人都认为SVN优于VSS,一来SVN免费,二来功能更为强大,而且是跨平台的,不局限于Microsoft的环境,还不说它是开源的。我也是这么认为的,对于版本管理,Visual SVN + Tortoise SVN,太完美了,用起来相当简单,足见开源项目也有精品。

但VSS用的人还是很多,比如我现在的公司(最近换的工作),虽然我是一个人在战斗,但他们还是有要求说要把代码放到VSS中去,于是花了点时间摆弄了一下。

首先是安装及版本问题,一开始我以为VS2008会自带VSS2008,但其实没有,我所安装的VS2008为Team Suite版,都没有发现VSS2008,所以只好求其次,找到了VSS2005,安装包400多M,我不知道为什么这么大,但安装好之后我在安装目录下只发现了不到20M的文件,安装后版本号为8.0.50727.42,这样还不行,据说这样跟VS2008存在兼容性问题,毕竟VSS2005的生日早于VS2008,没考虑到VS2008的需要也是正常的,所以得一个补丁,补丁不大,大约3M,到网上搜索一下应该很好找到,补丁打上去之后版本就变成了8.0.50727.1551,这就是我们所要的了。安装过程还是挺快的,也没有太多的option,一路next下去即可。值得说一下的是VSS2005需要.Net Framework 2.0,不过我想现在大多数机器都有这个玩意儿了吧,应该不需要另外再装了。

安装完之后在开始菜单里有两个图标,一个是Microsoft Visual SourceSafe(简称VSS),一个是Microsoft Visual SourceSafe Administration(简称VSS Admin),名如其实,一个是“使用”,一个是“管理”。使用VSS Admin可以创建“数据库”,相当于SVN的容器,把工程相关文件放入“数据库”中,即实现了代码管理。

运行VSS Admin,点<Cancel>取消登录,然后<File>-<New Database...>即运行了“数据库”创建向导,指定一个存放这个“数据库”的位置,即可。向导还让你选择模式,模式有两种,一种是经典的Lock-Modify-Unlock模式,令一种是类似SVN的Copy-Modify-Merge模式,前一种不能多人同时修改,后一种不能检出最新版本。通常用VSS的人都会选择前一种模式。

“数据库”创建完后,观察一下指定的那么目录,目录下有个文件叫“srcsafe.ini”,可以认为这个文件就是VSS连接的依据,VSS必须能访问到这个文件,才能访问相关的“数据库”。我尝试修改“srcsafe.ini”的参数并把它放到别的地方去,但没有成功,我也不知道是不是一定要放在“数据库”的目录下。“数据库”目录下有三个子目录,一个是data,不用说,这就是放代码的地方了,一个temp,临时目录,一个users,关于用户信息。

关于安全策略,按照微软的说法,VSS的安全策略其实是依赖于Windows系统的,按照Windows的规则,一个用户如果不能访问“数据库”目录,那么这个用户用VSS也会遇到问题,而VSS的数据库目录往往需要同时让很多人访问,所以它的共享设置很重要,但又必须考虑到安全问题,最好设置为只让相关人士访问,或者建立一个用户组,这样方便管理。当然这都是IT做的事情了,且不去深究它。

如果需要修改“数据库”的配置,那重新打开VSS Admin,用Admin用户登录,Admin默认密码为空,你可以在登录完之后修改一下,你还可以创建更多的用户,比如创建一个用户叫“developer1”,并设置其密码为“abc123”。

“数据库”创建好后,打开VSS,连接它,在Open SourceSafe Database对话框中点“Add”,打开连接向导,选择“Connect to an existing database”,然后Browse,选择前面提到的那个“srcsafe.ini”文件,指定一个名字,这样就可以了。回到Open对话框中,点“Open”。这时候输入用户名密码,用前面创建的“developer1”登录,输入密码“abc123”即可。

好了,现在可以执行一系列的操作了,自己好好玩玩。但我总觉得不是很方便,比如添加文件,用起来就比较繁琐,不像Tortoise SVN那样,指定一个目录,所有文件都列了出来,让我选择哪个需要入库,哪个不要,并且很好的保留了目录结构,而这里不行,试试看就知道了,非常不爽……

那VSS比SVN到底有什么优势呢?我想唯一的优势是跟Visual Studio的整合,另外就是习惯问题,不少人都习惯于使用Microsoft的东西了……

比同直接使用VSS的客户端入库,也许用VS2008更好点,如何让一个工程入库?看图:

然后blah blah blah,不必多说了。

搞定后发觉工程的文件的图标边上多了个小锁头,代表该文件正在被锁着,那如果要编辑这个文件,怎么办呢?很简单,通常跟以前没什么差别,打开,然后编辑,你会发现小锁头变成了一个小红钩,说明此文件已经被检出编辑了,如果其他人这个时候也想动这个文件,那就会得到一个出错提示。当你编辑完后,右击这个文件,Check In即可,小红钩重新变回了小锁头。

同样是在VS2008的Solution Explorer中,你可以查看某个文件的History,还有执行些别的操作等,这里就不多说了。

最后我想说,我没发现VSS有像SVN那样的制作Tag的功能,这个功能是十分十分有用的,比如我现在如果需要release一版程序,需要在release note中注明这版程序是用哪个tag的代码生成的,相当于立一个“里程碑”,我想你也能想象出这个功能的必要性,而VSS居然没有,只有针对单个文件的history list,还不能像Tortoise SVN那样用形象的Graph来表征版本变更历程,Damn it。
posted on 2010-06-02 16:25 Jiang Guogang 阅读(846) 评论(1)  编辑 收藏 引用 所属分类: Knowledge

评论

# re: VSS使用手记 2010-06-02 16:56 matthew
可惜,都没有用过,公司只用cvs  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理