LINUX SVN 服务器安装配置文档格式.docx

上传人:b****2 文档编号:463353 上传时间:2023-04-29 格式:DOCX 页数:29 大小:769.74KB
下载 相关 举报
LINUX SVN 服务器安装配置文档格式.docx_第1页
第1页 / 共29页
LINUX SVN 服务器安装配置文档格式.docx_第2页
第2页 / 共29页
LINUX SVN 服务器安装配置文档格式.docx_第3页
第3页 / 共29页
LINUX SVN 服务器安装配置文档格式.docx_第4页
第4页 / 共29页
LINUX SVN 服务器安装配置文档格式.docx_第5页
第5页 / 共29页
LINUX SVN 服务器安装配置文档格式.docx_第6页
第6页 / 共29页
LINUX SVN 服务器安装配置文档格式.docx_第7页
第7页 / 共29页
LINUX SVN 服务器安装配置文档格式.docx_第8页
第8页 / 共29页
LINUX SVN 服务器安装配置文档格式.docx_第9页
第9页 / 共29页
LINUX SVN 服务器安装配置文档格式.docx_第10页
第10页 / 共29页
LINUX SVN 服务器安装配置文档格式.docx_第11页
第11页 / 共29页
LINUX SVN 服务器安装配置文档格式.docx_第12页
第12页 / 共29页
LINUX SVN 服务器安装配置文档格式.docx_第13页
第13页 / 共29页
LINUX SVN 服务器安装配置文档格式.docx_第14页
第14页 / 共29页
LINUX SVN 服务器安装配置文档格式.docx_第15页
第15页 / 共29页
LINUX SVN 服务器安装配置文档格式.docx_第16页
第16页 / 共29页
LINUX SVN 服务器安装配置文档格式.docx_第17页
第17页 / 共29页
LINUX SVN 服务器安装配置文档格式.docx_第18页
第18页 / 共29页
LINUX SVN 服务器安装配置文档格式.docx_第19页
第19页 / 共29页
LINUX SVN 服务器安装配置文档格式.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

LINUX SVN 服务器安装配置文档格式.docx

《LINUX SVN 服务器安装配置文档格式.docx》由会员分享,可在线阅读,更多相关《LINUX SVN 服务器安装配置文档格式.docx(29页珍藏版)》请在冰点文库上搜索。

LINUX SVN 服务器安装配置文档格式.docx

team2组有只读权限。

修改svnserve.conf文件

visvnserve.conf

打开下面的几个注释:

anon-access=read#匿名用户可读

auth-access=write#授权用户可写

password-db=passwd#使用哪个文件作为账号文件

authz-db=authz#使用哪个文件作为权限文件

realm=MyFirstRepository#认证空间名,版本库所在目录

启动svn版本库

svnserve-d-r/var/svn/

在windows上测试

新建一个测试文件夹,在该文件夹下右键选择SVNcheckout如下图(要事先安装TortoiseSVN):

填写SVN的地址,如下图:

输入密码,如下图:

在linux上测试

[root@V2-1~]#svncheckoutsvn:

//218.24.23.240/repo0

Authenticationrealm:

<

svn:

//218.24.23.240:

3690>

MyFirstRepository

Passwordfor'

root'

:

#先输入本机root密码

Username:

chai#输入svn用户名

chai'

#输入svn密码

svn管理的版本文件

SVN是基于关系数据库的(BerkleyDB)或一系列二进制文件的(FS_FS)。

一方面这解决了许多问题(例如,并行读写共享文件)以及添加了许多新功能(例如运行时的事务特性。

)。

然而另一方面,数据存储由此变得不透明。

基于以上所以你在服务上是找不到你提交的原始文件,因为svn每次提交做的都是原子提交,所以你在服务器上能找到的都是一些碎片文件。

SVNweb管理工具svnadmin

iF.SVNAdmin(GUI的方式管理SVN,包括:

repos管理、

用户管理、用户组管理、权限管理等多种功能,底层也很简单,是通过修改Subversionauthorization和

userauthorization两个文件完成其管理功能(现不支持数据库userauthorization的那种),整体使用下来给

我的感觉就是两个字简单,从安装到配置到使用到架构,都很简单。

安装过程如下:

1.安装apache

yum-yinstallhttpdmod_dav_svnsubversion

2.在apache下配置svn

vim/etc/httpd/conf.d/subversion.conf

LoadModuledav_svn_module 

modules/mod_dav_svn.so

LoadModuleauthz_svn_module 

modules/mod_authz_svn.so

<

locationsvn="

"

>

DAVsvn

SVNParentPath/var/svn

#Limitwritepermissiontolistofvalidusers.

#<

limitexceptget="

options="

propfind="

report="

#RequireSSLconnectionforpasswordprotection.

#SSLRequireSSL

AuthTypeBasic

AuthName"

AuthorizationRealm"

#AuthUserFile/svndata/test/conf/passwdfile

AuthUserFile/etc/subversion/passwd

AuthzSVNAccessFile/etc/subversion/auth

Requirevalid-user

/limitexcept>

/location>

其中/etc/subversion/passwd和/etc/subversion/auth是web管理界面下用户名和密码的集中存放位置,

在svn每个项目中的auth,passwd和svnserver.conf中就不再进行配置。

/var/svn是svn项目目录,所有的项目将存放在此目录下。

因此我们需要创建相关文件和目录:

mkdir-p/var/svn

chown-Rapache.apache/var/svn

创建认证文件和权限文件

touch/etc/subversion/passwd/etc/subversion/auth

vi/etc/subversion/passwd

vi/etc/subversion/auth

安装php

由于iF.SVNAdmin使用php写的,因此我们需要安装php

yuminstallphp-y

下载并配置svnadmin

#wget

#unzipsvnadmin-1.6.2.zip

#cp-riF.SVNAdmin-stable-1.6.2//var/www/html/svnadmin

#cd/var/www/html

#chown-Rapache.apachesvnadmin

#cd/var/www/html/svnadmin

#chmod-R777data

重启apache 

服务svnadmin

servicehttpdrestart

启动webserver服务后,

浏览器地址输入http:

//servername/svnadmin出现配置界面,

输入下图中配置信息,输入每个配置信息可以点击旁边的Test测试是否输入正确,最后保存配置

保存后,会提示默认的账户为admin/admin。

登陆后我们可以在“Repositories”下“add”,添加项目目录;

在"

Users"

下添加用户;

在“Access-Paths”下关联对应项目的用户,并分配相关读写权限。

界面截屏

svn命令在linux下的使用

1、将文件checkout到本地目录

svncheckout 

path(path是服务器上的目录)

例如:

svncheckoutsvn:

//192.168.1.1/pro/domain

简写:

svnco

2、往版本库中添加新的文件

svn 

add 

file

test.php(添加test.php)

svn 

*.php(添加当前目录下所有的php文件)

3、将改动的文件提交到版本库

svncommit 

-m 

LogMessage"

[-N] 

[--no-unlock] 

PATH

(如果选择了保持锁,就使用--no-unlock开关)

svncommit-m 

addtestfileformytest"

test.php

svnci

4、加锁/解锁

svnlock 

LockMessage"

[--force] 

svnlock-m 

locktestfile"

svnunlock 

5、更新到某个版本

svnupdate-r 

mpath

svnupdate后接本地目录。

更新的是本地目录及子目录。

如:

svnupdaterepo0

200 

test.php(将版本库中的文件test.php还原到版本200)

svnupdatetest.php(更新,于版本库同步。

如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svnresolved,最后再提交commit)

svnup

6、查看文件或者目录状态

1)svnstatus 

path

(目录下的文件和子目录的状态,正常状态不显示)

【?

不在svn的控制中;

M:

内容被修改;

C:

发生冲突;

A:

预定加入到版本库;

K:

被锁定】

2)svnstatus-v 

(显示文件和子目录状态)如:

#svnstatus-vrepo0

第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。

注:

svnstatus、svndiff和svnrevert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。

简写:

svnst

7、删除文件

svndelete 

path-m 

deletetestfle"

svndeletesvn:

//192.168.1.1/pro/domain/test.php-m 

deletetestfile"

或者直接svndeletetest.php然后再svnci-m'

deletetestfile‘,推荐使用这种

svn(del,remove,rm)

8、查看日志

svnlog 

svnlogtest.php显示这个文件的所有修改记录,及其版本号的变化

9、查看文件详细信息

svninfo 

svninfotest.php

10、比较差异

svndiff 

path(将修改的文件与基础版本比较)

svndifftest.php

-rm:

npath(对版本m和版本n比较差异)

svndiff-r200:

201test.php

svndi

11、将两个版本之间的差异合并到当前文件

svnmerge-r 

m:

npath

200:

205 

test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)

12、SVN帮助

svnhelp

svnhelpci

------------------------------------------------------------------------------

以上是常用命令,下面写几个不经常用的

13、版本库下的文件和目录列表

svnlist 

显示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可以再次提交。

18、输出指定文件或URL的内容。

cat 

目标[@版本]...如果指定了版本,将从指定的版本开始查找。

svncat-rPREVfilename>

filename(PREV是上一版本,也可以写具体版本号,这样输出结果是可以提交的)

从windowsVisualSVN迁移到linuxsvn

1、运行cmd,在命令行导出一个代码库

svnadmindumpD:

\Repositories\Android>

d:

\svnbak\Android.dump

2、将备份文件上传到linuxsvn服务器

3、在svnadmin中添加一个代码库http:

//192.168.1.221/svnadmin/repositorylist.php;

输入对应的代码仓库名,不创建标准结构,否则导入时会产生冲突。

4、在linuxsvn服务器上使用svnadminload导入

svnadminload/var/svn/Android<

/var/svnbak/Android.dump

5、按windows下的权限配置linux下svn的权限。

用户组和权限配置文件:

/etc/subversion/auth

用户配置文件:

/etc/subversion/passwd

TortoiseSVN使用教程

TortoiseSVN中分支和合并详解

使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影响,最主要的原因是,自己对分支的目的和合并的方法不甚了解,这才是硬伤。

最近由于适配机型的需要(本人从事手机客户端的开发),需要经常接触分支和合并两项工作,突然发现这玩意整不明白很难开展工作,遂这两天着重研究了一下,有点收获,怕以后忘了,故趁着余温尚在赶紧写下来,好记性不如烂笔头嘛。

下文的实践主要是参考了TortoiseSVN的帮助文档和Subversion的在线文档,Subversion的在线文档:

话说我公司现在的源代码管理挺乱的,svn目录并没有采取标准的source/branches、source/trunk结构,主线和分支放得到处都是,release版本也并没有当成tag处理,而是当成branch来管理,经常还要在release版本上改来改去。

先说说什么是branch。

按照Subversion的说法,一个branch是某个developmentline(通常是主线也即trunk)的一个拷贝,见下图:

branch存在的意义在于,在不干扰trunk的情况下,和trunk并行开发,待开发结束后合并回trunk中,在branch和trunk各自开发的过程中,他们都可以不断地提交自己的修改,从而使得每次修改在repository中都有记录。

设想以下场景,如果你的项目需要开发一个新功能,而该功能可能会修改项目中的绝大多数文件,而与此同时,你的另一位同事正在进行bugfix,如果你的新功能不在branch中开发而直接在trunk中开发,那么你极有可能影响另一位同事的bugfix,他/她在bug修复中可能会遇到各种各样的问题,因为你的频繁提交代码引入了过多的不稳定因素。

你可能会说,那我在开发的过程中不提交不就行了,等到我全部开发结束我再提交,是,你可以这么做,那还要版本控制干什么呢?

也许等到你最后提交代码的时候(也许一周,也许两周?

),你会发现有一大堆conflict等着你resolve。

那么,正确的做法是什么?

使用branch,从trunk创建branch,然后在你的branch上开发,开发完成后再合并到trunk中。

关于branch先讲到这里,下面说说什么叫做合并。

很好理解,当branch开发完成后(包括必要的测试),将branch中的修改同步到trunk中,这个过程有可能包括修改文件、增加文件、删除文件等等。

说到这里,貌似本文差不多可以结束了,不就是分支和合并么?

只要再简单地说说如何建立分支和如何合并就可以收尾了,可能只需两个命令,也可能只需鼠标点几下然后键盘敲两下即可。

其实事情远非这么简单,爱动脑筋的同学可能会问了,将branch的改动merge到trunk的时候,和上文说的直接在trunk中全部开发完然后提交有何区别?

你最后还不是要处理一大堆conflict?

这个问题问得非常好,其实这正是本文的重点:

branch和trunk在并行开发的过程中如何感知对方,branch如何才能在开发过程中不会和trunk越走越远,导致最后无法合并?

试想一下,如果在你开发branch的过程中,trunk中的某个类文件已经被删除了(这可能是另外一个家伙在另一个branch上开发了两周后才合并到trunk的),而你竟然在这个类文件上做了大量修改,试问你到最后合并回trunk的时候该有多蛋疼?

解决这一问题的唯一手段是,branch要不停地和trunk保持同步,你要及时地知道trunk都做了什么修改,这些修改是否会影响你正在开发的新功能,如果需要,你必须及时调整branch的代码,使之能与trunk“兼容”。

那么如何让branch和trunk保持同步?

合并,从trunk合并到branch,你没听错,是从trunk合并到branch。

关于TortoiseSVN的合并,有几点需要注意:

∙TortoiseSVN的合并发生在本地,也即你的workingcopy中,你无需过多担心会对repository中的代码造成影响

∙不管是从trunk合并到branch还是最终从branch合并回trunk,在每次合并前最好先update,然后将本地的修改先全部commit,保护好现场,万一合并不理想随时都可以revert

∙合并完成后看是否能正确编译,然后测试验证,最后将合并后的改动提交到repository

下面我将stepbystep地演示如何一次完整的branching和merging,包括创建分支、分支开发、分支和主线同步,分支合并到主线的全过程,甚至包括如何在本地创建一个测试用的repository。

首先需要安装TortoiseSVN,我安装的版本是:

TortoiseSVN1.6.15,Build21041-32Bit,2011/03/2318:

00:

27

1、本地Repository的创建

repository的创建很简单,假设我要在D:

\TortoiseSVN\TestRepository目录中创建repository,只需右键TestRepository目录,依次选择"

TortoiseSVN"

->

"

Createrepositoryhere"

便完成了repository的创建。

2、Checkout

假设要checkout到D:

\TortoiseSVN\TestSVN,同样很简单,在D:

\TortoiseSVN目录下创建TestSVN目录,然后在该目录上右键,选择"

SVNCheckout..."

,在弹出的窗口中的"

URLofrepository"

中填入"

file:

///D:

/TortoiseSVN/TestRepository"

,其他默认即可,最后点击ok。

3、trunk创建新项目MyProject

相当简单就不赘述了,只列出本次操作所作出的修改:

4、创建branch

在/trunk/MyProject目录上右键,依次选择"

Branch/tag..."

,在弹出窗口的"

ToURL"

中填入分支的地址,在这里目标revision选择HEADrevision,如下图所示,添加log后点击ok分支便建立了。

这个操作速度非常快,新建的branch在repository中其实只是一个指向trunk某个revision的软连接而已,并没有

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2