当前位置:首页 » 云服务器 » liunxsvn服务器搭建

liunxsvn服务器搭建

发布时间: 2025-02-11 00:15:31

‘壹’ 如何配置自己的linux svnserver服务器

通常,很多Linux发行版已经自带了svn软件,安装系统时候选择即可。因此,本文并不讲解如何安装svn相关软件,而是重点总结一下如果使用svnserve服务器来构建自己的代码仓库,并且允许别人远程访问。本文的整个内容参考了svn手册。

一、新建并初始化版本库
1.新建代码仓库
# svnadmin create /home/myrepos
这样,我们就在/home目录下新建了版本库myrepos。

2.初始化代码仓库
#mkdir -p code/{branches,tags,trunk}
按照svn手册上的建议,我们版本库的布局采用branches/tags/trunk这样的三个目录。然后可以将代码直接拷贝的trunk目录,也可以随后采用svn add的方式添加。

#svn import code file: ///home/myrepos
将我们构造好的版本库布局(以及代码,如果已经拷贝到trunk下的话)提交到版本库。由于这里我们是在本地操作,因此可以直接使用file协议方式提交。格式为:file:// + 版本库绝对的路径

OK,到这里我们已经构建了一个本地版本库,可以再本地使用svn ci的方法得到版本库的副本了。如果前面只是提交了版本库布局,而没有提交代码的话,则可以通过如下命令,提交版本代码:
#svn co file: ///home/myrepos/trunk repos
通常只从主线目录trunk下取出源码,放在了新建的repos目录。然后可以将源码拷贝到repos目录。
执行以下两条命令将代码添加的版本库。
#svn add *
#svn ci * -m "Committed codes"
首先需要将拷贝的代码加入到当前的副本中,然后将代码提交到版本库。

二、配置并启动svnserve
1. 配置svnserve
这一步主要完成远程用户访问版本的权限。
在版本库目录下有个conf目录:home/myrepos/conf,该目录包含三个文件:authz,passwd,svnserve.conf。
(1)svnserve.conf

此文件重点的设置内容如下:
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
其中,anon-acces s和auth-access分别代表设置匿名用户和授权用户的访问权限。read代表只读,write代表可读可写,还有一个none,代表禁止访问。如果不想让匿名用户访问的话,可以设置anon-access = none。
password-db为保存版本库的用户名和密码,通常为conf目录下的passwd文件。
authz-db指向的文件,主要用于将用户进行分组,并赋予不同的组不同的权限。譬如有多个目录时,设置某个组的用户只可以访问其中的那些目录。
(2)passwd
如前面介绍,这个文件的主要内容如下
[users]
harry = harrysecret
sally = sallyssecret
以上两行就是可以访问版本库的用户名和密码。格式为:user = passwd。
(3)authz
[groups]
# harry_and_sally = harry,sally

# [/foo/bar]
# harry = rw
# * =

# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
以上就是authz文件的格式。先给用户分组,然后分别设置每个组的工作目录以及权限等。
本文的讲解并未用到authz的配置。

2. 启动svnserve
#svnserve -d -r /home/
svnserve将以守护进程的方式运行。同时,通过-r选项指定了版本库的目录。这个目录可以是版本库的上级目录(/home),也可以是版本库的目录(/home/myrepos)。具体的区别会在后面讲到。当然,也可以不用-r指定。

三、远程访问svnserve。
假设版本服务器的地址为10.1.1.1,那么用户可以在远程linux端输入命令:
#svn checkout svn://10.1.1.1/myrepos myrepos
这样版本库的所有内容都被check出来,存放在当前目录myrepos下。这里相当于使用svn协议,不用搭建http服务器。

如果启动svnserve的时候,-r选项指定的是版本库的目录,譬如/home/myrepos,那么检出版本的时候,执行的命令为:
#svn checkout svn://10.1.1.1/ myrepos

如果启动svnserve是没有指定-r选项,则要输入版本库的绝对路径:
#svn checkout svn://10.1.1.1/home/myrepos myrepos

四、容易出现的问题
在访问svnserve时,遇到了不少的问题,大致总结一下:
1. 这一步最容易避免,一定要记得启动svnserve。
2. 记得要正确的修改配置文件svnserve.conf和passwd。
3. 保证版本库服务器没有配置限制远程访问svnserve的规则。有时在访问svn服务器的时候,会提示服务器积极拒绝链接。简单起见,可以看看iptables -L INPUT和iptables -L OUTPUT有没有限制访问的规则。
4. 要保证输入版本库的URL正确。

后记:

1. 版本库的初次导入可以采用多种方式:
(1)直接构建好版本库目录,并将源码拷贝的对应的位置,然后svn import即可;
(2)先用svn checkout取出版本,然后构建目录和源码,执行svn add 并且svn commit即可。
2. 导入或者提交文件类型的控制
svn客户端是可以配置忽略哪些些文件,比如说我们不想提交*.o之类的文件。那么可以通过设置svn:ignore或者global-ignore来进行过滤相关的文件。通常默认的情况就会过滤掉*.o, *.so,*.a等被svn认为是中间生成的文件。我本人使用的客服端不管是WIN的还是Linux的都是这种默认情况。
但是,如果有时基于某种需要,或者是导入一个别人之前维护的工程,里面有些*.so,*.a文件必须保留,那么如果在第一次import的时候全部导入呢?曾经问过有些朋友说,svn add或者svn import是可以直接把这种文件导入到版本库的。但是我个人进行测试的时候,确实导入不进去,除非你直接svn add这个文件,然后提交应该就可以了。
如果这样的文件比较多,而且比较分散,那么如何解决呢?看一下svn import和svn add这两个命令的帮助,都有--no-ignore选项。这个选项的功能就是执行相应动作的时候,不忽略任何文件。那么执行以下两条命令:
svn import [source] [repository] --no-ignore

svn add [source] --no-ignore
会自动将source目录下所有的内容全部import或者add。

因此,通过--no-ignore选项,可以满足提交一些特殊文件的需求。

3. 用一个旧版本的svnadmin创建的版本库,直接拷贝到另外一台svn版本比较高的PC上使用时,发现提示数据库版本不匹配。解决的方法:
(1)导出旧的版本库内容,包含版本信息
具体使用的命令为svnadmin mp, 详细使用方法参考手册。该命令的格式为:
svnadmin mp REPOS_PATH [-r LOWER[:UPPER]] [--incremental]
如果我将版本库完整的信息都倒出来的话,执行如下命令:
# svnadmin mp old_repos > repos.mp

默认版本库mp的时候是输出在终端的,通过重定下输出到repos.mp文件里面。该文件实际是文本文件。
(2)导入旧版本库的内容
在需要导入的位置,新建一个版本库
# svnadmin create new_repos
然后将repos.mp文件导入到新的版本库:
# svnadmin load new_repos < repos.mp
该命令成功执行完毕之后,新的版本库中已经包含了old_repos版本库中的所有版本内容。
svnadmin mp和svnadmin load命令都支持导入/导出某个指定revsion或者某个指定范围的所有revision。该部分后记参考了如下连接,在此表示感谢:
http://hi..com/primechen/blog/item/71a7a1dc2b981fe877c63841.html

‘贰’ linux下搭建的SVN,用户组无法检出新添加的目录,提示出错还有权限错误

错误提示的意思是无法连接到URL,那说明你的svn路径就是错的。
根据你的描述“版本库是home/svn/或者是home/svn/project”,那你的url就应该包含以上路径。
尝试在IP地址和/owner中间加上home/svn/或者是home/svn/project试下。
有问题再追问

‘叁’ 虚拟机中centos下搭建了SVN服务器客户端没有登陆窗口怎么解决

在访问的电脑上使用 telnet 192.168.2.98 3690
如果不行,查询一下防火墙,关闭,Selinux关闭。

访问的权限是在auhtz,passwd,svnserve.conf
决定的

有问题再贴出来。

‘肆’ linuxsvn配置文件linuxsvn配置

如何在客户端修改svn配置文件?

1.首先,假设你的电脑是win764位的,你要准备的东西:visualsvn-server-3.0.1-x64.msi和tortoisesvn-1.8.8.25755-x64-svn-1.8.10.msi2.安装完之后3.打开visualsvnservermanager,直接右键repositories,createnewrepository,输入repositoryname,假设输入的是testsvn,ok4.那么现在在repositories下就会有一个资源名称叫testsvn5.那么我们现在右键users,createuser,输入名称密码都是testsvn,ok,我们这就创建了一个叫testsvn的用户了,以后可以用它检入检出数据了6.现在我们要检出这个资源的东西,右键repositories下的testsvn,urltoclipboard,这样就选中了它的url了7.我们在c盘右键,选择svncheckout,在urlofrepository粘贴,ok8.经过以上步骤之后,你可以检出你的项目了,请尝试在里面新建修改文件提交就行了9.如果你要在eclipse里面使用也可以,因为你已经有了url和用户名密码10.如果我重装系统之后,资源是不是消失了?没关系,在菜单栏的操作(a)-properties里面设置你的repositoriesroot,这样,无论你怎么重装,都没有关系了,自己的svn,局域网的svn就这么配置好了。

nginx下如何配置svn才可以在外部访问?

允许外部访问不是由nginx来配置如果服务器处于公网,或DMZ区设置服务器上的防火墙即可使外网访问内网服务

svn服务器配置文件位置?

SVN服务器版本库有两种格式,一种为FSFS,一种为BDB

把文件上传到SVN版本库后,上传的文件不再以文件原来的格式存储,而是被svn以它自定义的格式压缩成版本库数据,存放在版本库中。

如果是FSFS格式,这些数据存放在版本库的db目录中,里面的revs和revprops分别存放着每次提交的差异数据和日志等信息

‘伍’ linuxsvn客户端使用方法介绍

本文将详细介绍linux下的svn客户端使用方法,需要的朋友可以参考下svnaddvalues/strings.xml//--添加
svnst//--查看状态
svnci//--提交svnci-m"svnci,permission"
1、将文件checkout到本地目录
svncheckoutpath(path是服务器上的目录)
例如:svncheckoutsvn://192.168.1.1/pro/domain
简写:svnco
2、往版本库中添加新的文件
svnaddfile
例如:svnaddtest.php(添加test.php)
svnadd*.php(添加当前目录下所有的php文件)
3、将改动的文件提交到版本库
svncommit-m"LogMessage"[-N][--no-unlock]PATH(如果选择了保持锁,就使用--no-unlock开关)
例如:svncommit-m"addtestfileformytest"test.php
简写:svnci
4、加锁/解锁
svnlock-m"LockMessage"[--force]PATH
例如:svnlock-m"locktestfile"test.php
svnunlockPATH
5、更新到某个版本
svnupdate-rmpath
例如:
svnupdate如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svnupdate-r200test.php(将版本库中的文件test.php还原到版本200)
svnupdatetest.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svnresolved,最后再提交commit)
简写:svnup
6、查看文件或者目录状态
1)svnstatuspath(目录下的文件和子目录的状态,正常状态不显示)
【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
2)svnstatus-vpath(显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svnstatus、svndiff和svnrevert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svnst
7、删除文件
svndeletepath-m"deletetestfle"
例如:svndeletesvn://192.168.1.1/pro/domain/test.php-m"deletetestfile"
或者直接svndeletetest.php然后再svnci-m'deletetestfile‘,推荐使用这种
简写:svn(del,remove,rm)
8、查看日志
svnlogpath
例如:svnlogtest.php显示这个文件的所有修改记录,及其版本号的变化
9、查看文件详细信息
svninfopath
例如:svninfotest.php
10、比较差异
svndiffpath(将修改的文件与基础版本比较)
例如:svndifftest.php
svndiff-rm:npath(对版本m和版本n比较差异)
例如:svndiff-r200:201test.php
简写:svndi
11、将两个版本之间的差异合并到当前文件
svnmerge-rm:npath
例如:svnmerge-r200:205test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)
12、SVN帮助
svnhelp
svnhelpci
------------------------------------------------------------------------------
以上是常用命令,下面写几个不经常用的
------------------------------------------------------------------------------
13、版本库下的文件和目录列表
svnlistpath
显示path目录下的所有属于版本库的文件和目录
简写:svnls
14、创建纳入版本控制下的新目录
svnmkdir:创建纳入版本控制下的新目录。
用法:1、mkdirPATH...
2、mkdirURL...
创建版本控制的目录。
1、每一个以工作副本PATH指定的目录,都会创建在本地端,并且加入新增
调度,以待下一次的提交。
2、每个以URL指定的目录,都会透过立即提交于仓库中创建。
在这两个情况下,所有的中间目录都必须事先存在。
15、恢复本地修改
svnrevert:恢复原始未改变的工作副本文件(恢复大部份的本地修改)。revert:
用法:revertPATH...
注意:本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复
被删除的目录
16、代码库URL变更
svnswitch(sw):更新工作副本至不同的URL。
用法:1、switchURL[PATH]
2、switch--relocateFROMTO[PATH...]
1、更新你的工作副本,映射到一个新的URL,其行为跟“svnupdate”很像,也会将
服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的
方法。
2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动
(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用
这个命令更新工作副本与仓库的对应关系。
17、解决冲突
svnresolved:移除工作副本的目录或文件的“冲突”状态。
用法:resolvedPATH...
注意:本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的
相关文件,然后让PATH可以再次提交。

‘陆’ linux svn服务搭建问题 Could not read status line: connection was closed by server

没遇到过这个问题,特意网上查了一下,发现及提到关闭绝漏防火墙、重启后正常,有稀里糊涂就正常的,有https错输成http导致此问题,五花八门,都试试吧。

其实我建议用Collabnet SVN Edge安装包,本身就内置蚂宏握了Apache,安装相对比较省心,按照安装包中附带的安装步骤,很顺利就装好了,而且最大的好处闷庆是将来管理SVN服务器方便,有自带的Web版控制台。

热点内容
c反编译工具re 发布:2025-02-11 10:26:37 浏览:673
光遇安卓怎么能加到ios 发布:2025-02-11 10:20:16 浏览:690
优势存储 发布:2025-02-11 10:20:14 浏览:362
光猫wifi怎么改密码 发布:2025-02-11 10:17:51 浏览:167
web和服务器怎么写通讯 发布:2025-02-11 10:08:06 浏览:979
安卓升级后手机变卡怎么办 发布:2025-02-11 09:58:01 浏览:113
土工数据库 发布:2025-02-11 09:48:55 浏览:963
libxml2编译 发布:2025-02-11 09:48:45 浏览:745
java类的复制 发布:2025-02-11 09:48:45 浏览:601
127小时ftp 发布:2025-02-11 09:47:10 浏览:852