续接上文
本文介绍svnkit移动文件
业务需求时,在页面对某个项目进行一键归档,输入版本号
会把项目里的开发库和基线库复制到历史库中,然后创建新的开发库和历史库模板
本文主要介绍移动文件这部分
直接上代码
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNProperties;
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.wc.ISVNOptions;
import org.tmatesoft.svn.core.wc.SVNClientManager;
import org.tmatesoft.svn.core.wc.SVNCopySource;
import org.tmatesoft.svn.core.wc.SVNRevision;
import org.tmatesoft.svn.core.wc.SVNWCUtil;
import java.util.ArrayList;
import java.util.List;
/**
* @author liuyanzhao
* @date 2021/12/20 10:02
*/
@Slf4j
public class SVNUtilDemo
{
public static ISVNOptions isvnOptions;
// 初始化
static
{
//1.根据访问协议初始化工厂
DAVRepositoryFactory.setup();
//2.使用默认选项
isvnOptions = SVNWCUtil.createDefaultOptions(true);
}
/**
* 拷贝文件夹
* 注意:支持多层文件夹创建,支持目标文件夹已存在不报错,支持一次复制多个文件夹
*
* @param username
* @param password
* @param sourceUrlList
* @param targetUrl
* @param message
* @throws SVNException
*/
public static void doMove(String username, String password, List<String> sourceUrlList, String targetUrl, String message) throws Exception
{
try
{
//3.初始化权限
ISVNAuthenticationManager isvnAuthenticationManager = SVNWCUtil.createDefaultAuthenticationManager(username, password.toCharArray());
//4.创建SVNClientManager的实例
SVNClientManager svnClientManager = SVNClientManager.newInstance(isvnOptions, isvnAuthenticationManager);
// 5.进行copy
SVNCopySource[] sources = new SVNCopySource[sourceUrlList.size()];
for (int i = 0; i < sourceUrlList.size(); i++)
{
sources[i] = new SVNCopySource(SVNRevision.HEAD, SVNRevision.HEAD, SVNURL.parseURIEncoded(sourceUrlList.get(i)));
}
svnClientManager.getCopyClient().doCopy(sources, SVNURL.parseURIEncoded(targetUrl),
true, true, false, message, new SVNProperties());
} catch (Exception e)
{
log.error("复制文件夹失败,username:{}, password:{}, sourceUrlList:{}, targetUrl:{}, message:{}, e:{}",
username, password, JSON.toJSONString(sourceUrlList), targetUrl, message, e);
throw new Exception("复制文件夹失败");
}
}
/**
* 功能说明:
* 判断文件是否存在
*/
public static void main(String[] args) throws Exception
{
String username = "admin"; // svn账号
String password = "123456"; // svn密码
List<String> sourceUrl = new ArrayList<>();
sourceUrl.add("http://127.0.0.1/svn/项目/测试项目1/开发库");
sourceUrl.add("http://127.0.0.1/svn/项目/测试项目1/基线库");
String targetUrl = "http://127.0.0.1/svn/项目/测试项目1/历史库/v1.0.0";
String message = "移动开发库基线库到历史库";
doMove(username, password, sourceUrl, targetUrl, message);
}
}
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏