发布新日志

  • 将CVS Repository转换成Subversion Repository

    2007-08-07 12:52:49


    CVS Repository转换成Subversion Repository


    原创手稿

      今天给大家带来一些实践技巧,也就是我在工作中遇到的实际经验总结,也做个备望笔录:
    以前公司用CVS做版本控制管理,现在,公司全部改用功能强大、方便快捷的SVN做版本控制管理。公司用CVS受控管理的项目,现在需要全部转成SVN控制管理。在网上搜索了N多资料,关于CVS库转换成SVN库的说明,有些说明也不够详细,不能入手操作,对于使用 CVS & SVN 陌生的同仁来说,就会很困难无法解决。本人在操作过程中,也遇到一些问题,总结之后,共享上来与各位交流学习,希望对各位有帮助。

      费话就不多吹了, 现在就实践动手跟我一起实践吧!

    首先工具下载与安装:

    我使用的是Refincvs转换工具,Refinecvs提供的功能也比较多,具体可以看它的帮助,但对于中文文件名的问题,还是不能找到完美的解决办法,哪位知道的可以告诉一声哦,我们一起交流一下!


    下载refincvs最新版本:http://lev.serebryakov.spb.ru/refinecvs/ 
    下载perl语言:http://downloads.activestate.com ... in32-x86-257965.msi

    refinecvs是用perl语言写的,各个版本需要的perl版本不一样。安装完perl,解压refinecvs包就可使用了。

    1、生成转换文件
    打开windows的Dos窗口,切换到refinecvs的解压目录,假如现在要把仓库 D:\CVSRepository\里的项目 Project1 转换成SVN仓库所需要的文件,需要运行如下这条命令,生成供SVN可导入的文件。如P1_SVN。

    refinecvs.pl  -fcp gbk -lcp gbk -iv -v admin D:\CVSRepository\Project1 P1_SVN.

    命令参数说明:

    -fcp:表示文件名用GBK编码,如果文件名含有中文字符
    -lcp:表示文件修改日志用GBK编码,如果日志里有中文
    -iv:忽略厂商的tag
    -v:打印处理信息
    admin:标签作者
    D:\CVSRepository\Project1:需要转换的CVS仓库
    P1_SVN :产生转换文件的文件名

    在转换过程中,会等待一些时间,请耐心等待,看到最后提示信息如下:

    --< Pass : done in 0 seconds.
    === All passes finished in 0 seconds.

    说明你的CVS仓库转换成功,即在你的refinecvs文件目录下生成一个新的转换文件名,也就是你要命名的文件,如:P1_SVN。

    如果,提示信息如下所示:

    Last words was:
    Could not parse file EP/Res/src/ep/vo/customer/IAddressVO.java,v
    Please, read about this event to avoid this error: FileError
    +++ Invalid 'symbols' specification: 'rrr:'示信息如下:

    说明你的CVS仓库在转换过程中,遇到了错误终止,1、有可能是你的版本库版本信息不全面,2、有可能是遇到了中文文件名,3、有可能是无法找到这样的文件版本信息。这时你就要手动的做一些烦琐的操作了,你的一个目录一个目录的进行转换,查找出问题所在,直到最后能顺利的转换成功,祝你好运!

    2、转换好的文件导入到SVN仓库
    首先,你得配置好要使用的SVN库,在里面创建需要的项目数据文件,如:Project1。创建完成之后,你就可以使用SVS自带的命令参数进行操作了。
    用svnadmin load命令把上面产生的文件导入到你的SVN仓库中:
    命令格式如下:

    svnadmin load D:\SVNRepository\Project1<P1_SVN

    导入过程也跟转换过程一样,需要耐心等待一些时间。

    导入成功,则会在仓库里建立trunk,tags,branches个默认目录,存放cvs对应的工作区,基线,分支。

     

  • 安装Apache+Subversion+ViewVC备望录

    2007-08-07 12:41:06


    安装Apache+Subversion+ViewVC学习笔记


    安装 Apache+Subversion+ViewVC 学习笔记


    原创手记

        很长一段时间没有动笔了,今天写点关于工作中的备望录,古人语:“好记性不如个烂笔头”,以备将来遗忘。首先简单介绍各软件的背景,在安装使用过程中需要注意的一些细节,给正准备选择安装使用Apache+Subversion+ViewVC 的朋友一些参考帮助,或已使用过的朋友找回一此回顾,有不足之处,请留言或者评论,万分感谢各位朋友光临!

       Apache音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部。相传阿帕奇是一个武士,他英勇善战,且战无不胜,被印第安人奉为勇敢和胜利的代表,因此后人便用他的名字为印第安部落命名,而阿帕奇族在印第安史上也以强悍著称。Apache是世界使用排名第一的Web服务器。它可以运行在几乎所有广泛使用的计算机平台上。

      CVS 在开源软件世界,并行版本系统(CVS)一直是版本控制长久以来的唯一选择。事实证明,这是个正确的选择。CVS本身是自由软件,不加限制的处事风格,对网络化操作的支持(众多身处不同地方的程序员可以共享他们的工作),都非常符合开源世界的协作精神。CVS和它半混乱状态的开发模型已成为开源文化的基石。但是,和其它许多工具一样,CVS开始显露出衰老的迹象。而Subversion,正是以CVS继任者的面目出现的新型版本控制系统。Subversion的设计者们力图通过两方面的努力赢得CVS用户的青睐:保持构建开源软件版本控制系统的方式(以及视觉和感觉上)与CVS尽可能类似,同时尽力弥补CVS许多显著的缺陷。这些努力的结果使得从CVS迁移到Subversion不需要作出重大的变革,Subversion确实是非常强大、非常有用和非常灵活的工具。

       ViewVC 是一个浏览器接口为CVS 和Subversion颠覆版本管理贮藏库。它引起templatized HTML 提出可航行的目录、修正, 和变动日志目录。它可能显示文件的具体版本并且diffs 在那些版本之间。基本上, ViewVC 比平均原文命令线提供大多数报告象您更加俏丽期望在您的版本管理工具外面的功能。


    ******************************************************************************************

    下面开始详细讲解如何安装的整个集成过程:

    在所有的Subversion服务器配置方式中,基于Apache的是最灵活的。虽然配置起来有一点点复杂,但是它提供了其它方式所没有的好处:

    安装过程:
    安装Apache前,你要有一台运行Windows2000、Windows XP + sp2或Windows2003的电脑。警告:请注意,没安装Service Pack 2的Windows XP将导致错误的网络数据从而破坏你的版本库!
       从http://httpd.apache.org/download.cgi最新版本的Apache Web服务器。确保你下载的版本大于2.0.54。2.0.54版本的Apache将不能与Subversion 1.3.xx及以上的版本配合工作。而且,小于2.0.54的Apache也因为在windows上的编译存在一个bug而导致不能与subversion1.2配合使用。

       一旦你已经有了Apache的安装程序,你可以双击它,它将引导你完成整个安装过程。路径为自己的个人喜好选择进行安装D:\Apache Group\Apache2。请确保你输入正确的服务器URL(如果你的服务器没有DNS名称,你可以直接输入IP地址)。我建议你将Apache安装成 for all Users,on Port 80,as a service。注意:如果你已经有一个IIS或者其它的程序使用80端口,安装可能会失败。如果是这样,你可以到程序目录下的Apache Group\Apache2\conf目录中找到文件httpd.conf,将其中的Listen 80改成一个不用的或者你非常喜欢的端口,比如Listen 18080。然后重新运行这个安装程序,这次应该不会再有问题了。

    安装Apache过程中需要设置以下参数:
    Network Domain: 10.83.2.194
    Server name: 10.83.2.194
    Administrator's Emai Address: bill.yin@mic.com.tw

    配置好之后将完成Apache的安装过程,现在你可以在你的浏览器中键入 http://loccalhost,如果呈现了一个已经配置好的网站,那么祝贺你,你的第一步Apache就安装成功了。


    接着安装Subversion:

    安装Subversion从这里下载 http://www.iusesvn.com/bbs/download/svn-win32-1.4.0.zip。运行Subversion安装程序,如果安装程序能够识别你已经安装了Apache,那么你的安装基本上就OK了。如果它不能,那么你要做一些额外的手动配置步骤。
    注:如果你先安装Apache,再安装Subversion,正常情况下下面的工作Subversion安装程序已经帮你完成了,进入Sibversion的安装目录(通常为你的安装路径,我选择D:\Subversion),找到文件httpd/mod_dav_svn.so和mod_authz_svn.so,将它们拷贝到Apache的modules目录(为你选择安装的路径D:\apache group\apache2\modules)。

    从Subversion的安装目录拷贝文件libdb43.dll到Apache的modules目录。
    使用如记事本之类的文本编辑器编辑Apache的配置文件(通常为D:\apache group\apache2\conf\httd.conf),修改以下内容:

    去掉以下行的注释(将开头的#删除):
    #LoadModule dav_fs_module modules/mod_dav_fs.so
    #LoadModule dav_module modules/mod_dav.so


    在LoadModule节的最后添加以下两行,注:如果你先安装Apache,再安装Subversion,正常情况下会自动配置好下面的步骤,如果没有自动配置好,就要手动去添加如下两行设置:


    LoadModule dav_svn_module modules/mod_dav_svn.so
    LoadModule authz_svn_module modules/mod_authz_svn.so

    接着需要建立SVN所需的Repository(保存文档各个版本的数据库)
    在服务器端建立一个空目录,比如“E:\SVNProjects\Project1”。建立Repository的具体方式是:在subversion安装目录下的\bin子目录下有一个svnadmin.exe文件,在DOS窗口下进入该\bin目录,并执行“svnadmin create --fs-type bdb E:\SVNProjects\Project1”。之后你会发现原本是空目录的“E:\SVNProjects\Project1”下多出了几个目录和几个文件。这些目录和文件就是用来存储文档各个版本的数据库。
    ***除了用命令行方式建立Repository外,还可以用TortoiseSVN建立,不过这要求在服务器端也安装TortoiseSVN。建立Repository的具体方式是:在“E:\SVNProjects\Project1”目录上右击鼠标,TortoiseSVN->Create Repository here....,然后弹出一个对话框选择Berkeley Database(BDB),然后点OK按钮。

    需要配置Repository才能正常的运行,建立Repository后,还应该对Repository进行配置,主要的目的是控制访问权限和添加Repository的用户。“E:\SVNProjects\Project1\conf\svnserve.conf”文件就是该Repository的配置文件。它是一个典型的INI文件,虽然该文件并不是以INI作为扩展名。用文本编辑器打开它后,可以看见一些文本,该文件以“#”开始的行都是注释行。

    将“#[general]”行的“#”删掉,“#anon-access = none”“#auth-access = write”“#password-db = passwd”行也删掉“#”,注意,只是删掉“#”字符,不要把整行都删了。“anon-access = none”是指不允许匿名访问Repository,不管是读操作还是写操作。“auth-access = write”表示认证的访问允许写操作,当然读操作就更允许了。“password-db = passwd”表示用户名及用户密码存在一个叫passwd的文件里,这个文件也在“E:\SVNProjects\Project1\conf”目录下,用文本编辑器打开后,将“# [users]”的“#”字符删掉,然后在文件的最后添加一个新行,在该行写上用户名和密码,格式为“xxxx = yyyy”其中“xxxx”表示用户名,“yyyy”表示密码,一行只能设定一个用户,要设定多个用户,请再起新行。

    启动Subversion服务器
    Subversion提供了三种服务器模式,这里介绍其中的一种,它是subversion自带的一种轻量级的服务器,该服务器启动后,在服务器端的3690端口监听客户端的连接请求(这是默认情况下,如果你有其他程序占用了3690端口,可以用“--listen-port”参数指定服务器监听端口)。服务器的具体启动方式是:在subversion安装目录下的\bin子目录下有一个svnserve.exe文件,该文件运行时可带参数,常用的参数有两个一个是“-d”,该参数表明服务器作为一个精灵进程一直运行,直到手动结束该程序。另一个参数就是“-r”,该参数指定服务器进程寻找Repository的根路径。在DOS窗口下进入\bin目录,并执行:
    “svnserve.exe -d -r E:\SVNProjects”。服务器这时就启动了。“-r E:\SVNProjects”参数的作用是:当在客户端用“svn://xxx/project1”(xxx可以是服务器端主机名,也可以是服务器端的ip地址)访问服务器的Repository时,服务器会知道你要访问的Repository路径是“E:\SVNProjects\Project1”。如果当我有两个完全不相干的项目要进行版本控制时,可以再建立一个空目录 “E:\SVNProjects\Project2”,并在其中再建立一个Repository,此时客户端就可以用“svn://xxx/project2”访问“E:\SVNProjects\Project2”下的Repository。至此,恭喜你SVN服务器端配置也就完毕了。

    接下来是三软件安装集成过程:
    现在,你已经安装了Apache和Subversion,但是Apache还不知道如果处理像TortoiseSVN一样的Subversion客户端。要让Apache知道哪个URL将被Subversion使用,你要像下面这样编辑Apache的配置文件(通常在D:\apache group\apache2\conf\httpd.conf):

    在配置文件的最后添加下面这些行:


    <Location /svn>
       DAV svn
       SVNParentPath D:\SVN
       AuthType Basic
       AuthName "Subversion repositories"
       AuthUserFile D:\passwd
       #AuthzSVNAccessFile D:\svnaccessfile
       Require valid-user
    </Location>

    这样配置表示:你所有的版本库将位于D:\SVN目录下,要访问你的版本库可以使用这样的URL:http://MyServer/svn/,访问权限将由passwd文件中的用户名/密码来限制。
    要创建passwd文件,可以打开命令行(DOS窗口),将当前目录切换到apache2目录(通常为D:\apache group\apache2),然后打入以下命令以创建文件:


    bin\htpasswd -c passwd <username>

    此命令执行bin目录下的htpasswd.exe来创建一个密码文件,重启Apache服务。

    将你的浏览器指向http://MyServer/svn/MyNewRepository(MyNewRepository是你之前创建的Subversion版本库)。如果一切正常,你将被提示输入用户名密码,输入正确的用户名密码后你就可以看到版本库中的内容了。

    对你刚刚输入的apache配置作一些简短的说明:

    <Location /svn>
    意味着可以通过像这样的URL(http://MyServer/svn)来访问Subversion版本库
    DAV svn
    告诉Apache哪个模块负责服务像那样的URL--在这里就是Subversion模块
    SVNListParentPath on
    在Subversion 1.4及更高版本中,这个指示器使得Subversion列出由SVNParentPath指定的目录下所有的版本库
    SVNParentPath D:\SVN
    告诉Subversion在目录D:\SVN下寻找版本库
    AuthType Basic
    启用基本的验证,比如用户名/密码对
    AuthName "Subversion repositories"
    当一个验证对话框弹出时,告诉用户这个验证是用来做什么的
    AuthUserFile D:\passwd
    指定D:\passwd用为密码文件用来验证用户的用户名及密码
    AuthzSVNAccessFile D:\svnaccessfile
    指定D:\svnaccessfile来限定各个用户或组在版本库中目录的访问权限
    Require valid-user
    限定用户只有输入正确的用户名及密码后才能访问这个路径

    如果你想获得更多的控制,如限定某个用户可以访问版本库中的哪个目录,可以把下面这行的#去掉:


    #AuthzSVNAccessFile D:\svnaccessfile

    然后用文本编辑器创建一个Subversion授权文件。Apache将确保只有有效的用户可以访问你的/svn位置,然后将用户名传到AuthzSVNAccessFile模块,这样可以依据Subversion授权文件得到更精细的权限控制。注意,路径将被指定为[库:路径]或者简单的[路径]。如果你不明确指定一个库,访问规则将应用到由SVNParentPath指定的目录下所有的版本库中。一个授权文件例子可能像这样:


    [groups]
    admin = john, kate
    devteam1 = john, rachel, sally
    devteam2 = kate, peter, mark
    docs = bob, jane, mike
    training = zak

    # 为所有库指定默认访问规则
    # 所有人可以读,管理员可以写,危险分子没有任何权限
    [/]
    * = r
    @admin = rw
    dangerman =

    # 允许开发人员可以完全访问他们的项目版本库
    [proj1:/]
    @devteam1 = rw
    [proj2:/]
    @devteam2 = rw
    [bigproj:/]
    @devteam1 = rw
    @devteam2 = rw
    trevor = rw

    # 文档编写人员对所有的docs目录有写权限
    [/trunk/doc]
    @docs = rw

    # 培训人员可以完全访问培训版本库
    [TrainingRepos:/]
    @training = rw

    以上介绍的配置为Apache多库方式,即一个location可以同时为多个版本库服务,
    假设你的ip为127.0.0.1,在D:\SVN目录下建了两个版本库,proj1和proj2
    可以分别用下面两个url来访问你的版本库
    http://127.0.0.1/svn/proj1


    接着在安装ViewVC:
    1. 既然装了Subversion,那就学以致用,直接从http://viewvc.tigris.org/svn/viewvc/trunk/检出个最新的版本下来就行,或者到http://www.viewvc.org/nightly/下载个打包的版本;
    2. 如果你有阅读Readme的习惯,那恭喜你,基本上完成基本的安装配置是没有问题啦;当然,你一定要看完整个REQUIREMENTS这一节再决定下载安装Python的什么版本,很不幸,Subervsion现在提供的Python包(Python bindings)只支持Pythong 2.3,所以,如果你一开始下载安装的是Python 2.4,就得重新下载安装了:
        Subversion Python Bindings: http://subversion.tigris.org/ser ... entList?folderID=91
        Python 2.3: http://www.python.org/ftp/python/2.3.5/Python-2.3.5.exe
        pywin32: http://prdownloads.sourceforge.n ... -py2.2.exe?download
    3. 安装好这些后,将Python的安装目录添加到系统路径中;
    4. 在刚才下载的ViewVC目录下执行:python viewvc-install,第一个提示后指定ViewVC的安装目录,第二个提示直接回车就行。

    ViewVC基本配置

        由于ViewVC自带服务程序,因此,最好是先启动ViewVC服务程序,如果ViewVC自己运行正常的话,那就不用考虑ViewVC的配置问题了,想当初俺就没有充分利用这一点,而在IIS和ViewVC之间反复修改参数,都不知道是怎么死的。
    1. ViewVC最简单配置
        打开viewvc.conf,修改下面几行:
        将cvs_roots = cvs: /home/cvsroot注释掉;
        #svn_roots = svn: /home/svnrepos 改成类似于 svn_roots = mytest: C:\svn_repos\mytest,其中mytest是你指定的仓库名,冒号后面跟的是仓库所在的路径;
        default_root = cvs注释掉,这样你至少可以看到仓库列表。
    2. 双击ViewVC\bin下的standalone.py,就可以启动ViewVC自带的Web服务,然后在IE中输入http://localhost:7467/viewvc就应该可以看到仓库列表了,到这一步为止,我没有碰到什么障碍,所以,没什么可以提示的了;
    3. 点击任何一个仓库,就应该可以看到仓库中的目录或文件了,但是,如果你在IE中看到如下的提示:
        ImportError: No module named svn  那说明你没有安装Subversion的Python包,或者将其放到了Subversion的目录下了;
        'module' object has no attribute 'SubversionRepository' 那说明你将Subversion的Python包复制到了viewvc的vclib下,并且覆盖掉了viewvc自己的文件;那么,要怎样安装这个包呢,ok,将其复制到ViewVC或者Python的lib目录下吧,唉,当初整这个也费了我不少周折,惭愧,谁叫我是个Python盲呢:

     

     

数据统计

  • 访问量: 2618
  • 日志数: 4
  • 建立时间: 2007-04-12
  • 更新时间: 2007-08-07

RSS订阅

Open Toolbar