创建一个Subversion仓库
Subversion仓库类型
到目前为止,一个Subversion仓库的存储可以用Berkley DB数据库(一般叫做Berkley DB 类型)或者普通的文件系统(一般叫做FSFS 类型)来实现。
手动创建一个Subversion仓库
Subversion安装包(你可以在Subversion home site 下载该配置包)包括一个用于创建仓库的svnadmin工具。当你安装Subversion时,你可以通过在命令提示行中输入以下命令行创建一个仓库:
...>svnadmin create C:\path
以上可以为你给定的路径创建一个FSFS类型的仓库。你也可以在命令后端明确的提供仓库的类型:
...>svnadmin create --fs-type bdb C:\path
Subversion仓库的根目录类似如下结构:
/
|_conf/
|_dav/
|_db/
|_hooks/
|_locks/
|_format
|_readme.txt
阅读创建和设置仓库的官方操作手册来使用官方Subversion工具
使用SVNKit创建一个Subversion仓库
SVNKit仅提供创建FSFS类型仓库的功能。以下就是使用SVNKit创建一个空仓库的代码片段:
1 import org.tmatesoft.svn.core.io.SVNRepositoryFactory;
2 import org.tmatesoft.svn.core.SVNURL;
3 import org.tmatesoft.svn.core.SVNException;
4 ...
5
6 try {
7 String tgtPath = "C:/repos/root/path";
8 SVNURL tgtURL = SVNRepositoryFactory.createLocalRepository( new File( tgtPath ), true , false );
9 } catch ( SVNException e ) {
10 //handle exception
11 }
12
以上将会在路径C:/repos/root/path创建一个FSFS类型的仓库。方法createLocalRepository的第二个参数设为true时,被创建的仓库就可以修改版本属性。如果版本属性没有版本,一旦允许这些文件被改变,那么就存在永远丢失这些文件的风险。要允许版本属性改变,你必须在根目录的hooks目录中放置一个可执行的pre-revprop-change钩子脚本文件。
当尝试改变一个版本属性时,服务器(也就是svnserve)首先唤起pre-revprop-change 钩子。如果这个钩子脚本在hooks目录中不存在,或者脚本返回一个不等于0的值,对版本属性的修改将会被服务器拒绝。
当你使用Subversion的svnadmin工具创建一个新的仓库时,一个新的仓库的hook目录不包含真实的钩子脚本文件,而是钩子脚本模板。这就意味着在你将pre-revprop-change 钩子文件手工放入hooks目录前,你不能够改变版本属性。
由于SVNKit对版本属性的改变时非常直接的,当方法createLocalRepository的第二个参数为true时,SVNKit在hooks目录中放置一个空的可执行的pre-revprop-change 钩子脚本。这个脚本不做任何事情,只是返回0,让请求的改变得以执行。相反,当参数值为false时,钩子脚本不会添加到hooks目录(目录中仅有模板),并且不能改变版本属性。
方法createLocalRepository的第三个参数用于控制是否强制创建仓库。也就是,如果这个参数值为true,并且提供的路径已经存在一个仓库,那么SVNKit将会在这个路径上创建一个新的仓库。相反,参数值为false时,已存在的仓库不会删除,并且新的仓库创建将会失败,抛出SVNException。
如果一个仓库创建成功了,方法createLocalRepository将返回这个仓库根目录位置的文件URL。你也可以使用SVNAdminClient(属于高级API中的类)来创建一个FSFS类型的仓库。实际上,这个admin客户端类使用SVNRepositoryFactory来做相同的工作。
1 import org.tmatesoft.svn.core.wc.admin.SVNAdminClient;
2 import org.tmatesoft.svn.core.SVNURL;
3 import org.tmatesoft.svn.core.SVNException;
4 ...
5 SVNAdminClient adminClient;
6 ...
7 try {
8 String tgtPath = "C:/repos/root/path";
9 SVNURL tgtURL = adminClient.doCreateRepository( new File( tgtPath ), null , true , false );
10 } catch ( SVNException e ) {
11 //handle exception
12 }
访问仓库
有两种方式访问Subversion仓库:
到目前为止,Subversion支持以下仓库访问方法
方法
|
访问的方法
|
file:///
|
直接仓库访问 (在本机磁盘上)
|
http://
|
通过 WebDAV 协议访问Subversion 关联的Apache server
|
https://
|
和http:// 相同, 多了SSL 加密
|
svn://
|
通过普通的SVN协议访问svnserve服务器
|
svn+ssh://
|
和 svn://相同, 使用SSH终端
|
file:/// 访问
当仓库在你本机时,这一协议不需要你为这个仓库设置用户账户来工作。在提交操作中,Subversion仅使用一个用户名,如果没有明确地提供用户名,会话的用户名将会被使用。
svn://, svn+ssh:// 访问
要使用SVN://协议,管理员需要配置 svnserve程序用来验证用户的访问规则和账户。Svn+ssh://协议:首先,客户端通过ssh验证他对服务器主机的权限,终端连接远程服务器,就像是在本机上工作一样。你可以尝试任意一种方法。详细请看Subversion book 这一章 。
http://, https:// 访问
使用http://协议访问,管理员需要设置一个带有WebDAV协议扩展模块的Apache 服务器。怎样通过http://访问来分享你的仓库(包括账户设置提示),请阅读Subversion book 的Apache专用章节 。
时隔很久,终于整理了下一篇SVNKit的 手册,我需要有更多的时间来做一些有意义的事情……
分享到:
相关推荐
### 纯Java操作SVN——SVNKit API详解 #### 概述 在软件开发过程中,版本控制系统如Subversion(SVN)是必不可少的工具之一。为了更好地集成SVN功能到Java应用中,SVNKit提供了一套全面且强大的API。本文将详细...
SVNKit是一款纯Java实现的Subversion(SVN)客户端库,它允许开发者在Java应用程序中直接集成SVN功能,无需依赖任何本地SVN客户端。这个压缩包提供的"svnkit-1.10.6"是SVNKit的一个版本,包含了支持Java开发的SVN...
常见的 SVN 客户端有 TortoiseSVN(Windows)、SmartSVN(跨平台)、SVNKit(Java 库,可用于构建自定义客户端)等。这些客户端支持多种操作系统,包括 Windows、Linux 和 macOS。 - **TortoiseSVN**:在 Windows ...
### SVNKit Java操作SVN详解 #### 一、SVN快速入门 SVN(Subversion)是一种广泛使用的版本控制系统,用于管理和追踪多个开发者共享的文件变更。本文将详细介绍如何使用SVNKit进行SVN的基本操作,包括上传、下载、...
SVNKit是一个强大的Java库,它为Subversion(SVN)版本控制系统提供了全面的API支持。这个库使得开发者能够在Java应用程序中实现与SVN服务器的交互,包括版本控制操作、仓库浏览、信息获取等功能。本篇文章将深入...
- svnkit.jar、trilead.jar、svnkit-javahl.jar:这些是SVNKit相关的库文件,SVNKit是一个纯Java实现的SVN客户端库,支持JavaHL接口,允许在不依赖本地SVN库的情况下使用SVN。 - JAVAHL-LICENSE:JavaHL是JNI...
Apache的Subversion客户端抽象层(SVNKit)是一个广泛使用的库,它提供了与SVN服务器通信的API。要开始,你需要将SVNKit的JAR文件添加到你的项目类路径中。通常,这些JAR文件可以从Apache官方网站或通过Maven或...
1. **选择客户端工具**:常见的SVN客户端有TortoiseSVN(Windows)、SmartSVN(跨平台)、SVNKit(Java库,可用于开发自定义客户端)等。 2. **安装客户端软件**:下载并安装对应操作系统的客户端,按照安装向导...
1. org.polarion.eclipse.team.svn.connector.svnkit1_10_6.1.0.jar:这是基于SVNKit的连接器,是一个纯Java实现的SVN库,它提供了对SVN协议的全面支持,包括SSL加密通信,以及处理不同SVN版本服务器的能力。...
其他SVNKit的操作包括CheckOut,DoCommit,DoDiff,DoImport,DoUpdate,查看上次备注信息(message/log),DisplayFile(查看svn文件属性)DisplayRepositoryTree(查看某路径下的所有文件)
SVN客户端有许多实现,如TortoiseSVN(Windows)、SmartSVN(跨平台)、SVNKit(Java库)等。安装过程通常包括下载安装包,按照向导步骤进行,然后设置SVN服务器地址和认证信息。 4. **协作与版本管理**: SVN...
SVNKit 是一个纯 Java 实现的 SVN 客户端库,允许开发者在 Java 应用程序中集成 SVN 功能,而无需依赖外部的 SVN 客户端工具。 描述中提到的操作包括: 1. **版本号对比**:在 SVN 中,每个文件和目录都有一个唯一...
SVNKit (JavaSVN) 是一个纯 Java 的 SVN 客户端库,使用 SVNKit 无需安装任何 SVN 的客户端,支持各种操作系统。 这不是一个开源的类库,但你可以免费使用。 通过SVNKit,你可以在SVN上开发出自己的应用。
SVNKit (JavaSVN) 是一个纯 Java 的 SVN 客户端库,使用 SVNKit 无需安装任何 SVN 的客户端,支持各种操作系统。 这不是一个开源的类库,但你可以免费使用。 通过SVNKit,你可以在SVN上开发出自己的应用
SVNKit 是一个纯 Java 的 SVN 客户端库,它提供了与 SVN 服务器交互的全面功能,包括但不限于创建、更新、提交、分支、合并等操作。而 SVNKit-CLI 是 SVNKit 的命令行接口,允许通过 Java 程序调用 SVN 命令行工具。...
SVNKit是一个全面的、纯Java实现的Subversion(SVN)客户端库,它允许开发者在Java应用程序中集成版本控制系统Subversion的功能。Subversion是一种广泛使用的版本控制系统,用于跟踪文件和目录的更改,便于团队协作...
SVNKit是一个完全用Java编写的SVN客户端库,它可以让你在不依赖于外部命令行工具(如`svn`)的情况下,直接在Java代码中处理SVN相关的任务。 首先,你需要在项目中引入SVNKit的依赖。如果你使用的是Maven,可以在...
SvnKit是一个纯Java实现的SVN客户端库,它允许开发者在Java应用程序中直接与SVN服务器进行交互,执行如版本控制、提交、更新等操作。 ### SVN简介 Subversion(简称SVN)是一种广泛使用的版本控制系统,用于跟踪...
SVNKit是一个纯Java实现的SVN客户端库,提供了丰富的API,可以实现对SVN的各种操作,如添加、删除、提交、更新等。 - 首先,需要在项目中引入SVNKit依赖,然后创建SVNClientManager实例,这是所有SVN操作的基础。 ...
SVNKit 是一个基于 Java 语言的 Subversion 客户端库,提供了一个灵活的方式来访问 Subversion 版本控制系统。下面是 SVNKit 手册的详细介绍: SVN 快速入门 SVNKit 手册的第一部分是 SVN 快速入门,旨在帮助...