public List searchByTree(String userName,String passwd,String SVNServerUrl,String dirUrl){
//这里有点像 storeManager的查看功能,但是是从 应用模型的目录开始查看的。
SVNURL repositoryUrl=null;
SVNRepository repository=null;
SVNRepositoryFactoryImpl.setup();
try {
repositoryUrl=SVNURL.parseURIEncoded(SVNServerUrl);
repository=SVNRepositoryFactory.create(repositoryUrl); ISVNAuthenticationManager authenticationManager=SVNWCUtil.createDefaultAuthenticationManager(userName, passwd);
repository.setAuthenticationManager(authenticationManager);
result.clear();
FileNode rootNode=new FileNode("root", SVNServerUrl, , "", , null, null);
listTree(repository, dirUrl,rootNode);
result.add(rootNode);
} catch (Exception e) {
// TODO: handle exception
}
return result;
}
public void listTree(SVNRepository repository,String dirUrl,FileNode node){
String currentPath="";
List list=new ArrayList();
Collection root;
try {
String finalPath[]=dirUrl.split("/");
for(int i=;i<finalPath.length;i++){
currentPath+=finalPath[i]+"/";
}
System.out.println("****************: "+currentPath);
root=repository.getDir(currentPath, -, null, (Collection)null);
Iterator iterator=root.iterator();
while (iterator.hasNext()) {
SVNDirEntry entry=(SVNDirEntry)iterator.next();
if (entry.getKind()==SVNNodeKind.DIR) {
FileNode subDirNode=new FileNode(entry.getName(), entry.getURL().toString(),entry.getRevision(),entry.getAuthor(),entry.getSize(), entry.getDate(), null);
System.out.println("********"+entry.getURL());
listTree(repository, entry.getURL().toString(), subDirNode);
list.add(subDirNode);
} else {
FileNode subnode=new FileNode(entry.getName(), entry.getURL().toString(),entry.getRevision(),entry.getAuthor(),entry.getSize(), entry.getDate(), null);
list.add(subnode);
} }
} catch (SVNException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
node.setChildren(list);
}

以上这段代码,实现了将版本库中的东西组织成List的操作。最后返回的result就是要的list。

调用的时候这样子:

ModelDeveloper developer=new ModelDeveloper();
List ddList=developer.searchByTree("test", "test", "svn://localhost/", ""); //当最后一个参数为“‘时,就是从根目录检索,导出整个结构树。当最后一个参数为"svn://localhost/aa/b"时,就是从版本库的aa/b下的东西导出。
treeViewer.setInput(ddList);

利用SVNKit进行版本库的树的导出的更多相关文章

  1. 使用SVNkit删除版本库的文件

    源网址:http://wiki.svnkit.com/Committing_To_A_Repository Editing Operation: commiting to a repository T ...

  2. redmine整合GIT版本库

    redmine整合GIT版本库   服务器的环境: Ubuntu 11.10 64位 Redmine 1.4.5.stable.10943 git version 1.7.5.4 + gitolite ...

  3. git中的版本库,暂存区和工作区

  4. SVN+post-commit 搭建自动同步版本库

    一.需求. 本地文件上传到测试环境svn,测试环境同步到生产环境rsync.开发环境与测试环境与生产环境分离. 二.搭建SVN服务器. yum -y install subversion && ...

  5. 分布式版本库——Windows下Git的环境部署以及在GitHub上开源自己的项目

    分布式版本库--Windows下Git的环境部署以及在GitHub上开源自己的项目 这几天着实忙的焦头烂额,可惜不是搞技术,今天周日,难得闲下来,写篇大家都想学习的Git教程,其实廖雪峰老师的网站已经 ...

  6. OpenJDK-study-001 windows上安装Mercurial 4.4.1 克隆OPENJDK版本库

     下载安装 1.下载Mercurial 进入https://www.mercurial-scm.org/wiki/Mercurial下载,windows上傻瓜式安装的,安装好之后,命令行进入安装目录, ...

  7. Git工作区、暂存区和版本库

    基本概念 我们先来理解下Git 工作区.暂存区和版本库概念 工作区:就是你在电脑里能看到的目录. 暂存区:英文叫stage, 或index.一般存放在 ".git目录下" 下的in ...

  8. SVN访问版本库精细的权限控制

    SVN精细权限控制本章将详细介绍前一章所涉及的两个配置文件, svnserve.conf 和 authz.conf,通过对配置逐行的描述,来阐明其中的一些细节含义.除此之外的其他配置.安装等内容,不是 ...

  9. SVN版本库备份和恢复

    1.版本库备份 1.1.svnadmin dump方式备份 此方法借助的是Subversion官网推荐的svnadmin dump备份方式,它的优点是比较灵活,既可以进行全量备份又可以进行增量备份,并 ...

随机推荐

  1. .net程序员面试不完全指南

    程序员找工作难,想要被成功聘用更难.最常见的办法是经历一次又一次的面试失败后自己琢磨出面试技巧,当然也可以花钱到一些培训机构去接受专业的书面简历和模拟面试的指导.这些方法可能都会奏效,但是却并不是时间 ...

  2. WPF程序长时间无人操作

    在软件开发中为了安全性,特别是那些需要用到用户名和密码登录服务端的程序,常常考虑长期无人操作,程序自动跳转到用户登录界面. 判断程序是否长时间无人操作,有两个依据,第一个是鼠标长时间不动,第二个是鼠标 ...

  3. struts2官方演示程序总结struts2-blank

    struts-2.2.3.1-all\struts-2.2.3.1\apps\struts2-blank总结 1.Html可以访问action  ,如下:    < head  >     ...

  4. 在tornado中使用celery实现异步任务处理之中的一个

    一.简单介绍 tornado-celery是用于Tornado web框架的非堵塞 celeryclient. 通过tornado-celery能够将耗时任务增加到任务队列中处理, 在celery中创 ...

  5. Swift - 列表项尾部附件点击响应(感叹号,箭头等)

    列表单元格尾部可以添加各种样式的附件,如感叹号,三角箭头等.而且点击内容区域与点击附件的这两个响应事件是不同的,这样可以方便我们实现不同的功能(比如点击内容则查看详情,点击感叹号则编辑) 1 2 3 ...

  6. VC添加背景图片 的一种方法

    .如果程序是新建的对话框,要给其添加背景图片的步骤: 1)加入消息函数:afx_msg void OnPaint(); 2)BEGIN_MESSAGE_MAP(QueryDlg, CDialog) O ...

  7. android中,如果使用imageButton可以在drawable 中设置一个selector,但是imageView设置不起作用

    android中,如果使用imageButton可以在drawable 中设置一个selector,但是imageView设置不起作用,只要把Imageview的src给去掉就成了,src捕获了bac ...

  8. Linux多线程编程的时候怎么查看一个进程中的某个线程是否存活

    pthread_kill: 别被名字吓到,pthread_kill可不是kill,而是向线程发送signal.还记得signal吗,大部分signal的默认动作是终止进程的运行,所以,我们才要用sig ...

  9. go运算符

    package main import ( "fmt" ) func main() { fmt.Println(^) } -3 package main import ( &quo ...

  10. 二分查找(非递归JAVA)

    庞果网编程英雄会上做的一道题:二分查找(非递归),和大家分享一下: public class BinarySearchClass { public static int binary_search(i ...