zoukankan      html  css  js  c++  java
  • 版本控制

    一、svn

    1、SubVersion,从 http://subversion.tigris.org/ 下载,是实现服务系统的软件,必装的。

    2、TortoiseSVN,从 http://tortoisesvn.tigris.org/ 下载,是很不错的SVN客户端程序,为windows外壳程序集成到windows资源管理器和文件管理系统的Subversion客户端,用起来很方便,commit动作变得就像Winrar右键压缩一样方便。

    3、SVNService.exe,从 http://dark.clansoft.dk/~mbn/svnservice/ 下载,是专为 SubVersion 开发的一个用来作为 Win32 服务挂接的入口程序。

    4、AnkhSVN,从http://ankhsvn.tigris.org/下载,这是一个专为Visual Studio提供SVN的插件。

    5、Subversive,从http://www.polarion.org/p_subversive.php下载,这时一个为Eclipse提供SVN的插件,据说已经和Eclipse自带的CVS功能有一拼。

    6、还有很多很多SVN相关的工具以及使用TIP介绍,大家可以上官方的相关链接页面中查看,地址:http://subversion.tigris.org/links.html

    以前都是别人建好并配置好了svn,然后我使用。今天自己简单尝试了下建svn来管理项目文档。中间也遇到些问题。下面是我总结的一个完整流程,许多步骤可以有另外的方法来完成,但在这我都只给我认为比较简单的方法。

    我使用系统是: Microsoft Windows xp sp2

    第一:下载软件

    有两个软件需要下载的:
    Subversion和TortoiseSVN
    Subversion 下载地址:http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91
    TortoiseSVN下载地址:http://tortoisesvn.net/downloads

    (有些文档说必备软件还有Apache,但这么说法的大多是较旧的文档这么提到,随着软件的更新,已经没有必要安装Apache了,安装Apache是为了SVN能干更多事,比如可以基于HTTP去访问等。)

    软件安装完后需要重启系统。

    第二,建立服务和根目录创建

    建立svn的根目录:例如在E盘建立文件夹SVNRoot。

    然后是建立svn服务:(这里把svn服务建立为一个windows的服务)

    在命令行下敲入:SC create svn1.5 binPath= "\"C:\Program Files\Subversion\bin\svnserve.exe\" --service --root \"E:\SVNRoot\"" depend= Tcpip start= auto
    (第一块红色部分为subversion的安装位置,第二块红色为刚才创建的SVN根目录,注意:命令行中等号前不能有空格,等号后必须有空格)

    运行后打开windows的服务窗口检查,如果有svn1.5这么个服务,说明建立成功了,初次建立可能要手动启动下(不然重启动系统也可以,当然这里没有必要重启系统)

    第三:具体项目的建立和配置。

    这里假设我们有个项目DemoProject需要用svn来管理。

    在E:\SVNRoot下新建文件夹DemoProject。进入DemoProject,鼠标在空白处点击右键,选择TortoiseSVN,再选择Create repository here。操作完后可以看见本来空的文件夹内多了些文件和文件夹。

    现在可以来测试以上步骤是否正确,在F盘创建DemoProject(开发项目时的文件夹),进入新创建的文件夹,空白处点击右键,选择SVNCheckOut,Url repository填入svn://localhost/DemoProject,其他默认。点击OK,(如果窗口Action有显示Completed,那说明操作成功)。

    这样虽然可以访问了,但是并没有完成,我们需要配置文件的读写权限。这时我们进入E:\SVNRoot\DemoProject\conf。
    里面有三个文件。默认里面几乎所有的代码都被使用#注释了。

    接下去我们来修改这三个文件来配置svn的验证和授权。(请大家要区分验证和授权)

    首先是svnserve.conf文件。
    # anon-access = read把这行改成anon-access = none,表示禁止匿名访问(注意:anon前面不能有空格)
    # password-db = passwd把这行前面的注释去掉,并删除空格,表示验证用户使用passwd文件。
    # authz-db = authz把这行前面的注释去掉,并删除空格,表示授权使用authz文件。

    然后修改passwd文件,部分文件内容:
    [users]
    # harry = harryssecret
    # sally = sallyssecret

    我想看下这个文件内容就应该知道作用了,这里是配置svn的用户名和密码,这里harry是用户名,等号后面是用户密码,sally是另外一个用户。当然这两行代码都是被注释的。你可以删除注释启用他们,也可以自己加一行,比如:
    kate = 123456
    这里用的密码是明文,如果你的项目安全要求较高,可以使用加密的密码,配置比较麻烦,这里不说了。还有用户名之间可不可以有空格,用户名和密码的合法字符等,这些我没做测试。


    最后配置authz
    第一个属性节点是aliases,别名,不知道作用在哪,估计就是将同等权限的许多用户合并成一个名称。我这里没有做修改。

    第二个属性节点groups,组别,这很好理解,就是把相同权限的用户合并入一个组,以便下面配置授权时更加简洁。

    下面的属性节点都是目录授权节点。
    [/foo/bar]表示以下设置/foo/bar目录下的授权。以下授权格式是: 用户名|组别名 = rw | r,r是read的缩写,表示有读的权限,w是write的缩写,表示可写权限,rw表示可读可写。

    如果在根目录下配置使用[/]就可以了。


    配置完成后,再次进入F:/DemoProject,在空白处鼠标右键,选择SVNUpdate,这时会弹出个窗口要求我们输入用户名和密码,输入在passwd文件中配置的用户名和密码后就可以访问了。

    这样一个项目就配置完成了。接下去就可以使用了。具体的Update, Commit等操作使用就不说了。

    Two tips:

    1.
    我们习惯的懒惰的操作就是下班前整个项目commit,但事实是没有必要把整个项目的所有文件都提交给svn管理,甚至有些文件提交后麻烦大大的。比如vs solution下的xxx.user文件,这个提交后造成冲突几乎是100%的。
    解决的方法就是在在TortoiseSVN的Setting中设置Global ignore pattern值为“*/bin */obj *.bak *.*scc *.user *.suo *.gpState *.webinfo bin obj *.dll *.pdb *.exe Thumbs.db */TestResults”,这里示例的pattern主要针对使用Visual Studio的开发人员。

    2.
    在TortoiseSVN的Setting中勾选 Use "_svn" instead of ".svn" directories,某些时候(我不确定是那些时候).svn在windows系统会出错。


     参考文章:

    http://www.blogjava.net/zpuser/archive/2008/06/08/206654.html

    Setting_up_a_Subversion_Server_under_Windows

     11月25更新:

    如果你看不懂上面的文章,建议你使用可视化的配置软件来配置subversion服务。介绍文章由本文的热心评论网友提供:

    http://www.cnblogs.com/ttzhang/archive/2008/11/06/1325940.html

    (我看了这篇文章配置subversion,然后使用了VisualSVN Server来配置,确实很简单!)

    今天尝试了下将subversion装入系统服务,用命令就可以了。命令如下:
    sc create svnserver binPath= "D:\Program Files\Subversion\bin\svnserve.exe --service -r D:\SVN\repository" DisplayName= "subversion" depend= Tcpip start= auto

    看似简单的命令输了好几次都提示 .....

    查了一下终于知道了

    Note that the command-line syntax for SC is rather odd.  Key/value
    pairs are specified as "key= value" (without the double-quotes).  The
    "key=" part must not have any spaces, and the "value" part MUST be
    separated from the "key=" by a space.

    大概意思就是
    这个指令是key=value的格式,所有的key=后面都必须加一个空格才可以,比如: depend=【请注意这里是一个空格】Tcpip (很奇怪吧!)
    还有就是key当中不能有空格。

  • 相关阅读:
    java.lang.NoSuchMethodError:antlr.collections.AST.getLine() I
    T7 java Web day01 标签HTML
    T6 s1 day19
    T5 s5 Day18
    T5 s4 Day 17
    T5 s3 day16
    T5 s2 Day 15
    T5 s1 day14
    T4 S03 day 12
    T4 S01 day1
  • 原文地址:https://www.cnblogs.com/5tao/p/1526434.html
Copyright © 2011-2022 走看看