SVN配置方法.docx

上传人:b****4 文档编号:12071799 上传时间:2023-04-16 格式:DOCX 页数:15 大小:23.96KB
下载 相关 举报
SVN配置方法.docx_第1页
第1页 / 共15页
SVN配置方法.docx_第2页
第2页 / 共15页
SVN配置方法.docx_第3页
第3页 / 共15页
SVN配置方法.docx_第4页
第4页 / 共15页
SVN配置方法.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

SVN配置方法.docx

《SVN配置方法.docx》由会员分享,可在线阅读,更多相关《SVN配置方法.docx(15页珍藏版)》请在冰豆网上搜索。

SVN配置方法.docx

SVN配置方法

SVN配置方法

软件工程版本控制领域,SVN已经逐步替代CVS, 今天配置SVN因为一些细节记不太清, 所以baidu了一下, 发现许多人所说的配置过程存在疏漏或错误, 因此我很罗嗦的记录了一下——绝对够罗嗦, 为的就是哪怕你从来没用过类似软件, 也能做到一次配置成功.(雪人注:

 这里只考虑常见的局域网内使用, 因此没有使用SSH等.)SVN相关软件下载:

1.svn的Win32版本:

 http:

//subversion.tigris.org/servlets/ProjectDocumentList?

folderID=912.

2. svnservice

3.TortoiseSVN及简体中文语言安装包:

 http:

//tortoisesvn.tigris.org/download.html搭建SVN服务器端:

1. 解压缩svn到一个目录, 例如c:

\svn

2. 解压缩svnservice的压缩包, 将svnservice.exe放入c:

\svn\bin

3. 安装TortoiseSVN, 安装完毕时会提示重新启动计算机, 重启完毕后安装简体中文语言包, 然后在随便一个目录右击, 就会发现多出了一些SVN相关菜单, 选择其中的TortoiseSVN,再选择子菜单”Settings”, 设置Language为”中文(简体)”

4. 打开”我的电脑”, 建立一个存放svn信息的目录, 例如c:

\svnhome, 然后返回在c盘, 右击这个svnhome目录, 在出现的菜单中选择TortoiseSVN, 再选择子菜单”在此创建文件库”, 选择fsfs方式即可 (雪人注:

 这里选择创建文件库实际上就相当于让TortoiseSVN代替你进行了svnadmincreatec:

\svnhome的操作)

5. 在dos控制台状态下cdc:

\svn\bin 然后svnservice-install-d-rc:

\svnhome 再netstartsvnservice来将其作为服务运行, 建议你再到控制面板-管理工具-服务中找到SVNService, 右击选择”属性”, 再将其启动类型设置为”自动”

6. 打开c:

\svnhome, 你会发现已经多了一些目录和文件, 打开conf子目录, 打开svnserve.conf文件, 这里行前凡是有#的都等于是被注释忽略了, 你可以把#去掉让那一行生效, 或者自己新添加行. 里面的英文注释已经详细说明了各种设置的含义, 最后你设置[general]小节中行前没有#号的内容为:

anon-access=none

auth-access=write

password-db=passwd

含义是:

未验证用户无任何权限 (如果把none修改为read就是给予读权限)

已验证用户给予写权限 (当然也能读)

密码数据存放到passwd文件中

然后打开同目录的passwd文件来设置帐户:

同样, 设置[users]小节中行前没有#号的内容, 例如:

snowman=abc123

含义是:

用户snowman的密码为abc123

6. 打开”我的电脑”, 在你需要进行版本控制的目录上右击, 选择TortoiseSVN, 再选择子菜单”导入…”, 设置”文件库url”为svn:

//localhost 点确定后就会提示文件正在导入.(雪人注:

 这里是svn文件库与svn服务是同一台计算机的情况, 所以可用localhost, 其它机器如果要访问svn服务, 应该用svn:

//svn服务器的IP地址, 例如svn:

//10.0.0.52)

至此,SVN服务器配置完成

客户端配置:

1. 没安装TortoiseSVN的计算机先安装它并重启计算机.(雪人注:

 具体步骤参照前面搭建服务器端的第3步)

2. 创建一个准备用来存放版本控制工程的目录, 例如d:

\project, 然后在”我的电脑”中右击这个目录, 选择”SVN取出…”, 设置”文件库url”为svn:

//svn服务器的IP地址, 接下来会问你用户名和帐号, 你就填写前面搭建服务器端所设置的用户snowman密码abc123

(文件库url可参照前面搭建服务器端第6步的注解)

点确定后就会提示文件正在取出到d:

\project

至此,SVN客户端配置完成, 你会看到d:

\project及其下面的文件都被标记了绿色对勾

客户端的简单日常使用:

1. 要取得工程的当前的最新版本, 右击d:

\project, 选择”SVN更新”

2. 你更改工程后, 要将你的修改更新到SVN, 右击d:

\project, 选择”SVN提交”(谨慎的话请先更新到SVN最新版本后再提交)

其实就是将  svnservice  文件拷贝到你已经装好的TortoiseSVN目录下,然后运行上述的那些命令后(svnservice-install-d-rc:

\svnhome),去控制面板-〉管理工具-〉服务,既可以看到svn的服务了,启动即可

SVN安装与启动服务

2010-02-2211:

25

[转]一、安装

首先下载一个SubVersion,和TortoiseSVN。

前者是svn的服务器端,后者是svn的客户端。

注意服务器端得版本和客户端得版本一定要一致才可以,否则会出现错误:

Error*期望文件系统格式“2”;发现格式“3”

使用subversion过程中出现Error*期望文件系统格式“2”;发现格式“3”错误,这是服务器程序subversion和客户端程序TortoiseSVN版本号不一致的。

删除subversion和原有的版本库,用相同的版本重新安装subversion和TortoiseSVN,问题即可解决。

下面我以Subversion1.4.5和TortoiseSVN1.4.5为例

二、建库

找一个地方见一个文件夹,这个文件夹是放你的项目的。

我们把它称为库。

以下以src为例。

然后再这个文件夹上右键,选择Createrepositoryhere或者在命令行里执行D:

\ApplicationSetUp\Subversion\bin>svnadmincreateE:

\src

命令行要在安装目录中bin文件夹下执行。

三、设置用户名和密码

设置用户名和密码是成员之间修改项目后伤处使用的。

下面我们就来设置一下用户名和密码吧。

在刚才建的库文件夹下的conf文件夹里找到一个叫svnserve.conf的文件。

用一个文本编辑器将它打开。

然后找到##password-db=passwd这行代码。

将这行代码签名的#号全部去掉,并且确保顶格不存在空格。

#表示注释,去掉#和空格表示启用密保文件。

然后再conf文件夹下找到一个叫password的文件,同样用文本编辑器打开,然后看到如下代码:

[users]

#harry=harryssecret

#sally=sallyssecret

这两行是两个用户名和密码,等号前面是用户名,后面是密码,一行是一个用户。

我们可以直接在这下面追加我们自己设置的用户名,也可以把他删除重写。

例如:

[users]

jane=123456

spring=789456

写好之后保存就可以了。

四、启动服务

同样是在安装目录下的bin文件下执行D:

\ApplicationSetUp\Subversion\bin>svnserve-d-rE:

\src,效果如下

这样服务就启动成功了。

这个命令窗口不可以关,如果关闭的话服务也就关闭了。

这样很不方便,解决的办法就是将服务添加到windows系统服务里面。

具体操作如下:

C:

\>sccreatesvnbinpath="D:

\ApplicationSetUp\Subversion\bin\svnserve.exe--service-rc:

\svnroot"displayname="SubversionServer"depend=tcpipstart=auto

运行这一行命令,两个路径分别是svnserve.exe的地址和库的地址,其中svnservcer.exe就是刚才我们启动服务用的那个,所以写那个路径就好了。

start=auto,每次开机自动运行;想手动的话,netstartsvn或者netstopsvn切换开关。

服务添加成功后结果是:

这样我们的服务就启动成功了,现在把命令窗口关闭也没有关系了。

五、导入项目

找到自己的项目,然后在项目上右键。

Import……,出现如图窗口:

上面的是我要导入的库德地址:

svn:

//ip/库文件夹名称。

建议不要勾选左下角的复选框。

ignored是忽略的意思,比如java的class包他是经常变化的,成员之间没有交换的必要。

就可以将它忽略。

还有一些私人的配置文件之类的。

不然每个人都上传自己的配置文件,导致每个人在每次更新后,系统都跑不动。

直接点击确定就可以上传了。

 

 

下面就是每个成员机器上都装上TortoiseSVN,访问服务器上的项目就可以了。

自己建一个存放项目的文件夹,然后右键checkout:

上面的地址是服务器地址。

下面的地址是下载下来存放到哪里,点击ok就可以从服务器上当下来了。

建议每次编辑项目前都update一次,表示得到最新版本。

编辑完之后再commit,这样用svn管理项目就省了非常多的时间。

好了,就写到这里。

希望对大家有帮助。

svn备份和还原

除去最常用的update,checkout,commit等操作,最常见的就是对svn版本库的备份和还原。

 备份策略

svn备份一般采用三种方式:

1)svnadmindump

2)svnadminhotcopy

3)svnsync.

注意,svn备份不宜采用普通的文件拷贝方式(除非你备份的时候将库暂停),如copy命令、rsync命令。

笔者曾经用rsync命令来做增量和全量备份,在季度备份检查审计中,发现备份出来的库大部分都不可用,因此最好是用svn本身提供的功能来进行备份。

优缺点分析:

==============

第一种svnadmindump是官方推荐的备份方式,优点是比较灵活,可以全量备份也可以增量备份,并提供了版本恢复机制。

缺点是:

如果版本比较大,如版本数增长到数万、数十万,那么dump的过程将非常慢;备份耗时,恢复更耗时;不利于快速进行灾难恢复。

个人建议在版本数比较小的情况下使用这种备份方式。

第二种svnadminhotcopy原设计目的估计不是用来备份的,只能进行全量拷贝,不能进行增量备份;

优点是:

备份过程较快,灾难恢复也很快;如果备份机上已经搭建了svn服务,甚至不需要恢复,只需要进行简单配置即可切换到备份库上工作。

缺点是:

比较耗费硬盘,需要有较大的硬盘支持(俺的备份机有1TB空间,呵呵)。

第三种svnsync实际上是制作2个镜像库,当一个坏了的时候,可以迅速切换到另一个。

不过,必须svn1.4版本以上才支持这个功能。

优点是:

当制作成2个镜像库的时候起到双机实时备份的作用;

缺点是:

当作为2个镜像库使用时,没办法做到“想完全抛弃今天的修改恢复到昨晚的样子”;而当作为普通备份机制每日备份时,操作又较前2种方法麻烦。

 

备份的命令写道

全备份:

使用svnadmindump或svnadminhotcopy或svnsync来做,

hotcopy:

svnadminhotcopypath/to/repositorypath/to/backup–clean-logs

dump:

svnadmindump版本库路径及名称–revision导出的版本号>导出的命名

增量备份:

使用svnadmindump的–incremental选项来实现

svnadmindump版本库路径及名称–revision上次导出的版本号:

到本次要导出到的版本号–incremental>导出的命名

一个技巧:

如果你有一个较大的Subsersion版本库而你又想用最少的空间来将它备份下来,用这个命令(请将/repo替换成你的版本库路径)吧:

svnadmindump–deltas/repo|bzip2|teedump.bz2|md5sum>dump.md5

分步解释:

最重要的一步是-deltas,将消耗更多的CPU资源,但拥有更有效的差异存储办法。

bzip2压缩方案比gzip慢,但换来的更好的压缩率。

更有趣的是,tee方法将压缩的数据流转向到文件dump.bz2,同时将其输出到标准输出,后者有转向给了MD5摘要计算工具。

 

还原命令写道

还原版本:

svnadminload要恢复的版本库路径及名称<导出的命名

svnadminhotcopypath/to/repositorypath/to/backup–clean-logs

 

  我的svn是搭建在windows上的,用visualsvn挺方便,参考网上的bat备份svn的命令,我写了一个备份和还原全部版本库的bat脚本,

  备份,需要把脚本放在版本库根目录下运行,例如dumpall.bat, 不指定参数则备份到当前目录下,否则备份到指定目录:

 

Bat代码

1.@ECHO OFF  

2.SET DUMPTO_DIR="."  

3.if  not "%1" == ""  (  

4.    echo Back up all to %1  

5.    SET DUMPTO_DIR=%1  

6.)         

7.  

8.SET VAR_DATE=%DATE:

~0,4%%DATE:

~5,2%%DATE:

~8,2%  

9.dir /B /AD > DIRS  

10.  

11.IF EXIST DUMP_FILES (  

12.  DEL /Q DUMP_FILES  

13.)  

14.FOR /F %%i IN (DIRS) DO (  

15.  SET REPOS_NAME=%%i  

16.  CALL :

DUMP_REPOS  

17.)  

18.SET REPOS_NAME=  

19.  

20.ECHO.  

21.IF EXIST %DUMPTO_DIR%\Repos_%VAR_DATE%.zip (  

22.    echo Delete existing compressed dump file  

23.    del %DUMPTO_DIR%\Repos_%VAR_DATE%.zip  

24.)  

25.ECHO Compressing dump files...  

26.zip  -j %DUMPTO_DIR%\Repos_%VAR_DATE%.zip %DUMPTO_DIR%\*.bin  

27.  

28.ECHO Delete dump files...  

29.FOR /F %%i IN (DUMP_FILES) DO (  

30.  DEL /Q %DUMPTO_DIR%\%%i  

31.)  

32.  

33.DEL /Q DIRS  

34.DEL /Q DUMP_FILES  

35.SET DUMPTO_DIR=   

36.  

37.ECHO Successed.  

38.GOTO :

EOF  

39.  

40.:

:

==== Functions ====  

41.:

DUMP_REPOS  

42.SET DUMP_FILE=%REPOS_NAME%.bin  

43.ECHO Dumping repository ^"%REPOS_NAME%^" ...  

44.svnadmin dump ^"%REPOS_NAME%^" -q > %DUMPTO_DIR%/%DUMP_FILE%  

45.IF %errorlevel%==0 (  

46.  ECHO %DUMP_FILE% >> DUMP_FILES  

47.) ELSE (  

48.  DEL /Q %DUMP_FILE%  

49.  ECHO Dump ^"%REPOS_NAME%^" failed.  

50.)  

51.SET DUMP_FILE=  

52.  

53.ECHO.  

@ECHOOFF

SETDUMPTO_DIR="."

ifnot"%1"==""(

echoBackupallto%1

SETDUMPTO_DIR=%1

SETVAR_DATE=%DATE:

~0,4%%DATE:

~5,2%%DATE:

~8,2%

dir/B/AD>DIRS

IFEXISTDUMP_FILES(

DEL/QDUMP_FILES

FOR/F%%iIN(DIRS)DO(

SETREPOS_NAME=%%i

CALL:

DUMP_REPOS

SETREPOS_NAME=

ECHO.

IFEXIST%DUMPTO_DIR%\Repos_%VAR_DATE%.zip(

echoDeleteexistingcompresseddumpfile

del%DUMPTO_DIR%\Repos_%VAR_DATE%.zip

ECHOCompressingdumpfiles...

zip-j%DUMPTO_DIR%\Repos_%VAR_DATE%.zip%DUMPTO_DIR%\*.bin

ECHODeletedumpfiles...

FOR/F%%iIN(DUMP_FILES)DO(

DEL/Q%DUMPTO_DIR%\%%i

DEL/QDIRS

DEL/QDUMP_FILES

SETDUMPTO_DIR=

ECHOSuccessed.

GOTO:

EOF

:

:

====Functions====

:

DUMP_REPOS

SETDUMP_FILE=%REPOS_NAME%.bin

ECHODumpingrepository^"%REPOS_NAME%^"...

svnadmindump^"%REPOS_NAME%^"-q>%DUMPTO_DIR%/%DUMP_FILE%

IF%errorlevel%==0(

ECHO%DUMP_FILE%>>DUMP_FILES

)ELSE(

DEL/Q%DUMP_FILE%

ECHODump^"%REPOS_NAME%^"failed.

SETDUMP_FILE=

ECHO.

 

  还原:

cd到备份目录,再运行,例如loadall.bat,如果不指定参数,则认为当前目录就是备份的目录,否则从指定目录进行还原。

另外,如果是备份到了压缩包,需要先解压。

 

Bat代码

1.SET VAR_IS_EMPTY_DIR=TRUE  

2.  

3.SET LOAD_DIR=".";  

4.IF NOT "%1"=="" (  

5. SET LOAD_DIR=%1  

6.)  

7.  

8.echo %LOAD_DIR%  

9.  

10.SET VAR_IS_EMPTY_DIR=  

11.dir /B /A-D %LOAD_DIR%\*.bin > DUMP_FILES  

12.IF "%errorlevel%"=="0" (  

13.  ECHO Finded dump file.  

14.) ELSE (  

15.  ECHO Error :

 Can not find dump file.  

16.  DEL DUMP_FILES  

17.  GOTO :

EOF  

18.)  

19.FOR /F %%i IN (DUMP_FILES) DO (  

20.  SET REPOS_FILE=%%i  

21.  CALL :

LOAD_REPOS  

22.)  

23.SET REPOS_FILE=  

24.DEL /Q DUMP_FILES  

25.ECHO Successed.  

26.GOTO :

EOF  

27.:

:

==== Functions ====  

28.:

LOAD_REPOS  

29.SET REPOS_NAME=%REPOS_FILE:

~0,-4%  

30.mkdir %REPOS_NAME%  

31.ECHO %REPOS_NAME%  

32.ECHO Loading repository ^"%REPOS_NAME%^" ...  

33.svnadmin create %REPOS_NAME%  

34.svnadmin load -q %cd%\%REPOS_NAME% < %LOAD_DIR%/%REPOS_FILE%  

35.IF %errorlevel%==0 (  

36.  ECHO %DUMP_FILE% >> DUMP_FILES  

37.) ELSE (  

38.  RMDIR /Q %REPOS_NAME%  

39.  ECHO Load ^"%REPOS_NAME%^" failed.  

40.)  

41.SET REPOS_NAME=  

42.ECHO.  

SETVAR_IS_EMPTY_DIR=TRUE

SETLOAD_DIR=".";

IFNOT"%1"==""(

SETLOAD_DIR=%1

echo%LOAD_DIR%

SETVAR_IS_EMPTY_DIR=

dir/B/A-D%LOAD_DIR%\*.bin>DUMP_FILES

IF"%errorlevel%"=="0"(

ECHOFindeddumpfile.

)ELSE(

ECHOError:

Cannotfinddumpfile.

DELDUMP_FILES

GOTO:

EOF

FOR/F%%iIN(DUMP_FILES)DO(

SETREPOS_FILE=%%i

CALL:

LOAD_REPOS

SETREPOS_FILE=

DEL/QDUMP_FILES

ECHOSuccessed.

GOTO:

EOF

:

:

====Functions====

:

LOAD_REPOS

SETREPOS_NAME=%REPOS_FILE:

~0,-4%

mkdir%REPOS_NAME%

ECHO%REPOS_NAME%

ECHOLoadingrepository^"%REPOS_NAME%^"...

svnadmi

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

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1