跳至内容

XQuery/安装eXgit

来自维基教科书,开放的书籍,为开放的世界

Git 具有许多功能,可在世界各地多个用户更改文件时管理数据。Git 具有查看谁更改了哪些数据以及如何查看差异的工具。eXist 目前尚未提供这些功能。但是,Git 没有标准的 REST 接口。

安装eXgit

[编辑 | 编辑源代码]

注意:这只是一个工作正在进行中。尚未完成!我们希望将来能够提供打包工具和易于安装的 .xar 文件。

eXgit 的软件存储在 Github 上,这里

  https://github.com/shabanovd/eXgit

此软件依赖于 Github 上的 Git Java 库,这里

  https://github.com/eclipse/egit-github

你需要构建这个项目,但你只需要一个 jar 文件

 org.eclipse.jgit.jar (Note, this is a 1.7MB file)

为了构建它,我从 Github 下载了 zip 文件,并执行了 “mvn install”。我遇到了错误,所以我不得不使用 Maven 构建,并且不进行测试

  mvn install -Dmaven.test.skip=true

拥有这两个 jar 文件后,你可以将它们放到 $EXIST/lib/user 中

 eXgit-0.3.0.jar
 org.eclipse.jgit.jar

现在你可以构建 “xar 文件

  $ ant

这将在 build/eXgit-0.2.2.xar 中生成一个(大约 1.6MB,包含两个 jar 文件)

然后你可以将它加载到你的 eXist 仪表盘中。

注意,由于某种原因,jar 文件无法正常工作。我们删除了 exist.xml 和构建文件中对它们的引用,并将它们手动复制到了 $EXIST_HOME/lib/user 区域。

注意,现在 .xar 文件的大小约为 2K!

测试安装

[编辑 | 编辑源代码]

你必须有一个本地 git 检出。

将它用作你的导入语句

import module namespace git="http://exist-db.org/git";

示例XUnit测试

[编辑 | 编辑源代码]

要测试它,你可以克隆任何 git 存储库。例如,以下操作将复制 /db/exide 中的 eXide 项目。

xquery version "1.0";
import module namespace git="http://exist-db.org/git";
git:clone("https://github.com/wolfgangmm/eXide.git", "/db/exide", "", "")

在运行此测试后,你将注意到在 /db/exide/.git 中创建了一个 .git 文件,其中包含所有 git 管理文件

将 git 存储库克隆到 eXist 后,屏幕图像。

示例单元测试

[编辑 | 编辑源代码]
import module namespace git="http://exist-db.org/git";

let $git-checkout-dir := 'd:\ws\exist'

return
<testcase name="status" classname="http://exist-db.org/git">
   {git:status($git-checkout-dir, '', false())}
</testcase>

参考资料

[编辑 | 编辑源代码]
华夏公益教科书