跳至內容

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>

參考資料

[編輯 | 編輯原始碼]
華夏公益教科書