前提
我是在linux通过yum install subversion 安装的svn,访问的协议是svn协议,也就是url是svn://ip/…的方式,网上几乎所有的文章在用svnkit的时候都是http协议访问svn服务器的。我模仿后都是报错的。
代码
<dependency>
<groupId>org.tmatesoft.svnkit</groupId>
<artifactId>svnkit</artifactId>
<version>1.10.1</version>
</dependency>
public class SvnKitUtils {
public static void main(String[] args) throws SVNException {
SVNRepositoryFactoryImpl.setup();
SVNURL repositoryURL = null;
repositoryURL= SVNURL.parseURIEncoded("svn://你的ip/test/123.docx");
String name = "你的用户名";
String password = "你的密码";
ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
//实例化客户端管理类
SVNClientManager svnClientManager = SVNClientManager.newInstance((DefaultSVNOptions) options, name, password);
System.out.println(123);
//要把此目录中的内容导入到版本库
File impDir = new File("D:/upload/test.docx");
//执行导入操作
SVNCommitInfo commitInfo=svnClientManager.getCommitClient().doImport(impDir, repositoryURL, "importoperation!",null, false,false,SVNDepth.INFINITY);
System.out.println(commitInfo.toString());
}
}
以上操作就是把本地的test.docx文件上传到你svn仓库的test文件夹下面,并且重命名为123.docx,你执行代码后可以在本地的小乌龟执行更新操作,会发现文件真的增加了这个。
关于impDir(代表path)和repositoryURLh(代表dstURL)的不同形式,会产生不同的效果,比如:
如果path是一个目录,则该目录的内容将直接导入到由dstURL标识的目录中。请注意,目录路径本身不会导入,也就是说,path的基本名称不属于导入的一部分。
如果path是一个文件,那么dstURL的父级就是接收导入的目录。dstURL的基本名称是存储库中的文件名。在这种情况下,如果dstURL已经存在,则抛出SVNException。
另外注意svn://你的ip/test/123.docx,ip后面的目录如果不存在会自动创建。