`
jy00509336
  • 浏览: 239380 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

总结一下subversion

阅读更多

原帖:http://hi.baidu.com/thinkinginlamp/blog/item/1b1b20a48d422ffc9052eeda.html

学了subversion之后,我就把cvs忘得一干二净了,现在git越来越火了,在全面切换到git之前,特地总结一下subversion,以免以后又什么都不记得了。

创建仓库:

svnadmin create /path/to/repository

修改一下配置:

vi /path/to/repository/conf/svnserve.conf

如果不是开源项目的话可能需要配置禁止匿名访问:

[general]
anon-access = none
auth-access = write
password-db = passwd

设定用户密码:

vi /path/to/repository/conf/passwd

假设创建一个密码是<password>的用户<username>

[users]
<username> = <password>

此外,还可以设定基于路径的authz认证方式,读者请自己看配置文件,这里就不多说了。

subversion有很多运行方式,比如说搭配apache使用,不过它本身也可以单独作为服务存在:

svn -d -r /path/to/repository

在客户端可以使用svn import的方法来创建项目(也可以用svn mkdir的方式来创建项目,就不多说了):

mkdir -p /path/to/project/trunk
mkdir -p /path/to/project/branches
mkdir -p /path/to/project/tags

svn import /path/to/project svn://server/project

其中,trunk,branches,tags目录并不是必须的,但多数人习惯这样,所以最好不要标新立异。

接下来就可以checkout了:

svn co svn://server/project/trunk project

开发时常用的命令很简单,基本就是更新svn up,提交svn ci之类的。

在项目开发初期,可以仅仅使用trunk来管理代码,不过一旦项目发展起来,开发时就不应该直接操作trunk了,此时应该使用branches来管理代码,比如可以使用下面的命令建立一个名为1.x的branches:

svn copy svn://server/project/trunk svn://server/project/branches/1.x

开发工作都在branches中完成,一旦完成了编码,就可以把代码合并到trunk中去:

先要查查branches是什么时候创建的:

svn log --stop-on-copy svn://server/project/branches/1.x

假设查到的版本号是<version>, 然后进入到trunk工作拷贝中,执行:

svn merge -r <version>:HEAD svn://server/project/branches/1.x

最后提交即可:

svn commit

这还不算完,此时应该在tags里发布这个新版本(比如说版本号是1.0):

svn copy svn://server/project/trunk svn://server/project/tags/1.0

为了记牢一点,再唠叨一下trunk,branches,tags的用途:

trunk:仅保存最新的稳定代码,代码的改变尽可能通过branches来merge,而不要手动commit代码。
branches:用来管理代码的日常开发,可以手动commit代码。
tags:仅保存各个版本的代码快照,比如类似版本:1.0,1.1,1.2等等。

不同人针对同样的文件提交修改的时候,subversion会尽可能的自动合并修改,不过有的时候还得手动来解决冲突,有以下几种方式:

1:放弃自己的修改,转而使用服务器端的代码版本:

svn revert file.php
svn update file.php

2:使用自己的代码版本覆盖服务端的修改:

cp file.php.mine file.php
svn resolved file.php

3:手动处理<<<<<<<和>>>>>>>标识出来的冲突代码:

svn resolved file.php

有一些文件和项目本身掺杂在一起,但不适合作为版本控制的保护对象,这时应该忽略它们,比如说Smarty的模板编译目录templates_c:

svn propedit svn:ignore /path/to/templates_c

使用subversion的自动属性功能可以节省很多精力,比如说想让不同系统的用户在得到php文件的时候使用适合自己的行结束符,可以这样:

vi ~/.subversion/config

[miscellany]
enable-auto-props = yes

[auto-props]
*.php = svn:eol-style=native

注意:如果你使用的是windows操作系统,配置文件config的路径是:%APPDATA%\Subversion\config

subversion有很多钩子脚本,可以方便维护工作,其路径位于:

cd /path/to/repository/hooks

里面有很多现成的模板,比如pre-commit,post-commit,我们可以用它来实现很多效果:

比如说我们想保证所有的svn ci操作都要编写适当的日志信息,可以这样:

cp pre-commit.tmpl pre-commit

这样就够了,钩子模板缺省的内容就实现了这个效果,具体的实现内容可以参考钩子本身代码。

说到日志信息,随便唠叨一下,写日志信息的时候不要写诸如把a改成b之类的东西,因为通过svn diff可以很容易知道你做了哪些改变,而应该写为什么做这些改变,这样的日志信息才是有意义的。

post-commit文件也可以有很多用途,比如说我们可以利用它来自动更新线上代码,大概的代码如下:

/usr/bin/svn update /path/to/work/copy

此外,要注意在Web服务器上保护.svn目录,不然就不安全了,如果是apache的话,可以这样:

<DirectoryMatch "/\.svn/">
Order allow,deny
Deny from all
</DirectoryMatch>

最后说说svn+ssh的连接方式,本文的例子基本都是使用单纯的svn连接方式,不过svn+ssh可以使用系统本身的账户作为验证方式,并且传输过程是加密的,所以更方便,更安全。此外,使用svn+ssh的方式,你连服务都不用启动了,因为已经通过ssh转换成类似本地的file://操作了。

svnadmin create /path/to/repository
groupadd subversion
usermod -G subversion <username>
chgrp -R subversion /path/to/repository
chmod -R 770 /path/to/repository

在客户端查看配置文件:

more ~/.subversion/config

[tunnels]
# ssh = $SVN_SSH ssh

缺省情况下,这里使用了一个名为SVN_SSH的环境变量,所以你需要设定一下它:

export SVN_SSH="/usr/bin/ssh [-p port ...]"

注意:如果是windows,可以使用putty中的plink,或者使用TortoisePlink,并在环境变量中设定SVN_SSH。

设定好了之后,就可以使用svn+ssh的方式了:

svn+ssh://server/path/to/repository/...

注意,使用svn+ssh连接的时候,后面是完整的物理路径,这和单纯使用svn连接时是不一样的。

好了,subversion常用的功能基本都介绍了一遍,时不时拿出来看两眼,应该就不会忘记了。

分享到:
评论

相关推荐

    使用Subversion进行版本控制(针对 Subversion 1.4)

    使用Subversion进行版本控制针对 Subversion 1.4(根据r2866编译) 参照网页版 http://svndoc.iusesvn.com/svnbook/1.4/制作而成。 目录 前言 序言 读者 怎样阅读本书 本书约定 排版习惯 图标 本书的结构 本书是...

    linux下安装subversion

    知识点总结: * 安装 OpenSSL、zlib 和 Apache 等依赖包 * 安装 Subversion 并配置依赖包 * 配置 Subversion 服务器 重要提示: * 安装过程中可能会报错,需要安装 gcc。 * 需要在有网的环境下执行 get-deps.sh ...

    Subversion 1.6.6+ Apache 2.2.14+ TortoiseSVN 1.6.6 安装配置总结版

    NULL 博文链接:https://shupili141005.iteye.com/blog/676700

    subversion安装与配置

    subversion,全面介绍, 是本人经验和项目的总结。 有详细的安装 和配置。 介绍了与eclipse的集成。

    SVN版本管理系统的安装(CentOS+Subversion+Apache+Jsvnadmin)安装步骤

    总结 本文档详细介绍了 SVN 版本管理系统的安装步骤,包括安装 CentOS、Subversion、Apache 和 Jsvnadmin 等组件的详细过程。通过本文档,读者可以了解 SVN 版本管理系统的安装过程,并掌握相关的知识点。

    Matlab的Subversion接口:在Matlab中使用Subversion版本控制系统-matlab开发

    总结基本上说明了一切。 这使您可以在 Matlab 中使用 Subversion。 我没有看到任何其他实现,所以我为我的小组编写了这个简单的版本。 将此文件放在 ../toolbox/matlab/verctrl/ 目录中,用相同的名称覆盖那里的现有...

    svn服务器配置总结

    Subversion 自带一个客户端程序 svn.exe ,但 TortoiseSVN 更好操作,提高效率。 二、安装服务器端和客户端 安装 Subversion(以下简称SVN)的服务器端和客户端。下载下来的服务器端是个 zip 压缩包,直接解压缩...

    SVN使用教程总结

    SVN 使用教程总结 .Subversion(SVN)是一种自由/开源的版本控制系统,旨在帮助程序员更好地管理代码版本。通过 SVN,可以记录每一次文件和目录的修改,快速恢复到早期版本,检查数据修改的历史。 一、SVN 服务器...

    openwrt总结(基础知识)

    对于CentOS系统,可以使用yum安装以下依赖包:binutils、bzip2、gawk、gcc、gcc-c++、gettext、make、ncurses-devel、patch、unzip、zlib-devel和subversion、screen。对于其他Linux系统,请参照官网列出的不同的...

    SVN使用教程总结.doc

    SVN 使用教程总结 本文档旨在提供一个详细的 SVN 使用教程,从 SVN 的基本概念到服务器搭建、客户端安装、版本库管理、用户和组管理等方面进行了详细的讲解。 一、SVN 简介 SVN(Subversion)是一种免费/开源的...

    Linux下SVN服务器安装配置及客户端安装说明[定义].pdf

    三、总结 本文指导用户在 Linux 平台下安装和配置 SVN 服务器,并介绍客户端的安装步骤。安装 SVN 服务器需要两个文件:subversion-1.6.1.tar.gz 和 subversion-deps-1.6.1.tar.gz。需要安装 OpenSSL 并编辑 /etc/...

    svn--项目管理工具[总结版]

    SVN(Subversion)是近年来崛起的版本管理工具,在当前的开源项目里(J2EE),几乎95%以上的项目都用到了 SVN。Subversion 项目的初衷是为了替换当年开源社区最为流行的版本控制软件 CVS,在 CVS的功能的基础上有很多...

    windows下的svn搭建步骤总结

    svn客户端和服务器基本操作流程介绍. 1.基本概念 2.安装独立服务器SVNServer。 3.ApacheSVN和Subversion的区别

    完整详细图文版 代码管理工具SVN、CVS、CC、VSS、GIT详细使用说明书(最终版本)Eclipse相关(共94页).pdf

    subversion的使用技巧很多,这里只总结了最小使用集,即主要的基本功能,能够用来应付日常工作。 svn是版本管理工具,譬如团队进行项目开发,项目代码都储存在服务器上,成员可用svn在本地获得并更新代码 控制服务器...

    WINDOWS下搭建SVN服务器端的步骤分享(Subversion)

    WINDOWS下搭建SVN服务器端安装了两次终于明白应该注意什么了,总结一个最简单的说明,节省大家时间

    J2EE JNDI配置原理详解 JBOSS安装配置 Maven入门 Ant使用入门

    1.3 Java事务处理总结 1.4 JavaBean中使用JDBC方式进行事务处理 1.5 JSP 隐式对象简介 1.6 Java解析XML的四种方法 1.7 struts1和truts2比较 1.8 Tomcat5启动流程与配置详解 1.9 HttpServlet详解 1.10 Ant使用...

    TortoiseSVN-1.14.5中文使用手册

    TortoiseSVN中文使用手册知识点总结 TortoiseSVN是一款功能强大的Subversion客户端工具,专门为Windows平台设计。下面是TortoiseSVN中文使用手册中的知识点总结: 什么是TortoiseSVN? TortoiseSVN是一个基于...

    SVN培训资料.pptx

    目录 1 SVN的简介 2 SVN的安装 3 SVN的相关图标 4 SVN的日常使用 5 SVN的总结注意事项 SVN培训资料全文共52页,当前为第2页。 1、SVN的简介 SVN全名Subversion,即版本控制系统,是一个跨平台的软件,支持大多数...

    Linux下的SVN服务器搭建步骤

    本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总结 /******开始*********/ 系统环境:Centos 6.5 第一步:通过yum命令安装svnserve,命令如下: yum -y install...

    Linux服务器下安装SVN,并添加SVN项目,自动更新项目文件到web目录

    "Linux 服务器下安装 SVN 并添加 SVN 项目,自动...八、总结 本文介绍了如何在 Linux 服务器上安装 SVN,并添加 SVN 项目,自动更新项目文件到 web 目录。使用 SVN 可以帮助开发者跟踪文件的变化,实现多人协作开发。

Global site tag (gtag.js) - Google Analytics