SVN软件安装以及使用说明

来源:互联网 发布:淘宝微淘怎么玩 编辑:程序博客网 时间:2024/05/22 03:18
1、工具的安装


   a.subversion    要做svn服务器的必须装
   b.Tortoisesvn   仅仅是访问svn服务器的客户端工具,非必须安装
   c.subclipse     也是客户端工具,只是它是配合eclipse使用的插件,按需要安装


   建议服务器三个都安装,客户端仅安装后两个,安装方法无特殊说明,下一步下一步即可


   以下操作中需要打开命令行窗口是指(win+r,输入cmd)






2、服务器仓库创建部署


   服务器上安装好subversion后,首先建立仓库(repository)。


   假设仓库创建的位置为:E:\svn\repository目录下,那么首先需要在硬盘上创建该目录,即文件夹。


   有两种方法:
   1) 使用命令行方式创建完后,在命令行输入:svnadmin create E:\svn\repository
   2) 使用Tortoisesvn图形化客户端,在目录E:\svn\repository下"右键->TortoiseSVN->Create Repository here..."


   经过以上步骤之后会发现,这时再到E:\svn\repository下去看看,可以看到SVN已经再该目录下生成了很多文件夹和文件。
   这些文件就是SVN进行版本管理时所需要的,日常的开发中是不会直接接触到这些文件的。






3、将需要纳入版本管理的项目(或者需要协作开发)import到服务器端


   在将需要的项目import到服务器之前首先需要启动服务器,服务器启动后才会进行网络侦听,检查到客户端的相关命令请求。
   这就比如你想在其他地方访问网站,就需要先把网站部署到tomcat或iis这样的服务器之上,服务器还需要启动起来
   如tomcat、iis一样默认会监听8080、80的端口,subversion监听3690端口,默认防火墙或者360会禁止此端口,记得允许
   xp防火墙添加3690端口的方法是:控制面板->防火墙->添加例外->端口写3690


   接着是启动服务器的方法,有以下两种:
   1) 在命令行中输入如下命令:svnserve -d -r E:\svn\repository,该命令含义让SVN将此目录作为仓库,并侦听客户端的请求。
      其中-d的作用为后台模式,而-r的作用是为制定服务器的仓库路径。当服务器启动后,请不要关闭命令行窗口,否则会吧svnserve的服务停下来的。


   2)新建一个txt文件,并将后缀名修改成bat,比如xx.bat,右键编辑并将以下的命令复制进去,共有三行,开头无空格
      sc create SvnServe binpath="D:\Program Files\Subversion\bin\svnserve.exe --service -r E:\svn\repository" depend=Tcpip start=auto
      sc start SvnServe
      pause
      点击保存后运行xx.bat即可,以上运行后表示在控制面板->管理工具->服务中创建了一个名字为"SvnServe"的服务(名字可修改),自动启动
      注意D:\Program Files\Subversion\bin\svnserve.exe为Subversion安装的路径,E:\svn\repository为服务器的仓库,按需修改
      (删除以上服务的方法是打开命令行,输入sc delete SvnServe回车)


   建议用第二种方法,自动作为服务运行,无需一直打开一个命令行窗口


   启动好服务器后可以确认下是否已经成功监听了3690端口,打开命令行窗口,输入netstat -an,看下是否有3690,有表示成功监听


   接下来就可以将项目import到服务端的仓库(repository)了,可用以下三种方式实现:
   1)eclipse安装了subclipse插件的,可直接把项目share到svn的仓库中,这是我们最常用的方式
      在建好的项目上右键,选择team->share project->svn->creat new repository location
      接着输入仓库的url地址svn://localhost(其他电脑则输入ip,这里就表示本机),接着下一步下一步finish就可以
      finish后会看到项目上有*号这样的图标,表示有改动未提交,提交即可上传到服务器的仓库(repository)中。
      (图标符号说明,?表示本地新增未提交,*表示本地改动未提交,黄色柱子表示正常最新无改动,红色警告有错误,其他待补充)


   以上方法适合开发时使用eclipse简单操作就实现,后面两种适合本地文件夹共享协作进行版本控制,有需要的看看


   2)安装了Tortoisesvn使用图形化import,假设需要创建的项目在E:\test\client,放一个文件test.txt测试
      在E:\test\client的client目录上右键->TortoiseSVN->import,url地址中输入svn://localhost,点ok即可
      
      Tortoisesvn的其他操作说明,右键->TortoiseSVN->Repo-broswer,输入svn://localhost可以查看仓库中有什么内容
      右键->TortoiseSVN->Check out输入svn://localhost和本地路径,可以将服务器的文件内容签出到本地路径这
      在checkout签出的项目本地文件夹上(一般打绿色的勾的)右键可以有update更新与服务器同步的操作和commit提交修改到服务器仓库的操作
      其他的自己研究研究,比较多(绿色勾正常,红色勾本地有修改,灰色勾锁定,黄色表示有冲突,具体见svn手册)


   3)此方法三是指电脑上安装了subversion的使用命令行的方式来实现,依然假设创建的项目在E:\test\client,放一个文件test.txt测试
      以下内容复制于http://blog.csdn.net/zxdu721/archive/2009/09/04/4520847.aspx,讲得比较详细,也到此网站看
      打开命令行,首先将命令行的当前目录转到E:\test目录下,输入cd E:\test,接着输入E:即可
      当前目录设置为E:\test后输入svn import svn://localhost(其他电脑则输入ip),即这样E:\test>svn import svn://localhost
      这个命令的作用就是当前目录以及其所有子目录和文件imort到服务器上去,纳入SVN的管辖范围中。
      执行完毕后我们发现该命令失败了
      ----------------------------------------------------
          E:\test> svn import://localhost
            svn:无法使用外部编辑器获得日志信息;考虑设置环境变量$SVN_EDITOR,或者使用--message(-m)或--file(-F)选项
            svn:没有设置SVN_EDITOR,VISUAL或EDITOR环境变量,运行时的设定中也没有“editor-cmd”选项
          E:\test>
      ----------------------------------------------------
      通过命令行的说明我们看到,该命令要求我们指定好一个记录日志的文件或者在系统环境变量中增加一个SVN_EDITOR的变量。
      二者选一就可以了,那么我们可以增加一个SVN_EDITOR的环境变量。该变量的值我们就取为系统自带的记事本就可以了。
      方法同前面说的path环境变量一样。在系统的环境变量中新建SVN_EDITOR,将它的值设为notepad即可
      SVN_EDITOR=notepad
      注意,设置完环境变量后,要关闭原来的命令窗口,重新cmd开一个命令行窗口,从而使得刚设的环境变量生效。
      同样的cd到E:\test,以此为当前目录,然后输入命令:svn import svn://localhost
      当我们输入命令回车后,出现一个记事本的信息窗口,这证明了我们的环境变量的增加是正确的,关闭该记事本窗口。命令行如下:
      ----------------------------------------------------
          E:\test> svn import svn://localhost
           日志信息未修改,或未指定
           a)终止,c)继续,e)编辑
      ----------------------------------------------------
      我们选择c,输入c继续
      ----------------------------------------------------
          E:\test> svn import svn://localhost
           日志信息未修改,或未指定
           a)终止,c)继续,e)编辑
           c
           svn:认证失败
          E:\test>
      ----------------------------------------------------
      出现认证失败的信息,说明我们已经连接到SVN的服务器,不过服务器认为我们的客户端没有相应的权限,所以这时我们改变一下SVN的认证权限。
      回到SVN仓库,即E:\svn\repository目录,我们发现这里面有一个conf目录,进入该文件夹,用文本编辑器打开svnserve.conf文件
      我们看到这里是关于访问SVN仓库的一些认证设定,找到第12行:anon-access=read,这表示匿名用户的访问权限是读。
      并且大家注意到,该行的前面有个“#”。这表示改行是被注释掉的,这与Java的properties文件的注释方式是一致的。
      这也就说明了此时SVN服务器是不允许匿名登陆的,那么我们现在可以去掉“#”,不过现在客户端也只是匿名读
      我们的import操作是写操作,所以我们在该行下面增加一行anon-access=write,如下面所示:
      ----------------------------------------------------
          ........
           [general]
           ###These options control access to the repository for unauthenticated
           ###and authenticated users. Valid values are "write","read",
           ###and "none". The sample settings below are the defaults.
           anon-access = read
           anon-access = write
           # auth-access = write
           ........
      ----------------------------------------------------
      保存,关闭该文件。
      这时我们需要停止当前的svnserve的服务,然后重新启动,让它接受我们的改变,转到它的命令窗口,用ctrl+c停止它,再重新启动。
      svnserve -d -r E:\svn\repository
      现在回到之前的命令行窗口,重新执行import命令,操作步骤如前面一样,过程如下
      ----------------------------------------------------
          E:\test> svn import svn://localhost
            日志信息未修改,或未指定
            a)终止,c)继续,e)编辑
            c
            增加 client
            增加 。。。。
            提交后的版本未1。 
          E:\test>
      ----------------------------------------------------
      ok!我们的import操作终于成功了。








4、关于创建帐号


    关闭匿名访问方式,回到SVN仓库,即E:\svn\repository目录,进入conf目录,用文本编辑器打开svnserve.conf文件
    找到第12行:anon-access=read和和14行auth-access=write,最终修改成如下这样
    ----------------------------------------------------
         anon-access = read       ##不允许匿名用户访问
         #anon-access = write     ##通过验证的用户可以读和写
         auth-access = write
    ----------------------------------------------------


    另外将21行的# password-db = passwd前面的#号和空格去掉,为passwd保存了帐号密码的文件


    接着同样用文本编辑器打开conf目录下的passwd文件,用于添加帐号
    ----------------------------------------------------
        [users]
        # harry = harryssecret
        # sally = sallyssecret
        zhouxp = 123456
        miaoss = 123456
    ----------------------------------------------------
    以上表示添加了两个帐号,分别为zhouxp和miaoss,密码均为123456


    这样以后,其他客户端如果要访问svn://svn服务ip地址就需要输入用户名和密码了


    conf目录下还有一个authz文件,这个是为以上添加的帐号设置分组和访问权限的,r表示读权限,w表示写权限
    默认情况下所有用户对所有目录都有读写权限,如需设置不同权限,首先需将svnserve.conf中28行的# authz-db = authz的#号空格去掉
    然后设置举例说明如下:
    ----------------------------------------------------
        [groups]
        source1 = zhouxp
        source2 = miaoss
        [project1:/]
        # 指定对版本库project1根目录的权限
        @source1 = rw
        @source2 = r


        [project2:/trunk]
        # 指定对版本库project2的trunk目录权限
        @source2 = rw
        @source1=r
    ----------------------------------------------------