SVNKit开发手册Word文档格式.docx

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

SVNKit开发手册Word文档格式.docx

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

SVNKit开发手册Word文档格式.docx

右键->

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文件:

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上右键->

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命令行客户端的命令的对应关系。

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命令行客户端的命令的对应关系。

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命令行客户端的命令的对应关系。

doStatus()

svnstatus'

SVNCommitClient:

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

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

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

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

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

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

doCommit()

svncommit'

doImport()

svnimport'

svndeleteURL'

doMkDir()

svnmkdirURL'

SVNMoveClient:

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

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

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

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

SVNCopyClient:

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

doCopy(…)

SVNDiffClient:

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

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

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

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

doDiff()

svndiff'

doMerge()

svnmerge'

五、程序框架

首先新建java项目,把SVNKit的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();

/*

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

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

SVNUpdateClientupdateClient=ourClientManager.getUpdateClient();

updateClient.setIgnoreExternals(false);

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

}catch(SVNExceptionsvne){

}

六、典型功能实现的范例

环境创建

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

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

启动版本库服务器。

访问地址:

//localhost/。

创建目录:

E:

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

\impProject

\juniper_config.txt

\cisco_config.txt

\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.wc.DefaultSVNOptions;

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

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

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

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

publicclassDoImport{

//声明SVN客户端管理类

publicstaticvoidmain(String[]args)throwsException{

//初始化支持svn:

//协议的库。

必须先执行此操作。

SVNRepositoryFactoryImpl.setup();

//相关变量赋值

SVNURLrepositoryURL=null;

try{

repositoryURL=SVNURL.parseURIEncoded("

//localhost/"

}catch(SVNExceptione){

//

}

Stringname="

test"

Stringpassword="

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操作范例

importorg.tmatesoft.svn.cor

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

当前位置:首页 > 自然科学 > 物理

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

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