zoukankan      html  css  js  c++  java
  • Windows SVN服务器及客户端

    服务器及工程上传参考

    http://hi.baidu.com/yobin/item/a5194e903f1f1df128164779

    的二、四节

    MyEclipse下SVN插件作为客户端,下载site-1.6.18.zip,解压导入eclipse

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

    一、什么是SVN服务器
    Subversion,简称SVN,是一个开放源代码的版本控制系统(SCM),相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。互联网上越来越多的控制服务从CVS转移到Subversion。

    主页:http://subversion.apache.org/

    二、Windows下SVN服务器端的安装与配置
    (一)安装
    Windows环境下面分了CollabNet / Tigris.org(Apache2.2和Apache2.0) / SlikSVN / VisualSVN 5个链接,我选的是Tigris Apache2.2,下载一个目前最新的Setup-Subversion-1.6.6.msi,点击,一路安装即可,很简单。

    开始菜单-》运行-》输入Cmd回车,敲“svn --version --quiet”,会得到SVN的版本号。

    (二)配置
    1、创建repository
    Rrepository是存储数据的地方。
    例如要在F:\svnroot下创建repository,就使用命令行svnadmin create f:\svnroot。如果执行正确的话,会在F盘下多一个SVNROOT的目录,目录下有4个目录和2个文件。

    2、启动SVN服务
    使用命令行 svnserve -d -r f:/svnroot,这样外部就可以它能够过客户端来访问了。
    我运行完才发现,这样cmd窗口还不得不一直开着,很难看,当然一般大公司的代码服务器是24小时开着的。

    上网搜了一下,也可以作为一个服务自动启动的。执行脚本 sc create svn binpath= "\"d:\Program Files\Subversion\bin\svnserve.exe\" --service -r\"f:/svnroot\"" displayname= "Subversion Server" depend= Tcpip start= auto 就可以将svnserve程序作为服务载入。安装路径和存储数据的目录要根据自己的情况修改。

    执行完这个脚本,可以去管理工具-》控制面板-》服务那里找找Subversion Server,如果没启动就启动

    3、基本设置
    修改f:|svnroot\repos\conf\svnserve.conf,注释很详细。
    [general]
    anon-access = none
    auth-access = write
    password-db = passwd
    authz-db = authz
    realm = My First Repository
    [sasl]
    # use-sasl = true
    # min-encryption = 0
    # max-encryption = 256

    期中,anon-access = none表示要用户名和密码,password-db = passwd表示passwd是存身份验证的用户名和密码。sasl,就是加密访问用的,一般也可以不用。

    4、用户管理
    在f:|svnroot\repos\conf\passwd里添加有权限的用户名和密码。例如添加用户yobin,密码123456,就这样:
    [users]
    # harry = harryssecret
    yobin = 123456
    hh = 111
    ss = 222

    5、分组管理和权限设置
    如果是所有文件对用户都可见的话,上面几步也足够用了。但要想对一些人可见,一些人不可见的话,就要去修改authz文件了。

    &别名:别名的引用
    @用户组名:某组用户
    $authenticated:所有已授权用户
    $anonymous:匿名用户
    * : 任何人

    r:写权限
    rw:读写权限
    :不能访问(空,什么都不写)

    设置用户权限的时候,'='左侧代表用户名称,可以是实际用户名,也可以是定义的用户组名,也可以是别名,但要用'@'作为前缀,或者是所有用户'*'。'='右侧代表设置的权限'r'、'rw'或者为空即代表用户对于该目录无任何权限。

    authz文件中对版本库路径的表示方法。用'[/]'来表示版本库的根目录,如果有子目录foo,设置该目录权限时用'[/foo]'即可,其他任何目录都以'/'为版本根目录进行表示。注意了,别用”\“!!!

    用户某个目录的权限是向子目录递归的。如果用户对于/foo目录有读写权限,则该用户对于foo目录下的所有子目录都有读写权限。如果不设置最上层的目录没有设置权限,那么就相当于不设置,禁止访问。
    权限分配,只可以分配到某个目录,而不能到某个文件。

    写了一个例子,或者看看文件自带的吧,看看就明白了。
    [aliases]
    yy = yobin

    [groups]
    yy_hh_ss = &yy,hh,ss

    [/folder1]
    &yy = rw
    hh = r
    * =

    [/folder2]
    @yy_hh_ss = rw
    * = r

    三、SVN客户端的安装
    选择TortoiseSvn,下载后一路点击即可。
    下载地址:http://tortoisesvn.net/downloads

    四、代码的导入和检出(下面这部分是拷贝的,来自http://junnan.org/blog/?p=7

    至此Subversion完装完成,下面可以使用TortoiseSVN来连接了,首先找到要上传到版本库的网站目录,然后右击目录,选择TortoiseSVN->导入,我这里的版本库URL添写:svn://localhost/inan_blog,这里的localhost你可以换成你的IP,后面的inan_blog是要放在版本库中源代码的别名,便于分类,点击确定,然后输入在passwd文件里设置的验证信息,开始连接并开始上传源码。

    导入完成后就可以通知对方取出版本库中的源码开始开发了,首先在本地建立一个存放项目源码的文件夹,然后右击该文件夹,选择“SVN检出”,这里假设我的公网IP是58.52.168.2,然后版本库URL就应该添写:svn://58.52.168.2/inan_blog ,检出至目录默认就是当前新建的目录,然后点击确定,出现验证对话框,同样输入在passwd文件里设定的验证信息,就开始下载源码至本地并可以进行开发了。

      

    修改了源码之后,被修改的文件的图标会自动标识出已更改,这时只需要右击该文件夹,选择“SVN提交”,TortoiseSVN就会列出整个目录已更改的文件,在信息栏里输入一下修改说明,好让别人知道你修改了什么,点击确实就可以把最新修改的源码上传到版本库中,当然在你修改源码之前,应该右击该文件夹,选择“SVN检出”来从版本库检查源码是否有更新并下载最新源码到本地再进行开发,“TortoiseSVN->显示日志”菜单项可以显示对方修改了什么。

    如果两人同时在修改了一个文件并提交,TortoiseSVN就会检查修改的代码是否在同一行,如果不是在同一行,它会自动将代码合并,如果在同一行,TortoiseSVN就会显示冲突,这时就需要手动来修改了,具体操作就不多说了,可以参考TortoiseSVN手册,或者下面的教程:
    http://svn.coollittlethings.com/document.php

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

    清除原工程包中".svn"文件夹:

    将以下脚本存为.bat文件,运行

    @echo off
    echo ***********************************************************
    echo * *
    echo * *
    echo ***********************************************************
    :start
    ::启动过程,切换目录
    :set pwd=%cd%
    :cd %1
    echo 工作目录是:& chdir
    :input
    ::获取输入,根据输入进行处理
    set source=:
    set /p source=确定要清楚当前目录下的.svn信息吗?[Y/N/Q]
    set "source=%source:"=%"
    if "%source%"=="y" goto clean
    if "%source%"=="Y" goto clean
    if "%source%"=="n" goto noclean
    if "%source%"=="N" goto noclean
    if "%source%"=="q" goto end
    if "%source%"=="Q" goto end
    goto input
    :clean
    ::主处理过程,执行清理工作
    @echo on
    @for /d /r %%c in (.svn) do @if exist %%c ( rd /s /q %%c & echo 删除目录%%c)
    @echo off
    echo "当前目录下的svn信息已清除"
    goto end
    :noclean
    ::分支过程,取消清理工作
    echo "svn信息清楚操作已取消"
    goto end
    :end
    ::退出程序
    cd "%pwd%"
    pause

  • 相关阅读:
    可惜老板不看程序员写的书
    《让僵冷的翅膀飞起来》系列之四——Visitor模式之可行与不可爱
    《让僵冷的翅膀飞起来》系列之二——从实例谈Adapter模式
    策略模式的应用实践
    《让僵冷的翅膀飞起来》系列之三——从Adapter模式到Decorator模式
    用Design+Blend轻松制作环形文字
    silverlight3的"伪"3D续图片横向轮换
    silverlight.net官方网站图片切换源码
    css2.1中的属性选择器(css高手请绕道)
    多线程中的ManualResetEvent
  • 原文地址:https://www.cnblogs.com/frostbelt/p/2495964.html
Copyright © 2011-2022 走看看