http://flatfish2000.iteye.com/blog/425196
http://hu-bj.iteye.com/blog/314852
http://wyb8511.iteye.com/blog/351104
http://sunxin1001.iteye.com/category/49042
http://sgl124764903.iteye.com/blog?page=3&show_full=true
这两天mm不在线,不能聊天。闲着无聊,就主动领活,把实验室的svn服务构架起来了。幸亏有活做,要不老想着mm,慢慢就由甜蜜变成思念的痛了。
下面就是全过程了,呵呵,欢迎交流。当然服务器和客户端都为linux,我用的是debian。
Svn安装:
采用新立得软件包安装subvesion及subvesion tools
客户端和服务器端是一样的。
服务器端:
许多位置都可以放置 Subversion 文件仓库,假设Subversion 文件仓库放在 /home/svn,并且项目名称是简单的“myproject”。
同样的,也有许多常用的方式设置文件仓库的访问权限。然而,这也是安装过程中最经常出现错误的地方。创建一个名为“Subversion”的组来拥有文件仓库所在的目录。下面是操作说明:
在 Ubuntu 菜单上选择“系统->系统管理->用户和组”;
切换到“组”标签;
点击“添加组”按钮;
组名为“subversion”;
将自己和“www-data”(别的用户)加入组成员中;
点击“OK”以确认修改,关闭该程序。
注销然后再登录以便使自己能够成为 subversion 组的一员,然后就可以执行签入文件(Check in,也称提交文件)的操作了。
对于多个用户和多个组,可以增加用户和组来实现。将不同的用户加入不同的组中。
如:subversion1中有用户 user1,user2
subversion2中有用户 user3
‘‘‘‘‘‘
下来是具体的准备工作:
建立版本库的目录
$ sudo mkdir /home/svn
$ cd /home/svn
$ sudo mkdir myproject
$ sudo chown -R root:subversion myproject
$ sudo chmod -R g+rws myproject
最后的一条命令赋予组成员对所有新加入文件仓库的文件拥有相应的权限。
下面的命令用于创建 SVN 文件仓库(版本库):
$ sudo svnadmin create /home/svn/myproject
Subversion 文件仓库可以通过许多不同的方式进行访问(Check Out,签出)
模式访问方法
file:/// 直接访问本地硬盘上文件仓库($ svn file:///home/svn/myproject)
svn:// 通过自带协议访问 svnserve 服务器($ svn://localhost/home/svn/myproject)
对文件仓库的访问权限基于文件系统的权限。
如果该用户具有读/写权限,那么该用户就可以签出/提交修改。如果像前面那样设置了相应的组,就可以简单的将一个用户添加到“subversion”组中以使其具有签出和提交的权限。
当创建了 SVN 文件仓库,修改 /home/svn/myproject/conf/svnserve.conf 来配置其访问控制。
内容修改为:
[general]
anon-access = none
auth-access = write
password-db = /home/svn/myproject/conf/pwd.conf
authz-db = /home/svn/myproject/conf/authz.conf
可以在“passwd”文件中维护用户清单。编辑同一目录下“passwd”文件,添加新用户。语法如下:
[users]
<用户1> = <密码1>
<用户2> = <密码2>
其中,[users]是必须的。下面列出要访问svn的用户,每个用户一行。示例:
[users]
alan = password
king = hello
配置svn用户访问权限
注意:
* 权限配置文件中出现的用户名必须已在用户配置文件中定义。
* 对权限配置文件的修改立即生效,不必重启svn。
用户组格式:
[groups]
<用户组名> = <用户1>,<用户2>
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。
版本库目录格式:
[<版本库>:/项目/目录]
@<用户组名> = <权限>
<用户名> = <权限>
权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。
示例:
[groups]
admin = alan
[/]
@admin = rw
[myproject:/abc/aaa]
king = rw
[myproject:/pass]
king = r
如果是对于不同的组有不同的版本库的访问权限,需要建立不同的版本库,并且在每个版本库中的passwd中添加能访问本版本库的用户。而在authz中可以设置每个组中的用户对版本库中不同的文件的访问。
当然在svn启动中要对不同的版本库进行svnserve
svn的启动:
$ svnserve -d --listen-port 9999 -r /home/svn/myproject
说明:-d表示以daemon方式(后台运行)运行
–listen-port 9999表示使用9999端口,可以换成你需要的端口。但注意,使用1024以下的端口需要root权限
可以省略。缺省情况下默认端口为3690
-r /home/svn指定根目录是/home/svn
说明(重要):
有时候会出现一些问题:如客户端没有写权限等诸如此类问题。可能的原因及解决方法如下:
可能原因之一:配置authz时,没有注意svnserve启动参数-r所指定的目录。
这里有两种情况:
1:-r直接指定到版本库(单库svnserve方式)
如有一个库myproject1,路径为/home/svn/myproject1
使用以下命令启动svnserve
svnserve -d -r /home/svn/myproject1
这种情况下,一个svnserve只能为一个版本库工作
而authz应当配置成如下:
[groups]
subversion = user1,user2
[/](此处应注意)
@subversion = rw
这样访问myproject1就可以通过svn://59.66.122.183/
2:指定到版本库的上级目录(多库svnserve方式)
在路径/home/svn下有两个或两个以上的版本库,为了说明问题方便,假设有两个,myproject1和myproject2
使用以下指令启动svnserve
svnserve -d -r /home/svn
这种情况下一个svnserve可以为多个版本库工作。
这时如果想限定指定库的指定目录的访问者,就应该指定具体的库,所以authz中应是如下:
[groups]
subversion1 = user1
,user2
subversion2 = user3
[myproject1:/]
(此处应注意)
@subversion1 = rw
@subversion2 = r
[myproject2:/]
@subversion1 = r
@subversion2 = rw
###假设需要对myproject1中的aaa文件设定成user3为rw
###则可编写代码如下:
[myproject1:/aaa]
user3 = rw
检查:
netstat -ntlp
会出现如下信息说明启动成功:
激活Internet连接 (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 5028/cupsd
tcp6 0 0 :::3690 :::* LISTEN 9731/svnserve
branches 分支目录,每个开发工作者在此目录下建立自己的日常工作目录,日常开发工 作都在自己的工作目录,严禁在主干目录下进行日常开发工作。
tags 标签目录,存放项目的发布版本
trunk 开发主干目录,严禁在此目录下做与自己任务无关的修改,如添加无关文件等等
只有当自己负责的任务,有重大成果时,才允许开发工作者修改主干下的文件,提交
建立一个临时文件夹,如在路径/home/svn下,在里面建立三个文件夹,用于装载SVN Project的版本信息,或者分支版本
mkdir temp
mkdir temp/trunk
mkdir temp/tags
mkdir temp/branches
建立好后,在/home/svn输入命令
svn import temp/ svn: //localhost/projectname -m "OK"
到此为止,服务器端的安装及配置已经初步成功了。
客户端:
找到所要工作的项目的源代码文件夹,如/home/proj
进入:cd /home/proj
执行了该命令,就可以通过下面的命令来访问文件仓库,通过这一步可以从版本库中提取版本副本。
svn co svn://【服务器ip】/myproject/trunk –revision 版本号
需要说明的是 check out(简写为co)后面访问的必须是目录而不能是文件,所以要提取某一个版本副本的时候,要访问副本所在的目录。
也可以在版本库之后指定一个目录,这样会将你的工作目录放到信的目录里,如:
svn co svn://【服务器ip】/myproject/trunk /home/subv
基于服务器的配置,它会要求输入密码。一旦通过验证,就会签出文件仓库中的代码。
以下所有的操作必须在工作副本中进行!
把增加的svn文件添加入svn库:将尚未纳入管理的版本,通过add将版本纳入管理,从此版本库就会多出这个版本。
svn add file
svn add test.php
提交文件:完成一次修改后,使用这个指令来将修改送回版本库记录,成为一个新的版本。
svn commit test.php
svn ci –file test.php(对于不是目录的文件)
在对副本进行增加或者拷贝时,直接commit会出现错误提示:尚未纳入版本控制,此时可通过先用add,然后再commit。当不知道哪些文件应该add时, svn status 命令会将工作复本中未纳入版控制目录与档案显示出来。
更新文件:
更新到某个版本
svn update -r m path
例如:
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
查看历史:
如果你只是希望检查一个过去的版本而不希望察看它们的区别,使用 svn cat:
svn cat –revision 2 test.php
删除文件
svn delete path -m “delete test fle“
例如:svn delete svn://【服务器ip】/pro/domain/test.php -m “delete test file”
或者直接svn delete test.php 然后再svn commit -m ‘delete test file‘,推荐使用这种
分支与合并:
分支:也就是简单的copy
svn copy svn://【服务器ip】/trunk svn://【服务器ip】/branches/wsz_branch
主干为trunk,然后创建分支:/branches/wsz_branch,然后我可以在我的分支的库里做修改,以不至于改坏主干上的文件。
合并:这个过程比较复杂,建议看svn帮助说明。
就是merge这个指令:
svn merge svn://【服务器ip】/trunk svn://【服务器ip】/branches/wsz_branch
-----这是把主干上的库里的文件合并到自己的分支上。
Svn merge -r 8:7 test.txt
-----这是把版本8的修改合并到版本7里。而合并后的test.txt经过commit后会变成版本9。
文件的回滚:
1、 如果对代码的改动没有check in,把本地改动过的文件删掉,然后执行一次update来还原文件。
2、 改动已经check in。
这种情况下,有多种办法可以进行撤销修改。一般我们推荐用svn merge来达成目的。
典型的操作过程如下:
1、保证我们拿到的是最新代码:
svn update
假设是28版本。
2、然后找出要移除的确切版本:
svn log test.php
根据log怀疑是27版本改坏的,比较一下:
svn diff -r 26:27 test.php
发现果真是27版本坏事。
3、撤销27版本的改动:
svn merge -r 27:26 test.php
为了保险起见,再次确认合并的结果:
svn diff test.php
发现已正确撤销了改动,提交。
4、提交改动
svn commit -m "Revert wrong change from r27"
提交后版本变成了29。
分享到:
相关推荐
linux下安装SVN支持http;linux下安装SVN支持http;linux下安装SVN支持http
这里我们将svn安装到`/usr/local/svn`目录,你可以根据实际需求更改安装路径。 2. 编译源码: ``` make ``` 3. 安装编译后的程序: ``` sudo make install ``` 4. 创建软链接,使系统可以全局访问svn命令...
linux安装svn文档,文档描述相关的linux安装svn的命令
### Linux下安装SVN命令行知识点详解 #### 一、安装Subversion服务器 在Linux环境中部署Subversion(SVN)服务器通常涉及几个关键步骤。首先,确保已经安装了必要的软件包。对于Debian及其衍生系统(如Ubuntu),...
在Linux环境下安装Subversion(简称SVN)是一项常见的任务,尤其对于软件开发团队来说至关重要。SVN是一种广泛使用的版本控制系统,用于管理代码库的历史版本,方便团队协作开发。本文将详细介绍如何在Linux系统上...
Linux 安装 SVN 并实现本地同步服务器 ...本文介绍了在 Linux 环境下安装 SVN 并实现本地同步服务器的步骤,包括安装 SVN、创建目录结构、配置 SVN、启动 SVN 服务、客户端验证和同步本地和服务器等步骤。
持续学习和实践是解决这些问题的关键,这将帮助你更好地理解和掌握Linux下的SVN安装。 总之,Linux下安装SVN需要对Apache HTTP Server和其依赖的apr、apr-util有深入理解,同时要注意版本兼容性。通过遵循上述步骤...
本文将详细讲解如何在Linux上安装SVN的源码包,并按照步骤进行配置。 首先,我们需要了解安装的基本流程,它包括下载源码、解压、编译、安装和配置几个步骤。下面,我们一步步来操作。 1. **下载源码** 在这个...
在没有网络连接的情况下,即离线状态下安装Linux SVN,需要提前下载好所有必要的依赖包,然后在本地进行安装。以下是详细的操作步骤和相关知识点: 1. **了解SVN**: SVN是一种集中式版本控制系统,它允许用户跟踪...
### Linux 下安装 SVN 服务器及实现版本库同步到 Web 目录详解 #### 一、安装 Subversion (SVN) 在 Linux 系统中安装 SVN 服务器,首先需要确保系统中已经安装了必要的软件包。这里我们将使用 `yum` 包管理器来...
在Linux环境下安装Subversion(SVN)是一个常见的任务,尤其对于开发者和系统管理员而言,它是一种版本控制系统,用于管理源代码和其他文档的变更历史。以下将详细介绍如何在Linux上安装和配置SVN。 首先,我们需要...
### Linux下安装SVN知识点详解 #### 一、概述 Subversion(简称SVN)是一种分布式版本控制系统,广泛应用于软件开发和其他需要版本控制的场景。本文档将详细介绍如何在Linux环境下安装并配置SVN服务器。 #### 二...
### Linux环境下SVN服务端的安装与配置详解 #### 一、引言 Subversion (SVN) 是一种广泛使用的版本控制系统,适用于软件开发、网站维护等场景中的代码管理。在Linux环境中部署SVN服务器不仅可以方便地进行版本控制...
### Linux (CentOS 6.2) 下安装SVN服务 #### 一、概述 本文将详细介绍如何在Linux(CentOS 6.2)环境下安装SVN服务。SVN(Subversion)是一种分布式版本控制系统,广泛应用于软件开发过程中对源代码进行版本控制。...
在这个过程中,我们将详细讲解如何在Linux环境下安装SVN 1.5.4版本,这对于初学者来说是一个很好的起点。 首先,确保你的Linux系统是最新的。通过运行以下命令更新你的包列表: ```bash sudo apt-get update sudo ...
Linux 下安装 SVN 的过程涉及到多个步骤,主要包括安装 SVN 软件、创建 SVN 版本库、配置权限、启动 SVN 服务以及测试 SVN 服务。以下是详细的解释: 1. **安装 SVN**: 使用 `sudo apt-get install subversion` ...
这篇博文将指导你如何在Linux环境下安装和配置SVN。 首先,了解SVN的基本概念至关重要。SVN是Subversion的缩写,它允许开发团队协作并追踪文件的更改历史。通过SVN,用户可以保存文件的不同版本,回滚到以前的状态...
本文将详细介绍如何在Linux上下载、部署和安装svn。 首先,我们需要准备几个必要的关联包来确保安装过程顺利进行: 1. **apr-1.3.8.tar.gz**:这是Apache Portable Runtime( APR)的库,它为Apache HTTP服务器...