0、功能列表
svnkit功能列表 1、递归获取指定目录下目录和文件,以树形展示【svn Update】 2、获取指定文件和属性(版本号、作者、日期、文件类型) 3、获取指定文件或目录的历史记录(版本号、作者、日期、log message)【show log...】 4、提交指定目录(递归)或文件【svn commit...】 5、导出svn server指定目录或文件到本地指定目录【Export...】 6、复制已经存在的Repository 7、检查文件或目录是否存在&确定路径是文件还是目录 8、创建新目录 9、将本地svn切换到另外svn 地址【Relocate...】 10、锁定文件【get Lock/release Lock】、删除文件【delete】、复制/移动文件
1、为了支持不同协议,需要安装相应类库
//为了使用 http:// and https:// DAVRepositoryFactory.setup(); //为了使用 svn:// and svn+xxx:// SVNRepositoryFactoryImpl.setup(); //为了使用 file:/// FSRepositoryFactory.setup();
2、创建SVNRepository来管理repository.
/* * 创建SVNRepository来管理repository. * SVNURL 是url的包装对象 */ repository = SVNRepositoryFactory.create(SVNURL.parseURIEncoded(url));
3、登录
//登录 ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(name, password.toCharArray()); repository.setAuthenticationManager(authManager);
4、验证entry是否存在/文件还是目录
/* * SVNNodeKind.NONE :无此目录或文件 * SVNNodeKind.FILE :该地址是个文件 * SVNNodeKind.DIR :该地址是个目录 */ SVNNodeKind nodeKind = repository.checkPath("", -1);
5、获取该仓库的根路径
//输出:http://1.2.3.4/svn/sloth repository.getRepositoryRoot(true);
6、获取指定目录下的所有文件或目录
Collection entries = repository.getDir(path, -1, null,(Collection) null); Iterator iterator = entries.iterator(); while (iterator.hasNext()) { SVNDirEntry entry = (SVNDirEntry) iterator.next(); System.out.println("/" + (path.equals("") ? "" : path + "/") + entry.getName() + " (author: '" + entry.getAuthor() + "'; revision: " + entry.getRevision() + "; date: " + entry.getDate() + ")"); }
7、获取文件内容与文件属性
SVNProperties fileProperties = new SVNProperties(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); /* * 获取文件内容和属性。-1:最后版本。 */ repository.getFile(filePath, -1, fileProperties, baos); String mimeType = fileProperties.getStringValue(SVNProperty.MIME_TYPE); boolean isTextType = SVNProperty.isTextMimeType(mimeType); Iterator iterator = fileProperties.nameSet().iterator(); while (iterator.hasNext()) { String propertyName = (String) iterator.next(); String propertyValue = fileProperties.getStringValue(propertyName); }
8、获取repository最后版本
latestRevision = repository.getLatestRevision();