如何使用VLT工具 how-to-use-the-vlt-tool
Jackrabbit FileVault工具(VLT)是由Apache Foundation所開發的工具,可將Jackrabbit/AEM執行個體的內容對應至您的檔案系統。 VLT工具具有類似原始檔控制系統使用者端(例如Subversion (SVN)使用者端)的功能,可提供一般簽入、簽出和管理作業,以及彈性表示專案內容的組態選項。
從命令列執行VLT工具。 本檔案說明如何使用工具,包括如何開始使用及取得說明,以及所有命令和可用選項的清單。
概念和架構 concepts-and-architecture
請參閱官方Apache Jackrabbit Filevault檔案中的Filevault概述和Vault FS頁面,瞭解Filevault工具的概念和結構的完整概述。
VLT快速入門 getting-started-with-vlt
若要開始使用VLT,您必須執行下列動作:
- 安裝VLT、更新環境變數,以及更新全域忽略的subversion檔案。
- 設定AEM存放庫(如果尚未這麼做的話)。
- 檢視AEM存放庫。
- 與存放庫同步。
- 測試同步是否有效。
安裝VLT工具 installing-the-vlt-tool
若要使用VLT工具,您必須先安裝它。 預設不會安裝,因為它是附加工具。 此外,您需要設定系統的環境變數。
-
note note NOTE VLT工具的來源是可在GitHub上取得。 1. 提取封存。
-
將
<archive-dir>/vault-cli-<version>/bin
新增至您的環境PATH
,以便視需要存取命令檔vlt
或vlt.bat
。 例如:<aem-installation-dir>/crx-quickstart/opt/helpers/vault-cli-3.1.16/bin>
-
開啟命令列shell並執行
vlt --help
。 確認輸出與下列說明畫面類似:code language-shell vlt --help ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Jackrabbit FileVault [version 3.1.16] Copyright 2013 by Apache Software Foundation. See LICENSE.txt for more information. ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Usage: vlt [options] <command> [arg1 [arg2 [arg3] ..]] ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Global options: -Xjcrlog <arg> Extended JcrLog options (omit argument for help) -Xdavex <arg> Extended JCR remoting options (omit argument for help) --credentials <arg> The default credentials to use --update-credentials if present the credentials-to-host list is updated in the ~/.vault/auth.xml --config <arg> The JcrFs config to use -v (--verbose) verbose output -q (--quiet) print as little as possible --version print the version information and exit --log-level <level> the log4j log level -h (--help) <command> print this help
安裝之後,您需要更新全域忽略的subversion檔案。 編輯您的svn設定並新增下列專案:
[miscellany]
### Set global-ignores to a set of whitespace-delimited globs
### which Subversion will ignore in its 'status' output, and
### while importing or adding files and directories.
global-ignores = .vlt
設定行尾字元 configuring-the-end-of-line-character
VLT會根據下列規則自動處理行尾(EOF):
- 在Windows上簽出的檔案行以
CRLF
結尾 - 在Linux/Unix上簽出的檔案行以
LF
結尾 - 提交到存放庫的檔案行以
LF
結尾
為了保證VLT和SVN組態相符,您應該將svn:eol-style
屬性設定為native
,以作為儲存於存放庫中的檔案副檔名。 編輯您的svn設定並新增下列專案:
[auto-props]
*.css = svn:eol-style=native
*.cnd = svn:eol-style=native
*.java = svn:eol-style=native
*.js = svn:eol-style=native
*.json = svn:eol-style=native
*.xjson = svn:eol-style=native
*.jsp = svn:eol-style=native
*.txt = svn:eol-style=native
*.html = svn:eol-style=native
*.xml = svn:eol-style=native
*.properties = svn:eol-style=native
出庫存放庫 checking-out-the-repository
使用原始檔控制系統出庫存放庫。 例如,在svn中,輸入以下內容(將URI和路徑替換為存放庫):
svn co https://svn.server.com/repos/myproject
與存放庫同步 synchronizing-with-the-repository
您需要將filevault與存放庫同步。 若要這麼做:
-
在命令列中,瀏覽至
content/jcr_root
。 -
輸入下列專案來檢查存放庫(將您的連線埠號碼取代為 4502 和您的管理員密碼):
code language-shell vlt --credentials admin:admin co --force http://localhost:4502/crx
note note NOTE 憑證只需在初次結帳時指定一次。 然後,它們會儲存在 .vault/auth.xml
內的主目錄中。
測試同步是否有效 testing-whether-the-synchronization-worked
簽出存放庫並同步化後,您應該進行測試以確定所有專案皆正常運作。 要執行此操作,一個簡單的方法是編輯 .jsp 檔案,並檢視在提交變更後是否反映您的變更。
若要測試同步化:
- 導覽至
.../jcr_content/libs/foundation/components/text
。 - 在
text.jsp
中編輯某些專案。 - 透過輸入
vlt st
檢視修改過的檔案 - 透過輸入
vlt diff text.jsp
檢視變更 - 認可變更:
vlt ci test.jsp
。 - 重新載入包含文字元件的頁面,並檢視變更是否存在。
使用VLT工具取得協助 getting-help-with-the-vlt-tool
安裝VLT工具之後,您可以從命令列存取其「說明」檔案:
vlt --help
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Jackrabbit FileVault [version 3.1.16] Copyright 2013 by Apache Software Foundation. See LICENSE.txt for more information.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Usage:
vlt [options] <command> [arg1 [arg2 [arg3] ..]]
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Global options:
-Xjcrlog <arg> Extended JcrLog options (omit argument for help)
-Xdavex <arg> Extended JCR remoting options (omit argument for help)
--credentials <arg> The default credentials to use
--update-credentials if present the credentials-to-host list is updated in the ~/.vault/auth.xml
--config <arg> The JcrFs config to use
-v (--verbose) verbose output
-q (--quiet) print as little as possible
--version print the version information and exit
--log-level <level> the log4j log level
-h (--help) <command> print this help
Commands:
export Export the Vault filesystem
import Import a Vault filesystem
checkout (co) Checkout a Vault file system
status (st) Print the status of working copy files and directories.
update (up) Bring changes from the repository into the working copy.
info Displays information about a local file.
commit (ci) Send changes from your working copy to the repository.
revert (rev) Restore pristine working copy file (undo most local edits).
resolved (res) Remove 'conflicted' state on working copy files or directories.
propget (pg) Print the value of a property on files or directories.
proplist (pl) Print the properties on files or directories.
propset (ps) Set the value of a property on files or directories.
add Put files and directories under version control.
delete (del,rm) Remove files and directories from version control.
diff (di) Display the differences between two paths.
rcp Remote copy of repository content.
sync Control vault sync service
console Run an interactive console
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
如需特定指令的說明,請輸入help指令,然後輸入指令的名稱。 例如:
vlt --help export
Usage:
export -v|-t <arg>|-p <uri> <jcr-path> <local-path>
Description:
Export the Vault filesystem mounted at <uri> to the local filesystem at <local-path>. An optional <jcr-path> can be specified to export just a sub tree.
Example:
vlt export http://localhost:4502/crx /apps/geometrixx myproject
Options:
-v (--verbose) verbose output
-t (--type) <arg> specifies the export type. either 'platform' or 'jar'.
-p (--prune-missing) specifies if missing local files should be deleted.
<uri> mountpoint uri
<jcr-path> the jcr path
<local-path> the local path
在VLT中執行的常見工作 common-tasks-performed-in-vlt
以下是在VLT中執行的一些常見工作。 如需每個命令的詳細資訊,請參閱個別命令。
出庫子樹狀結構 checking-out-a-subtree
如果您只想出庫存放庫的子樹狀結構,例如/apps/geometrixx
,您可以輸入下列內容來執行此操作:
vlt co http://localhost:4502/crx/-/jcr:root/apps/geometrixx geo
執行此動作會建立具有META-INF
和jcr_root
目錄的新匯出根geo
,並將所有低於/apps/geometrixx
的檔案放在geo/jcr_root
中。
執行篩選的簽出 performing-a-filtered-checkout
如果您有現有的工作區篩選器,且想要將它用於簽出,您可以先建立META-INF/vault
目錄並將篩選器放置在那裡,或在命令列上指定,如下所示:
$ vlt co --filter filter.xml http://localhost:4502/crx/-/jcr:root geo
範例篩選條件:
<?xml version="1.0" encoding="UTF-8"?>
<workspaceFilter version="1.0">
<filter root="/etc/designs/geometrixx" />
<filter root="/apps/geometrixx"/>
</workspaceFilter>
使用匯入/匯出而非.vlt控制項 using-import-export-instead-of-vlt-control
您可以在不使用控制檔的情況下,在JCR存放庫和本機檔案系統之間匯入和匯出內容。
若要在不使用.vlt
控制項的情況下匯入和匯出內容:
-
最初設定存放庫:
code language-shell $ cd /projects $ svn mkdir https://svn.server.com/repos/myproject $ svn co https://svn.server.com/repos/myproject $ vlt export -v http://localhost:4502/crx /apps/geometrixx geometrixx $ cd geometrixx/ $ svn add META-INF/ jcr_root/ $ svn ci
-
變更遠端複製並更新JCR:
code language-shell $ cd /projects/geometrixx $ vlt -v import http://localhost:4502/crx . /
-
變更遠端復本並更新檔案伺服器:
code language-shell $ cd /projects/geometrixx $ vlt export -v http://localhost:4502/crx /apps/geometrixx . $ svn st M META-INF/vault/properties.xml M jcr_root/apps/geometrixx/components/contentpage/.content.xml $ svn ci
使用VLT using-vlt
若要在VLT中發出指令,請在指令行中輸入下列內容:
vlt [options] <command> [arg1 [arg2 [arg3] ..]]
以下各節將詳細介紹選項和指令。
VLT全域選項 vlt-global-options
以下是VLT選項的清單,這些選項可用於所有指令。 如需其他可用選項的資訊,請參閱個別命令。
-Xjcrlog <arg>
-Xdavex <arg>
--credentials <arg>
--config <arg>
-v (--verbose)
-q (--quiet)
--version
--log-level <level>
-h (--help) <command>
VLT指令 vlt-commands
下表說明所有可用的VLT指令。 如需語法、可用選項和範例的詳細資訊,請參閱個別命令。
export
import
checkout
co
analyze
status
st
update
up
info
commit
ci
revert
rev
resolved
res
propget
pg
proplist
pl
propset
ps
add
delete
del
或 rm
diff
di
console
rcp
sync
匯出 export
將掛載於<uri>的Vault檔案系統匯出至<local-path>的本機檔案系統。 可以指定選用的<jcr-path>以僅匯出子樹狀結構。
語法 syntax
export -v|-t <arg>|-p <uri> <jcr-path> <local-path>
選項 options
-v (--verbose)
-t (--type) <arg>
-p (--prune-missing)
<uri>
<jcrPath>
<localPath>
範例 examples
vlt export http://localhost:4502/crx /apps/geometrixx myproject
匯入 import
將本機檔案系統(從<local-path>
開始)匯入至<uri>
的儲存庫檔案系統。 您可以指定<jcr-path>
作為匯入根目錄。 若指定--sync
,匯入的檔案會自動置於儲存庫控制之下。
語法 syntax-1
import -v|-s <uri> <local-path> <jcr-path>
選項 options-1
-v (--verbose)
-s (-- sync)
<uri>
<jcrPath>
<localPath>
範例 examples-1
vlt import http://localhost:4502/crx . /
簽出(co) checkout-co
從<uri>開始從JCR存放庫到本機檔案系統的初始出庫到<local-path>的本機檔案系統。 您也可以新增<jcrPath>引數來簽出遠端樹狀結構的子目錄。 可指定複製到META-INF目錄中的Workspace篩選器。
語法 syntax-2
checkout --force|-v|-q|-f <file> <uri> <jcrPath> <localPath>
選項 options-2
--force
-v (--verbose)
-q (--quiet)
-f (--filter) <file>
<uri>
<jcrPath>
<localPath>
範例 examples-2
使用JCR遠端:
vlt --credentials admin:admin co http://localhost:8080/crx/server/crx.default/jcr_root/
使用預設工作區:
vlt --credentials admin:admin co http://localhost:8080/crx/server/-/jcr_root/
如果URI不完整,則會展開:
vlt --credentials admin:admin co http://localhost:8080/crx
分析 analyze
分析封裝。
語法 syntax-3
analyze -l <format>|-v|-q <localPaths1> [<localPaths2> ...]
選項 options-3
-l (--linkFormat) <format>
-v (--verbose)
-q (--quiet)
<localPaths> [<localPaths> ...]
狀態 status
列印工作復本檔案和目錄的狀態。
如果指定--show-update
,則會針對遠端版本檢查每個檔案。 第二個字母接著會指定更新作業要執行的動作。
語法 syntax-4
status -v|-q|-u|-N <file1> [<file2> ...]
選項 options-4
-v (--verbose)
-q (--quiet)
-u (--show-update)
-N (--non-recursive)
<file> [<file> ...]
更新 update
將變更從存放庫複製到工作復本。
語法 syntax-5
update -v|-q|--force|-N <file1> [<file2> ...]
選項 options-5
-v (--verbose)
-q (--quiet)
--force
-N (--non-recursive)
<file> [<file> ...]
資訊 info
顯示本機檔案的相關資訊。
語法 syntax-6
info -v|-q|-R <file1> [<file2> ...]
選項 options-6
-v (--verbose)
-q (--quiet)
-R (--recursive)
<file> [<file> ...]
提交 commit
將工作復本中的變更傳送至存放庫。
語法 syntax-7
commit -v|-q|--force|-N <file1> [<file2> ...]
選項 options-7
-v (--verbose)
-q (--quiet)
--force
-N (--non-recursive)
<file> [<file> ...]
還原 revert
將工作復本檔案還原為原始狀態,並復原大部分的本機編輯。
語法 syntax-8
revert -q|-R <file1> [<file2> ...]
選項 options-8
-q (--quiet)
-R (--recursive)
<file> [<file> ...]
已解決 resolved
移除工作復本檔案或目錄上的 衝突 狀態。
語法 syntax-9
resolved -q|-R|--force <file1> [<file2> ...]
選項 options-9
-q (--quiet)
-R (--recursive)
--force
<file> [<file> ...]
Propget propget
列印檔案或目錄上的屬性值。
語法 syntax-10
propget -q|-R <propname> <file1> [<file2> ...]
選項 options-10
-q (--quiet)
-R (--recursive)
<propname>
<file> [<file> ...]
Proplist proplist
列印檔案或目錄上的內容。
語法 syntax-11
proplist -q|-R <file1> [<file2> ...]
選項 options-11
-q (--quiet)
-R (--recursive)
<file> [<file> ...]
Propset propset
設定檔案或目錄上的屬性值。
vlt:mime-type
語法 syntax-12
propset -q|-R <propname> <propval> <file1> [<file2> ...]
選項 options-12
-q (--quiet)
-R (--recursive)
<propname>
<propval>
<file> [<file> ...]
新增 add
將檔案和目錄置於版本控制之下,並排程將其加入存放庫。 它們將在下次認可時新增。
語法 syntax-13
add -v|-q|-N|--force <file1> [<file2> ...]
選項 options-13
-v (--verbose)
-q (--quiet)
-N (--non-recursive)
--force
<file> [<file> ...]
刪除 delete
從版本控制中移除檔案和目錄。
語法 syntax-14
delete -v|-q|--force <file1> [<file2> ...]
選項 options-14
-v (--verbose)
-q (--quiet)
--force
<file> [<file> ...]
差異 diff
顯示兩個路徑之間的差異。
語法 syntax-15
diff -N <file1> [<file2> ...]
選項 options-15
-N (--non-recursive)
<file> [<file> ...]
主控台 console
執行互動式主控台。
語法 syntax-16
console -F <file>
選項 options-16
-F (--console-settings) <file>
Rcp rcp
將節點樹從一個遠端存放庫複製到另一個存放庫。 <src>
指向來源節點,<dst>
指定父節點必須存在的目的地路徑。 Rcp會透過串流資料來處理節點。
語法 syntax-17
rcp -q|-r|-b <size>|-t <seconds>|-u|-n|-e <arg1> [<arg2> ...] <src> <dst>
選項 options-17
-q (--quiet)
-r (--recursive)
-b (--batchSize) <size>
-t (--throttle) <seconds>
-u (--update)
-n (--newer)
-e (--exclude) <arg> [<arg> ...]
<src>
<dst>
範例 examples-3
vlt rcp http://localhost:4502/crx/-/jcr:root/content https://admin:admin@localhost:4503/crx/-/jcr:root/content_copy
--exclude
選項後面必須接著另一個選項,在<src>
和<dst>
引數之前。 例如:vlt rcp -e ".*\.txt" -r
同步 sync
可讓您控制儲存庫同步服務。 這個命令會嘗試將目前的工作目錄置於同步控制之下,而不使用任何引數。 如果在vlt簽出內執行,它會使用個別篩選器和主機來設定同步。 如果在vlt出庫之外執行,則只有在目錄為空時,它才會註冊目前的資料夾以進行同步處理。
語法 syntax-18
sync -v|--force|-u <uri> <command> <localPath>
選項 options-18
-v (--verbose)
--force
-u (--uri) <uri>
<command>
<localPath>
狀態代碼 status-codes
VLT使用的狀態代碼為:
- ' '沒有修改
- 'A'已新增
- 'C'衝突
- 'D'已刪除
- 已忽略'I'
- 'M'已修改
- 已取代'R'
- '?' 專案不受版本控制
- '!' 專案遺失(由非svn命令移除)或不完整
- '~'版本化專案被其他型別的專案所阻擋
設定FileVault同步 setting-up-filevault-sync
儲存庫同步服務可用來將存放庫內容與本機檔案系統表示同步,反之亦然。 這是透過安裝OSGi服務來達成,該服務將監聽存放庫變更並定期掃描檔案系統內容。 它使用與儲存庫相同的序列化格式,將存放庫內容對應到磁碟。
使用vlt安裝服務 installing-the-service-using-vlt
vlt sync install
命令可用來自動安裝儲存庫同步服務套件組合與組態。
組合安裝在/libs/crx/vault/install
下方,且在/libs/crx/vault/com.day.jcr.sync.impl.VaultSyncServiceImpl
建立設定節點。 最初啟用服務,但未設定同步處理根目錄。
下列範例會將同步服務安裝至特定URI可存取的CRX執行個體。
$ vlt --credentials admin:admin sync --uri http://localhost:4502/crx install
顯示服務狀態 displaying-the-service-status
status
命令可用來顯示有關執行中同步處理服務的資訊。"
$ vlt sync status --uri http://localhost:4502/crx
Connecting via JCR remoting to http://localhost:4502/crx/server
Listing sync status for http://localhost:4502/crx/server/-/jcr:root
- Sync service is enabled.
- No sync directories configured.
status
命令並未從服務擷取任何即時資料,而是在/libs/crx/vault/com.day.jcr.sync.impl.VaultSyncServiceImpl
讀取組態。新增同步處理資料夾 adding-a-sync-folder
register
命令是用來新增資料夾,以同步處理至組態。
$ vlt sync register
Connecting via JCR remoting to http://localhost:4502/crx/server
Added new sync directory: /tmp/workspace/vltsync/jcr_root
sync-once
組態之前,register
命令不會觸發同步處理。移除同步資料夾 removing-a-sync-folder
unregister
命令用於從設定中移除要同步的資料夾。
$ vlt sync unregister
Connecting via JCR remoting to http://localhost:4502/crx/server
Removed sync directory: /tmp/workspace/vltsync/jcr_root
設定同步 configuring-synchronization
服務設定 service-configuration
服務執行後,可使用下列引數加以設定:
-
vault.sync.syncroots
:定義同步根目錄的一或多個本機檔案系統路徑。 -
vault.sync.fscheckinterval
:應掃描檔案系統以進行變更的頻率(以秒為單位)。 預設值為5秒。 -
vault.sync.enabled
:啟用/停用服務的一般旗標。
sling:OsgiConfig
節點(名稱為com.day.jcr.sync.impl.VaultSyncServiceImpl
)進行設定。同步資料夾設定 sync-folder-configuration
每個同步資料夾都會將設定和狀態儲存在三個檔案中:
-
.vlt-sync-config.properties
:組態檔。 -
.vlt-sync.log
:記錄檔,其中包含同步期間所執行作業的相關資訊。 -
.vlt-sync-filter.xml
:定義要同步存放庫哪些部分的篩選器。 此檔案的格式由執行篩選的簽出區段描述。
.vlt-sync-config.properties
檔案可讓您設定下列屬性:
已停用 開啟或關閉同步處理。 此引數預設設為false以允許同步。
同步一次 若非空白,下次掃描將會以指定方向同步資料夾,然後會清除引數。 支援兩個值:
JCR2FS
:匯出JCR存放庫中的所有內容,並寫入本機磁碟。FS2JCR
:將所有內容從磁碟匯入JCR存放庫。
sync-log 定義日誌檔名。 預設值為.vlt-sync.log
使用VLT同步進行開發 using-vlt-sync-for-development
若要根據同步資料夾設定開發環境,請依照下列步驟進行:
-
使用vlt命令列簽出您的存放庫:
code language-shell $ vlt --credentials admin:admin co --force http://localhost:4502/crx dev
note note NOTE 您可以使用篩選器來僅簽出適當的路徑。 如需詳細資訊,請參閱執行篩選的簽出區段。 -
移至工作復本的根資料夾:
code language-shell $ cd dev/jcr_root/
-
將同步服務安裝到您的存放庫:
code language-xml $ vlt sync install Connecting via JCR remoting to http://localhost:4502/crx/server Preparing to install vault-sync-2.4.24.jar... Updated bundle: vault-sync-2.4.24.jar Created new config at /libs/crx/vault/config/com.day.jcr.sync.impl.VaultSyncServiceImpl
-
初始化同步服務:
code language-shell $ vlt sync Connecting via JCR remoting to http://localhost:4502/crx/server Starting initialization of sync service in existing vlt checkout /Users/colligno/Applications/cq5/vltsync/sandbox/dev/jcr_root for http://localhost:4502/crx/server/-/jcr:root Added new sync directory: /Users/trushton/Applications/aem/vltsync/sandbox/dev/jcr_root The directory /Users/trushton/Applications/aem/vltsync/sandbox/dev/jcr_root is now enabled for syncing. You might perform a 'sync-once' by setting the appropriate flag in the /Users/trushton/Applications/aem/vltsync/sandbox/dev/jcr_root/.vlt-sync-config.properties file.
-
編輯
.vlt-sync-config.properties
隱藏檔案並設定同步以同步存放庫的內容:code language-xml sync-once=JCR2FS
note note NOTE 此步驟會根據您的篩選器設定下載整個存放庫。 -
檢查記錄檔
.vlt-sync.log
以檢視進度:code language-xml *** 30.04.2017 14:39:10 A file:///Users/trushton/Applications/aem/vltsync/sandbox/dev/jcr_root/apps/geometrixx-outdoors/src/core/src/main/java/info/geometrixx/outdoors/ 30.04.2017 14:39:10 A file:///Users/trushton/Applications/aem/vltsync/sandbox/dev/jcr_root/apps/geometrixx-outdoors/src/core/src/main/java/info/geometrixx/outdoors/core/ 30.04.2017 14:39:10 A file:///Users/trushton/Applications/aem/vltsync/sandbox/dev/jcr_root/apps/geometrixx-outdoors/src/core/src/main/java/info/geometrixx/outdoors/core/product/ 30.04.2017 14:39:10 A file:///Users/trushton/Applications/aem/vltsync/sandbox/dev/jcr_root/apps/geometrixx-outdoors/src/core/src/main/java/info/geometrixx/outdoors/core/product/GeoProduct.java ***
您的本機資料夾現在與存放庫同步。 同步是雙向的,因此來自存放庫的修改將套用至您的本機同步資料夾,反之亦然。