远程SVN管理

Posted

技术标签:

【中文标题】远程SVN管理【英文标题】:Remote SVN administration 【发布时间】:2010-12-13 10:49:38 【问题描述】:

我正在编写一个从远程机器执行各种 SVN 操作(提交、复制等)的 Java 应用程序。我使用 SVNKit API 从我的 Java 应用程序访问 SVN。

我还需要执行一些管理操作,例如创建用户和存储库。这些操作无法通过 SVNKit API 甚至 SVN 命令行界面获得。通常这些会直接在 SVN 服务器上执行,使用 svnadmin 或等效的 GUI。

(用SVNKit可以create a local repository,但我需要在远程机器上创建一个仓库)

看来我的选择是:

    以编程方式从 java 连接 使用 SSH 到 svn 服务器的应用程序或 类似,然后使用Runtime.exec() 运行svnadmin

    在运行 svn 服务器的机器上部署一个 Web 应用程序(如 this one),然后使用 HTTP 从 java 应用程序连接到它

    将驱动器从 java app 机器映射到 svn 服务器机器(都是 windows 机器),然后从前者运行 svnadmin,提供后者的路径作为参数

还有其他方法可以从远程计算机执行这些管理任务吗?

【问题讨论】:

【参考方案1】:

由于svnadmin 本身不能远程工作(如其文档中明确说明的那样),因此您的问题与从远程计算机运行任何其他本地应用程序没有什么不同。

顺便说一句,你的选择 3 is not advisable:

不要创建 Berkeley DB 存储库 在网络共享上——它不能存在于 远程文件系统,例如 NFS、AFS、 或 Windows SMB。伯克利数据库需要 底层文件系统 实施严格的 POSIX 锁定 语义,更重要的是, 能够将文件直接映射到 过程记忆。几乎没有网络 文件系统提供了这些功能。如果 你试图在一个 网络共享,结果是 不可预知——你可能会觉得神秘 立即出错,或者可能需要几个月 在你发现你的 存储库数据库巧妙地 损坏。

【讨论】:

我将创建一个 FSFS 存储库,因此此警告无关紧要(但感谢您提供信息)

以上是关于远程SVN管理的主要内容,如果未能解决你的问题,请参考以下文章

git-svn:通过git来管理svn代码

版本控制工具 svn

svn

分布式版本控制系统(git远程管理)

代码管理工具git使用来解决代码冲突管理

使用Git管理远程仓库