·显示版本树
把svnkit.jar添加到项目中,用于实现svn功能。把jackson-all-1.6.2.jar添加到项目中,用于显示树列表。把javaee.ar添加到项目中。
新建一个类(SVNUtil.class)实现svn功能
privateStringsvnRoot;
privateStringuserName;
privateStringpassword;
privateSVNRepositoryrepository;
/***
*构造方法
*@paramsvnRoot
*svn根目录
*/
publicSVNUtil(String svnRoot) {
this.svnRoot=svnRoot;
}
/***
*构造方法
*@paramsvnRoot
*svn根目录
*@paramuserName
*登录用户名
*@parampassword
*登录密码
*/
publicSVNUtil(String svnRoot, String userName, String password) {
this.svnRoot=svnRoot;
this.userName=userName;
this.password=password;
}
/***
*通过不同的协议初始化版本库
*/
privatestaticvoidsetupLibrary() {
//对于使用http://和https://
DAVRepositoryFactory.setup();
//对于使用svn:/ /和svn+xxx:/ /
SVNRepositoryFactoryImpl.setup();
//对于使用file://
FSRepositoryFactory.setup();
}
每次连接库都进行登陆验证
/***
*登录验证
*@return
*/
publicbooleanlogin(){
setupLibrary();
try{
//创建库连接
repository=SVNRepositoryFactory.create(SVNURL.parseURIEncoded(this.svnRoot));
//身份验证
ISVNAuthenticationManager authManager = SVNWCUtil
.createDefaultAuthenticationManager(this.userName,
this.password);
//创建身份验证管理器
repository.setAuthenticationManager(authManager);
returntrue;
}catch(SVNException svne){
svne.printStackTrace();
returnfalse;
}
}
下面的方法实现查询给定路径下的条目列表功能
/***
*
*@parampath
*@return查询给定路径下的条目列表
*@throwsSVNException
*/
@SuppressWarnings("rawtypes")
publicList<SVN> listEntries(String path)
throwsSVNException {
Collection entries =repository.getDir(path, -1,null,
(Collection)null);
Iterator iterator = entries.iterator();
List<SVN> svns =newArrayList<SVN>();
while(iterator.hasNext()) {
SVNDirEntry entry = (SVNDirEntry) iterator.next();
SVN svn =newSVN();
svn.setCommitMessage(entry.getCommitMessage());
svn.setDate(entry.getDate());
svn.setKind(entry.getKind().toString());
svn.setName(entry.getName());
svn.setRepositoryRoot(entry.getRepositoryRoot().toString());
svn.setRevision(entry.getRevision());
svn.setSize(entry.getSize()/1024);
svn.setUrl(path.equals("") ?"/"+entry.getName() : path +"/"+entry.getName());
svn.setAuthor(entry.getAuthor());
svn.setState(svn.getKind() =="file"?null:"closed");
svns.add(svn);
}
新建一个SVNServlet
添加一个方法用于把java对象转换为json字符串
/**
*将java对象转换为json字符串
*
*@paramobj
*:可以为map,list,javaBean等
*@returnjson字符串
*@createTime2010-11-23下午07:42:58
*/
publicstaticString object2Json(Object obj) {
try{
StringWriter sw =newStringWriter();
JsonGenerator gen =newJsonFactory().createJsonGenerator(sw);
mapper.writeValue(gen, obj);
gen.close();
returnsw.toString();
}catch(Exception e) {
e.printStackTrace();
}
returnnull;
}
protectedvoiddoGet(HttpServletRequest request,
HttpServletResponse response)throwsServletException, IOException {
//TODOAuto-generated method stub
this.doPost(request, response);
}
protectedvoiddoPost(HttpServletRequest request,
HttpServletResponse response)throwsServletException, IOException {
//TODOAuto-generated method stub
Object svns =null;
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
String path = request.getParameter("pid");
String url ="svn://localhost/svndemo1";
String usrName ="usrName";
String password ="password";
if(path ==null) {
path ="";
}
path =newString(path.getBytes("ISO-8859-1"),"UTF-8");
String type = request.getParameter("type");
PrintWriter out = response.getWriter();
try{
SVNUtil svnUtil =newSVNUtil(url, usrName, password);
if(svnUtil.login()) {
/*用于查询历史记录
if("history".equals(type)) {
List<SVN> svnl = svnUtil.getHistory(path);
HashMap<String, Object> sv =newHashMap<String, Object>();
sv.put("total", svnl.size());
sv.put("rows", svnl);
svns = sv;
}else{*/
svns = svnUtil.listEntries(path);
//}
//把java对象转换成json字符串
String json = SVNServlet.object2Json(svns);
out.print(json);
}else{
System.out.println("验证失败");
}
}catch(SVNException ex) {
ex.printStackTrace();
}
out.flush();
out.close();
}
新建一个index.jsp用户显示版本数列表,页面显示我使用了jquery-easyui模板
<%@pagelanguage="java"contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() +"://"
+ request.getServerName() +":"+ request.getServerPort()
+ path +"/";
%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<basehref="<%=basePath%>">
<title>SVN</title>
<metahttp-equiv="Content-Type"content="text/html; charset=utf-8">
<metahttp-equiv="pragma"content="no-cache">
<metahttp-equiv="cache-control"content="no-cache">
<metahttp-equiv="expires"content="0">
<metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">
<metahttp-equiv="description"content="This is my page">
<linkrel="stylesheet"type="text/css"
href="plugs/themes/default/easyui.css">
<linkrel="stylesheet"type="text/css"href="plugs/themes/icon.css">
<scripttype="text/javascript"src="plugs/jquery-1.4.2.min.js"></script>
<scripttype="text/javascript"src="plugs/jquery.easyui.min.js"></script>
<scripttype="text/javascript">
$(function() {
$('#test').treegrid({
title :'SVN列表',
nowrap :false,
rownumbers :true,
collapsible :false,
url :'svn?pid=',
idField :'url',
treeField :'url',
frozenColumns : [ [ {
title :'路径',
field :'url',
width : 350,
formatter :function(value) {
return'<span style="color:red">'+ decodeURI(value.substr(value.lastIndexOf("/"))) +'</span>';
}
} ] ],
columns : [ [ {
field :'name',
title :'名称',
width : 120
}, {
field :'size',
title :'文件大小(KB)',
width : 80,
rowspan : 2
}, {
field :'revision',
title :'版本号',
width : 80,
rowspan : 2
}, {
field :'author',
title :'作者',
width : 100,
rowspan : 2
}, {
field :'date',
title :'修改日期',
width : 130,
rowspan : 2
}, {
field :'commitMessage',
title :'注释',
width : 150,
rowspan : 2
}, {
field :'kind',
title :'操作',
width : 120,
align :'center',
rowspan : 2,
formatter :function(value) {
returnvalue=='file'?'<a onclick="download()" style="cursor: pointer;color:red">下载</a><a onclick="viewHistory()" style="margin-left:5px; cursor: pointer;color:red">历史版本</a>':'';
}
}] ],
onBeforeExpand :function(row, param) {
$(this).treegrid('options').url ='svn?pid='+encodeURI(decodeURI(row.url));
}
});
});
functiondownload(){
setTimeout(function(){
varnode = $('#test').treegrid('getSelected');
if(node !=null)
window.open("download?url="+encodeURI(decodeURI(node.url))+"&size="+node.size+"&name="+encodeURI(decodeURI(node.name))+"&revision="+node.revision);
},200);
}
functionviewHistory(){
setTimeout(function(){
varnode = $('#test').treegrid('getSelected');
if(node !=null) {
window.open("history.jsp?uri="+encodeURI(decodeURI(node.url)),"_blank","height=400,width=700,status=yes,toolbar=no,menubar=no,location=no");
}
}, 200);
}
</script>
</head>
<body>
<tableid="test"></table>
</body>
</html>
显示效果如下
版本树列表
历史版本
转载自:http://blog.csdn.net/czw1029612/article/details/6086689
分享到:
相关推荐
为了更好地集成SVN功能到Java应用中,SVNKit提供了一套全面且强大的API。本文将详细解析SVNKit API中的几个关键方法,并通过一个具体的示例来展示如何使用这些方法实现常见的SVN操作。 #### SVNKit API简介 SVNKit...
Java调用SVNKit是为了在Java程序中集成Subversion(SVN)版本控制系统的能力。SVNKit是一个纯Java实现的Subversion库,允许开发者在Java应用中执行各种SVN操作,如检出、提交、更新、回滚等。以下是对标题和描述中所...
这个库使得开发者能够在Java应用程序中实现与SVN服务器的交互,包括版本控制操作、仓库浏览、信息获取等功能。本篇文章将深入探讨如何利用SVNKit来获取SVN的相关信息。 首先,你需要在项目中引入SVNKit的依赖。通常...
SVNKit是一款纯Java实现的Subversion(SVN)客户端库,它允许开发者在Java应用程序中直接集成SVN功能,无需依赖任何本地SVN客户端。这个压缩包提供的"svnkit-1.10.6"是SVNKit的一个版本,包含了支持Java开发的SVN...
需要svnkit 使用方法 SVNUtil.getHistoryByDate("https://127.0.0.1:8443/svn/Test/mytestprotect/", "username", "password"); 如果jar 在我的其它资源里
总之,Java 实现 SVN 更新和提交利用 SVNKit 和 SVNKit-CLI 可以方便地在程序中集成 SVN 功能,为团队协作提供自动化支持,提高代码管理的效率。通过以上步骤,你可以根据项目需求编写相应的 Java 类和方法,实现对 ...
首先,要实现这个功能,我们需要一个支持SVN操作的Java库。Apache的Subversion客户端抽象层(SVNKit)是一个广泛使用的库,它提供了与SVN服务器通信的API。要开始,你需要将SVNKit的JAR文件添加到你的项目类路径中。...
这通常涉及到SVN的API或者库,如`svnkit`或`javasvn`,通过这些工具可以获取仓库的历史信息,包括作者、时间戳和修改的文件列表。 5. **代码分析**:统计代码数量通常涉及解析源代码文件,区分注释、空格和实际代码...
JAVA代码实现远程操作服务器文件是指使用JAVA语言实现远程操作服务器文件的功能,实现FTP,共享文件夹操作。该功能可以实现远程服务器文件的上传、下载、复制、移动、删除等操作。 description: 该实现使用了...
"SVN变更发送邮件通知Java实现"是一个这样的功能,它能够在 SVN 仓库发生变动时自动发送邮件通知给相关人员。 首先,我们需要理解如何通过Java来实现这一功能。Java 提供了丰富的类库来处理邮件发送,比如JavaMail ...
然后,通过简单的Java代码即可调用SVNKit的API进行操作,例如初始化`SVNClientManager`并执行提交操作。 7. **冲突处理**:SVNKit提供了处理版本冲突的能力,当多个用户修改同一文件的不同部分时,SVNKit可以帮助...
SVNKit不仅适用于开发SVN客户端工具,还可以用于构建持续集成系统、版本控制插件或任何需要集成SVN功能的Java应用。 通过这个Demo,开发者可以学习到如何在Java项目中有效地使用SVNKit库,提升版本控制的自动化...
使用Java SVN操作,我们主要通过调用SVNKit库提供的API来实现这些功能。例如: 1. **导入**:可以使用`SVNClientManager`的`import`方法,指定本地文件或目录及远程URL,完成导入操作。 2. **检出**:通过`checkout...
SVNKit是一个纯Java实现的SVN客户端库,提供了丰富的API,可以实现对SVN的各种操作,如添加、删除、提交、更新等。 - 首先,需要在项目中引入SVNKit依赖,然后创建SVNClientManager实例,这是所有SVN操作的基础。 ...
SVNKit是一个强大的Java库,它实现了Subversion(SVN)客户端功能,允许开发者在Java应用程序中集成版本控制系统。SVNKit提供了丰富的API,使得开发者能够执行常见的SVN操作,如检出、提交、更新、合并等。这个...
它提供了全面的功能,允许开发者在Java应用程序中实现对SVN的访问,包括但不限于查看、比较、提交、更新和回滚代码仓库操作。在给定的"svnkit1.8.15"中,我们聚焦于版本1.8.15,这可能是SVNKit的一个稳定版本,包含...
这些JAR包通常包含了SVNkit的所有必需组件,包括核心库、依赖库以及可能的本地化资源,使得开发者能够在项目中直接引用并调用SVN相关的功能。 描述中提到的“实例代码”意味着该压缩包中可能包含了一些示例代码,...
SVNKit是一个强大的Java库,它实现了Subversion(SVN)客户端的功能,允许开发者在Java应用程序中集成版本控制系统。SVNKit提供了丰富的API,使得开发者能够执行诸如版本控制、提交、更新、比较、合并等SVN操作。在...
SVNKit是一个强大的Java库,它实现了Subversion(SVN)客户端功能,允许开发者在Java应用程序中集成版本控制系统。SVNKit提供了丰富的API,用于执行常见的SVN操作,如检查、更新、提交、合并和分支等。这个"svnkit的...
首先,`svnkit`是一个纯Java实现的SVN客户端库,它提供了一系列的类和方法,使开发者能够在Java应用程序中执行常见的SVN操作,如添加、提交、更新、合并、回滚等。这些操作都是通过调用SVN接口实现的,这些接口定义...