SVNKit使用

有时候我们需要读取svn或者git上面最新的代码生产某些文件,这种情况下,如果我们需要使用java操作,可以使用quartz配合svnkit或者jgit取svn上的最新内容,帮我们生成对应的文件。

Svnkit中的SVNClientManager几乎包含了所有需要的功能

SVNKit使用_第1张图片

①SVNLogClient主要用来获取版本的历史修改记录、注释和树的数目
②SVNUpdateClient主要用来更新、检出(check out)、更改检出路径(relocate)、切换分支(switch)
③SVNCommitClient导入文件(import)、提交修改(commit)、提交删除、生成目录
④SVNWCClient功能较多,但是主要使用添加文件或目录、删除文件或目录、回退修改(revert)
⑤SVNDiffClient用来比较两个版本的差异、合并版本(merge)

下面代码实现更新或检出svn上面的最新文件.

SVNManger.java

public class SVNManager {

	private String url = "svn://repository";

	private String username = "test";

	private String password = "test";

	private static SVNManager svnManager = new SVNManager();

	private SVNURL svnUrl = null;

	private SVNClientManager svnClientManager = null;

	private SVNUpdateClient updateClient = null;

	private SVNManager() {
		init();
	}

	public static SVNManager getInstance() {
		return svnManager;
	}

	public void init() {
		DAVRepositoryFactory.setup();
		SVNRepositoryFactoryImpl.setup();
		FSRepositoryFactory.setup();
		try {
			svnUrl = SVNURL.parseURIEncoded(url);
		} catch (SVNException e) {
			e.printStackTrace();
		}
		ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
		svnClientManager = SVNClientManager.newInstance(
				(DefaultSVNOptions) options, username, password);
		updateClient = svnClientManager.getUpdateClient();
		updateClient.setIgnoreExternals(false);
	}

	public long checkOutOrUpdate(String url) {
		File file = new File(url);
		return file.exists() ? update(file) : checkout(file);
	}

	private long update(File file) {

		try {
			return updateClient.doUpdate(file, SVNRevision.HEAD, SVNDepth.INFINITY, true, false);
		} catch (SVNException e) {
			e.printStackTrace();
		}
		return -1;
	}

	private long checkout(File file) {
		file.mkdir();
		try {
			return updateClient.doCheckout(svnUrl, file, SVNRevision.HEAD, SVNRevision.HEAD, SVNDepth.INFINITY, true);
		} catch (SVNException e) {
			e.printStackTrace();
		}
		return -1;
	}

}

SVNKitTest.java

public class SVNKitTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		SVNManager manager = SVNManager.getInstance();
		long checkOutOrUpdate = manager.checkOutOrUpdate("E:\\example");
		System.out.println(checkOutOrUpdate);
	}

}
只实现了检出和更新,SVN的其他操作和JGit没有实现。

你可能感兴趣的:(Java基础)