SVNKit开发手册.docx

上传人:b****6 文档编号:9085912 上传时间:2023-02-03 格式:DOCX 页数:36 大小:120.70KB
下载 相关 举报
SVNKit开发手册.docx_第1页
第1页 / 共36页
SVNKit开发手册.docx_第2页
第2页 / 共36页
SVNKit开发手册.docx_第3页
第3页 / 共36页
SVNKit开发手册.docx_第4页
第4页 / 共36页
SVNKit开发手册.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

SVNKit开发手册.docx

《SVNKit开发手册.docx》由会员分享,可在线阅读,更多相关《SVNKit开发手册.docx(36页珍藏版)》请在冰豆网上搜索。

SVNKit开发手册.docx

SVNKit开发手册

SVNKit开发手册

一、SVN快速入门

本文主要介绍在windows下使用的方式,对于UNIX环境下,区别并不大。

介绍的具体步骤如下:

●软件下载

●服务器和客户端安装

●建立版本库(Repository)

●配置用户和权限

●运行独立服务器

●初始化导入

●基本客户端操作

1、软件下载

下载Subversion服务器程序

到官方网站的下载二进制安装文件,来到二进制包下载部分,找到WindowsNT,2000,XPand2003部分,然后选择"thisdirectory",这样我们可以看到许多下载的内容,目前可以下载svn-1.4.0-setup.exe。

下载Subversion的Windows客户端TortoiseSVN

TortoiseSVN是扩展WindowsShell的一套工具,可以看作Windows资源管理器的插件,安装之后Windows就可以识别Subversion的工作目录。

官方网站是TortoiseSVN,下载方式和前面的svn服务器类似,在Download页面的我们可以选择下载的版本,目前的最高稳定版本的安装文件为TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi。

另外,subversion有相应的eclipse插件,通过此插件可以在eclipse集成开发环境中对开发项目进行版本管理。

在这里暂不做介绍。

2、服务器和客户端安装

服务器安装,直接运行svn-1.4.0-setup.exe,根据提示安装即可,这样我们就有了一套服务器可以运行的环境。

安装TortoiseSVN,同样直接运行TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi按照提示安装即可,不过最后完成后会提示是否重启,其实重启只是使svn工作拷贝在windows中的特殊样式生效,与所有的实际功能无关,这里为了立刻看到好的效果,还是重新启动机器。

 

3、建立版本库(Repository)

运行Subversion服务器需要首先要建立一个版本库(Repository),可以看作服务器上存放数据的数据库,在安装了Subversion服务器之后,可以直接运行,如:

svnadmincreateE:

\svndemo\repository

就会在目录E:

\svndemo\repository下创建一个版本库。

我们也可以使用TortoiseSVN图形化的完成这一步:

在目录E:

\svndemo\repository下"右键->TortoiseSVN->CreateRepositoryhere...“,然后可以选择版本库模式,这里使用默认即可,然后就创建了一系列目录和文件。

4、配置用户和权限

来到E:

\svndemo\repository\conf目录,修改svnserve.conf:

#[general]

#password-db=passwd

改为:

[general]

password-db=passwd

然后修改同目录的passwd文件,去掉下面三行的注释:

#[users]

#harry=harryssecret

#sally=sallyssecret

最后变成:

[users]

harry=harryssecret

sally=sallyssecret

 

5、运行独立服务器

在任意目录下运行:

svnserve-d-rE:

\svndemo\repository我们的服务器程序就已经启动了。

注意不要关闭命令行窗口,关闭窗口也会把svnserve停止。

也可以把其设置为windows服务。

6、初始化导入

来到我们想要导入的项目根目录,在这个例子里是E:

\svndemo\initproject,目录下有一个readme.txt文件:

右键->TortoiseSVN->Import...

URLofrepository输入“svn:

//localhost/”

ok

完成之后目录没有任何变化,如果没有报错,数据就已经全部导入到了我们刚才定义的版本库中。

需要注意的是,这一步操作可以完全在另一台安装了TortoiseSVN的主机上进行。

例如运行svnserve的主机的IP是133.96.121.22,则URL部分输入的内容就是“svn:

//133.96.121.22/”。

7、基本客户端操作

取出版本库到一个工作拷贝:

来到任意空目录下,在本例中是E:

\svndemo\wc1,运行右键->Checkout,在URLofrepository中输入svn:

//localhost/,这样我们就得到了一份工作拷贝。

在工作拷贝中作出修改并提交:

打开readme.txt,作出修改,然后右键->Commit...,这样我们就把修改提交到了版本库,我们可以运行。

察看所作的修改:

readme.txt上右键->TortoiseSVN->ShowLog,这样我们就可以看到我们对这个文件所有的提交。

在版本1上右键->Comparewithworkingcopy,我们可以比较工作拷贝的文件和版本1的区别。

 

二、SVNKit开发环境

1、开发环境准备

SVN服务器版本我们选择比较稳定的版本Subversion1.4,安装在windows操作系统上。

SVNKit我们选择1.3.0版本,此版本支持Subversion1.6以下的所有版本。

2、开发环境配置

在开发环境中创建好项目后,在类路径中加上SVNKit的jar包即可开始对subversion进行相关的操作。

Jar包有trilead.jar,svnkit-javahl.jar,svnkit-cli.jar,svnkit.jar和jna.jar。

三、SVNKit的结构

SVNKit是一个纯java的subversion客户端库,使用SVNKit无需安装任何subversion客户端,支持各种操作系统。

四、SVNKit类关系图

SVNKit的API主要分为两类:

HighLevelAPI和LowLevelAPI。

通常情况下,我们使用HighLevelAPI即可完成工作任务。

HighLevelAPI通过封装、使用LowLevelAPI,使开发工作变得相对简单、容易。

在此我们重点介绍HighLevelAPI。

HighLevelAPI介绍:

在HighLevelAPI中,我们通过SVNClientManager类即可访问很多接口,这些接口几乎允许subversion用户执行可能需要的任何工作。

这些工作包括:

checkingout、更新、提交、获取历史版本、比较版本间的差异、浏览存储库等等。

类图如下图所示:

通过类图我们可以看到,通过SVNClientManager类可以获得各种client操作类的引用,进而可以执行很多操作。

接下来,对client操作类进行分别介绍:

SVNLogClient:

通过此类可以获得版本修订历史记录、浏览存储库条目、文件内容注释。

doLog(…)用来获取版本的修订历史

doList(…)用来获取存储库条目树

doAnnotate(…)用来获取文件内容注释

SVNLogClient的方法和SVN命令行客户端的命令的对应关系。

SVNKit

Subversion

doLog()

'svnlog'

doList()

'svnlist'

doAnnotate()

'svnblame'

SVNUpdateClient:

通过此类可以checkout、更新、切换工作副本,也可以从存储库中导出目录或文件。

doCheckOut(…)从存储库中检出工作副本。

doUpdate(…)把工作副本更新为最新版本或某个指定版本。

doSwitch(…)把工作副本更新为同一个存储库的不同分支上的版本。

doExport(..)从存储库中导出目录或文件。

doRelocate()把工作副本更新为不同的存储库中的版本。

SVNUpdateClient的方法和SVN命令行客户端的命令的对应关系。

SVNKit

Subversion

doCheckout()

'svncheckout'

doUpdate()

'svnupdate'

doSwitch()

'svnswitch'

doRelocate()

'svnswitch--relocateoldURLnewURL'

doExport()

'svnexport'

SVNWCClient:

此类提供了许多和本地工作副本相关的操作,同时也能访问存储库。

doAdd(…)添加文件、目录到工作副本并且预定添加到存储库。

它们会在下次提交上传并添加到存储库中。

doDelete(…)从工作副本中删除一个文件或目录。

它们会在下次提交上传并添加到存储库中。

doCleanup(…)递归清理工作副本,删除未完成的工作副本锁定,并恢复未完成的操作。

doInfo(…)获取一个工作副本条目的信息。

doLock(…)锁定工作副本或存储库中的条目,使其他用户不能对条目进行修改。

doUnlock(…)解锁工作副本或存储库中的条目。

doSetProperty(…)对工作副本或存储库中的条目设置属性名和属性值。

doSetrevisionProperty(…)对修订版本的条目设置属性名和属性值。

doGetProperty(…)获得工作副本或存储库中条目的属性值。

doGetRevisionProperty(…)获得修订版本中的条目的属性值。

doRevert(…)取消所有本地编辑。

SVNWCClient的方法和SVN命令行客户端的命令的对应关系。

SVNKit

Subversion

doAdd()

'svnadd'

doDelete()

'svndelete'

doCleanup()

'svncleanup'

doInfo()

'svninfo'

doLock()

'svnlock'

doUnlock()

'svnunlock'

doSetProperty()

'svnpropsetPROPNAMEPROPVALPATH'

'svnpropdelPROPNAMEPATH'

'svnpropeditPROPNAMEPATH'

doSetRevisionProperty()

'svnpropsetPROPNAME--revprop–rREVPROPVAL[URL]'

'svnpropdelPROPNAME--revprop-rREV[URL]'

'svnpropeditPROPNAME--revprop-rREV[URL]'

doGetProperty()

'svnpropgetPROPNAMEPATH'

'svnproplistPATH'

doGetRevisionProperty()

'svnpropgetPROPNAME--revprop–rREV[URL]'

'svnproplist--revprop-rREV[URL]'

doResolve()

'svnresolved'

doRevert()

'svnrevert'

SVNStatusClient:

此类用来获取工作副本条目(文件或目录)的状态信息。

doStatus(…)获得一个工作副本条目的状态。

SVNStatusClient的方法和SVN命令行客户端的命令的对应关系。

SVNKit

Subversion

doStatus()

'svnstatus'

SVNCommitClient:

此类提供了把改变提交到存储库上的一些操作。

doCommit(…)将修改从工作副本提交到存储库。

doImport(…)递归提交一个路径(本地目录)到存储库。

doDelete(…)从存储库中删除一个条目。

doMkDir(…)在存储库中创建一个目录。

SVNCommitClient的方法和SVN命令行客户端的命令的对应关系。

SVNKit

Subversion

doCommit()

'svncommit'

doImport()

'svnimport'

doDelete()

'svndeleteURL'

doMkDir()

'svnmkdirURL'

SVNMoveClient:

此类提供文件在工作副本内移动、取消移动等操作。

doMove(…)把源条目移动到目的条目。

undoMove(…)取消上次的移动操作。

doVirtualCopy(…)复制或移动源文件的版本控制信息到目的文件。

SVNCopyClient:

此类可提供SVN支持的任何复制和移动操作。

doCopy(…)

SVNDiffClient:

此类提供比较不同版本间的差异和合并差异的方法。

doDiff(…)获取两个版本间的差异。

doMerge(…)合并两组文件间的差异。

SVNDiffClient的方法和SVN命令行客户端的命令的对应关系。

SVNKit

Subversion

doDiff()

'svndiff'

doMerge()

'svnmerge'

五、程序框架

首先新建java项目,把SVNKit的jar包放到项目的类路径下面。

Jar包有trilead.jar,svnkit-javahl.jar,svnkit-cli.jar,svnkit.jar和jna.jar。

程序框架如下所示:

/*第一步:

*导入可能用到的类

*/

importjava.io.*;

importorg.tmatesoft.svn.core.*;

importorg.tmatesoft.svn.core.wc.*;

importorg.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory;

importorg.tmatesoft.svn.core.internal.io.fs.FSRepositoryFactory;

importorg.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl;

importorg.tmatesoft.svn.core.internal.util.SVNPathUtil;

publicclassDemo{

/*第二步:

*声明客户端管理类SVNClientManager。

*/

privatestaticSVNClientManagerourClientManager;

publicstaticvoidmain(String[]args)throwsSVNException{

/*第三步:

*对版本库进行初始化操作(在用版本库进行其他操作前必须进行初始化)

*对于通过使用http:

//和https:

//访问,执行DAVRepositoryFactory.setup();

*对于通过使用svn:

//和svn+xxx:

//访问,执行SVNRepositoryFactoryImpl.setup();

*对于通过使用file:

///访问,执行FSRepositoryFactory.setup();

*本程序框架用svn:

//来访问

*/

SVNRepositoryFactoryImpl.setup();

/*第四步:

*要访问版本库的相关变量设置

*/

//版本库的URL地址

SVNURLrepositoryURL=null;

try{

repositoryURL=SVNURL.parseURIEncoded("svn:

//localhost/testRep");

}catch(SVNExceptione){

//

}

//版本库的用户名

Stringname="userName";

//版本库的用户名密码

Stringpassword="userPassword";

//工作副本目录

StringmyWorkingCopyPath="D:

/MyWorkingCopy";

//驱动选项

ISVNOptionsoptions=SVNWCUtil.createDefaultOptions(true);

/*第五步:

*创建SVNClientManager的实例。

提供认证信息(用户名,密码)

*和驱动选项。

*/

ourClientManager=SVNClientManager.newInstance((DefaultSVNOptions)options,name,password);

/*第六步:

*通过SVNClientManager的实例获取要进行操作的client实例(如*SVNUpdateClient)

*通过client实例来执行相关的操作。

*此框架以checkout操作来进行说明,其他操作类似。

*/

/*工作副本目录创建*/

FilewcDir=newFile(myWorkingCopyPath);

if(wcDir.exists()){

error("thedestinationdirectory'"

+wcDir.getAbsolutePath()+"'alreadyexists!

",null);

}

wcDir.mkdirs();

try{

/*

*递归的把工作副本从repositoryURLcheckout到wcDir目录。

*SVNRevision.HEAD意味着把最新的版本checkedout出来。

*/

SVNUpdateClientupdateClient=ourClientManager.getUpdateClient();

updateClient.setIgnoreExternals(false);

updateClient.doCheckout(repositoryURL,wcDir,SVNRevision.HEAD,SVNRevision.HEAD,true);

}catch(SVNExceptionsvne){

//

}

}

六、典型功能实现的范例

环境创建

按快速入门中介绍的方法创建版本库。

添加用户test,密码也为test。

启动版本库服务器。

访问地址:

svn:

//localhost/。

创建目录:

E:

\svntest\impDir(把此目录中的内容导入到版本库中)

\impProject

\juniper_config.txt

\cisco_config.txt

E:

\svntest\wc(此目录是工作副本目录)

1、Import操作范例

packagedemo.wc;

importjava.io.File;

importorg.tmatesoft.svn.core.SVNCommitInfo;

importorg.tmatesoft.svn.core.SVNDepth;

importorg.tmatesoft.svn.core.SVNException;

importorg.tmatesoft.svn.core.SVNURL;

importorg.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl;

importorg.tmatesoft.svn.core.internal.wc.DefaultSVNOptions;

importorg.tmatesoft.svn.core.wc.ISVNOptions;

importorg.tmatesoft.svn.core.wc.SVNClientManager;

importorg.tmatesoft.svn.core.wc.SVNWCUtil;

/*此类执行的操作是把本地目录下的内容上传到版本库中。

*/

publicclassDoImport{

//声明SVN客户端管理类

privatestaticSVNClientManagerourClientManager;

publicstaticvoidmain(String[]args)throwsException{

//初始化支持svn:

//协议的库。

必须先执行此操作。

SVNRepositoryFactoryImpl.setup();

//相关变量赋值

SVNURLrepositoryURL=null;

try{

repositoryURL=SVNURL.parseURIEncoded("svn:

//localhost/");

}catch(SVNExceptione){

//

}

Stringname="test";

Stringpassword="test";

ISVNOptionsoptions=SVNWCUtil.createDefaultOptions(true);

//实例化客户端管理类

ourClientManager=SVNClientManager.newInstance(

(DefaultSVNOptions)options,name,password);

//要把此目录中的内容导入到版本库

FileimpDir=newFile("e:

/svntest/impDir");

//执行导入操作

SVNCommitInfocommitInfo=ourClientManager.getCommitClient().doImport(impDir,repositoryURL,

"importoperation!

",null,false,false,SVNDepth.INFINITY);

System.out.println(commitInfo.toString());

}

}

2、checkout操作范例

packagedemo.wc;

importjava.io.File;

importorg.tmatesoft.svn.core.SVNDepth;

importorg.tmatesoft.svn.core.SVNException;

importorg.tmatesoft.svn.core.SVNURL;

importorg.tmatesoft.svn.cor

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

当前位置:首页 > 初中教育 > 语文

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

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