SVN模型仓库中的资源从一个地方移动到另一个地方的办法(很久才解决)

来源:互联网 发布:淘宝严重违规包括那些 编辑:程序博客网 时间:2024/04/29 07:27
弄了很久,想使用domove这个操作,但是都失败了。最后给svnkit的邮箱写了封邮件,他们告诉我这样做就成功了。实际上是使用docopy这个函数实现了move操作。
package com.repositoryclient.svnoptions;import org.tmatesoft.svn.core.SVNException;import org.tmatesoft.svn.core.SVNURL;import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager;import org.tmatesoft.svn.core.
internal.io.dav.DAVRepositoryFactory;import org.tmatesoft.svn.core.internal.io.fs.FSRepositoryFactory;import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl;import org.tmatesoft.svn.core.internal.wc.DefaultSVNOptions;import org.tmatesoft.svn.core.io.SVNRepository;import org.tmatesoft.svn.core.io.SVNRepositoryFactory;import org.tmatesoft.svn.core.wc.ISVNOptions;import org.tmatesoft.svn.core.wc.SVNClientManager;import org.tmatesoft.svn.core.wc.SVNCopyClient;import org.tmatesoft.svn.core.wc.SVNCopySource;import org.tmatesoft.svn.core.wc.SVNRevision;import org.tmatesoft.svn.core.wc.SVNWCUtil;public class StoreManagerCheckResourceOption { private SVNRepository repositoryTrgt; private SVNRepository repositorySrc; public boolean doMove(String userName,String passwd,String sourceDirUrl,String targetDirUrl){ SVNClientManager ourClientManager; // 初始化支持svn://协议的库 SVNRepositoryFactoryImpl.setup(); DAVRepositoryFactory.setup(); FSRepositoryFactory.setup(); SVNURL repositorySrcUrl = null; SVNURL repositoryTrgtUrl = null; try { SVNWCUtil.createDefaultAuthenticationManager(userName,passwd); repositorySrcUrl = SVNURL.parseURIEncoded(sourceDirUrl); repositoryTrgtUrl = SVNURL.parseURIEncoded(targetDirUrl); repositorySrc = SVNRepositoryFactory.create(repositorySrcUrl); repositoryTrgt = SVNRepositoryFactory.create(repositoryTrgtUrl); ISVNAuthenticationManager authManager =SVNWCUtil.createDefaultAuthenticationManager(userName,passwd); repositorySrc.setAuthenticationManager(authManager); repositoryTrgt.setAuthenticationManager(authManager); ISVNOptions options = SVNWCUtil.createDefaultOptions(false); // 实例化客户端管理类 ourClientManager = SVNClientManager.newInstance( (DefaultSVNOptions) options, userName, passwd); SVNCopyClient copyClient = ourClientManager.getCopyClient(); SVNCopySource[] copySources = new SVNCopySource[1]; copySources[0] = new SVNCopySource(SVNRevision.HEAD, SVNRevision.HEAD, repositorySrcUrl); // SVNDirEntry entry = (SVNDirEntry) srcRepository.getDir(sourceDirUrl, -1, null, (Collection) null);// if (entry.getKind() == SVNNodeKind.DIR) {// copyClient.doCopy(copySources, repositoryTrgtUrl, true, false, false, "move", null);// } else {// copyClient.doCopy(copySources, repositoryTrgtUrl, true, false, true, "move", null);// } copyClient.doCopy(copySources, repositoryTrgtUrl, true, false, false, "move", null);// SVNWCClient client = new SVNWCClient(authenticationManager, (ISVNOptions)(SVNWCUtil.createDefaultOptions(true)));// SVNCommitInfo svnInfo = ourClientManager.getLogClient(). // 要把此目录的内容导入到版本库// File sourceDir = new File(sourceDirUrl);// File targetDir = new File("relative/" + targetDirUrl);// targetDir = targetDir.getAbsoluteFile();// sourceDir.setReadable(true);// targetDir.setWritable(true); // 执行导入操作// SVNMoveClient svnMoveClient = ourClientManager.getMoveClient();// SVNUpdateClient svnUpdateClient = new SVNUpdateClient(authenticationManager, options);// svnMoveClient.doVirtualCopy(sourceDir, targetDir, true);// svnMoveClient.doMove(sourceDir, targetDir);// svnUpdateClient.doRelocate(sourceDir, repositorySrcUrl, repositoryTrgtUrl, true); return true; } catch (SVNException e) { // TODO: handle exception e.printStackTrace(); return false; } }}

 

0 0
原创粉丝点击