`

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

    博客分类:
  • SVN
 
阅读更多
弄了很久,想使用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;
        }
    }
}

 

分享到:
评论

相关推荐

    java操作svn把资源下载到服务器

    本教程将详细解释如何使用Java与SVN进行交互,以便从SVN仓库中拉取资源并将其部署到服务器。 首先,要实现这个功能,我们需要一个支持SVN操作的Java库。Apache的Subversion客户端抽象层(SVNKit)是一个广泛使用的...

    myeclipse svn检不出资源文件处理办法,报文件已不存在

    ### myeclipse SVN检测不出资源文件处理办法:报文件已不存在 在开发过程中,经常会遇到SVN(Subversion)版本控制系统出现的一些问题。比如,在使用MyEclipse进行项目开发时,有时会出现SVN无法检测到资源文件的...

    SVN仓库彻底删除文件工具

    使用本图形化工具帮助你将这些文件彻底地从svn中删除。 先导出svn仓库 svnadmin dump /home/svn/xx > svn.dump 使用本工具过滤掉需要删除的文件 重新创建仓库并导入 svnadmin create /home/svn/xx_new svnadmin...

    SVN版本库的迁移(从一台服务器迁移到另一台服务器)

    1. 将旧版本库复制到新服务器的一个目录下,并启动SVN服务。 2. 在本地,使用`svnadmin`工具选择本地复制的版本库,通过右键菜单选择`TortoiseSVN` -> `Relocate`。 3. 在弹出的对话框中输入新版本库的IP地址,完成...

    svn 所有windows资源

    如果出现意外情况,可以从备份中恢复到特定的版本状态。 9. **URL访问**:SVN仓库可以通过HTTP或HTTPS协议访问,这意味着团队成员可以通过网络进行版本控制操作,无论他们身处何处。 10. **命令行工具**:除了图形...

    SVN服务资源配置

    安装完成后,我们需要创建一个SVN仓库来存储项目资源。在Repositories目录下,右键选择“Create New Repository…”进行创建,并为其命名,例如“my_repo”。 ### 3. 用户管理 接着,我们需要创建用户以便访问SVN...

    SVN仓库数据整体迁说明

    本文将详细讲解如何将一台服务器上的SVN仓库数据迁移到另一台机器上,保留所有的版本号和版本信息。这个过程可以分为三步:导出仓库、创建新仓库和导入仓库数据。 Step 1: 导出仓库数据 为了将仓库数据迁移到新...

    SVN中文教程 SVN简明教程 SVN学习笔记

    - SVN仓库是存储项目文件的地方,可以本地创建,也可以在服务器上创建。使用`svnadmin create`命令可以创建本地仓库,而通过HTTP/HTTPS协议,可以利用Apache或VisualSVN Server等软件搭建远程仓库。 3. **SVN...

    svn乱码解决

    在IT行业中,版本控制系统是开发团队协作的重要工具,其中Subversion(简称svn)是一个广泛应用的分布式版本控制系统。在使用svn时,有时会遇到文件名或文件内容显示为乱码的问题,这给团队协作带来了困扰。本文将...

    svn安装以及资源

    在这个"svn安装以及资源"的压缩包中,我们很可能会找到关于如何在不同操作系统上安装SVN,以及使用它的相关文档和指南。 首先,让我们详细讨论SVN的安装过程。在Windows系统中,通常会使用VisualSVN Server或...

    svn资源迁移

    SVN资源迁移是指将一个Subversion(SVN)仓库及其所有历史数据从一个服务器迁移到另一个服务器的过程。这个过程通常涉及多个步骤,以确保数据的完整性和可用性。以下是一个详细步骤的说明: 1. **停止HTTP服务**: ...

    svn svn64位程序 svn中文语言包

    TortoiseSVN将SVN功能集成到Windows资源管理器中,通过右键菜单即可完成大部分操作。 7. SVN协作与分支管理: SVN支持分支和标签,允许开发团队创建独立的开发分支,进行新功能的开发或bug修复,然后将这些更改...

    Android项目在eclipse通过SVN资源库中检出项目遇到问题解决

    Android 项目在 Eclipse 通过 SVN 资源库中检出项目是一个常见的操作,但是在这个过程中我们可能会遇到一些问题,例如项目编码格式错误、库文件缺失等。下面我们将详细讲解 Android 项目在 Eclipse 通过 SVN 资源库...

    SVN中文手册 SVN中文手册

    SVN svn SVN中文手册 SVN资料 svn配置SVN svn SVN中文手册 SVN资料 svn配置SVN svn SVN中文手册 SVN资料 svn配置SVN svn SVN中文手册 SVN资料 svn配置SVN svn SVN中文手册 SVN资料 svn配置SVN svn SVN中文手册 SVN...

    SVN安装文件及SVN中文补丁

    首先是仓库(Repository),这是存储所有版本化文件的地方,每个项目通常对应一个仓库。其次是工作副本(Working Copy),这是从仓库克隆到本地进行编辑的文件和目录。版本控制的核心操作包括:Checkout(检出)用于...

    SVN的中文版本

    描述中提到了一个问题,即官方提供的SVN客户端不包含中文语言支持。为了使SVN界面显示中文,需要进行一些额外的配置。这通常涉及到下载并安装SVN客户端的汉化包。在这个情况下,我们有两个压缩包子文件,分别是`...

    svn加锁后的解决办法

    在SVN操作过程中,为了保持工作拷贝的一致性,Subversion会在进行任何修改之前,先记录下操作的意图到一个日志文件中。如果在此过程中Subversion的操作被中断(如进程被意外杀死,或者机器死机),那么这个日志文件...

    svn安装教程中文语言包等

    TortoiseSVN是Svn的一个图形化界面客户端,它集成在Windows资源管理器中,使用户能够直接在文件系统中操作版本控制。它提供了直观的图标,用于标记受控文件的状态,如添加、修改或已删除。 6. **安装过程**: - ...

    SVN(含中文)

    - **创建仓库**:在服务器上设定一个SVN仓库,用于存储项目文件。 - **检出(Checkout)**:从仓库下载最新版本的项目到本地工作副本。 - **添加(Add)**:将新文件或目录添加到版本控制。 - **提交(Commit)**:...

    一个很好用的SVN脚本

    4. **导出与导入**:从SVN仓库中导出特定版本的文件,或者将本地文件导入到版本库。 5. **创建与删除分支**:快速创建或删除项目分支,便于进行平行开发。 6. **日志查看**:显示文件或目录的修改历史,帮助理解代码...

Global site tag (gtag.js) - Google Analytics