Open kitarek opened 6 years ago
Have you tried repo checkout /_oak_index
? This might work right now, although agree that this is a bit unfortunate for the checkout
command, where you probably expect to pass the JCR path.
Generally, repo commands expect the file system path as argument, not the JCR path. Currently the mapping of the vault mapped paths for namespaces in file or directory names is only done in one direction, from mapped to jcr, such as _oak_index
to oak:index
.
Thanks @alexkli for a workaround.
Yeah it works: repo checkout '/_oak_index'
+ local base=/var/folders/lg/v9sb730x7hx5x9nlnmsc8cx00000gn/T/repo.XXX.7klmsNQs
++ filesystem_to_jcr /_oak_index
++ local filter=/_oak_index
++ filter=/_oak_index
++ filter=/_oak_index
++ filter=/_oak_index
++ filter=/_oak_index
++ filter=/oak:index
++ filter=/oak:index
++ filter=/oak:index
++ filter=/oak:index
++ filter=/oak:index
++ filter=/oak:index
++ filter=/oak:index
+++ urldecode /oak:index
+++ printf %b /oak:index
++ filter=/oak:index
++ echo /oak:index
+ local filter=/oak:index
+ local pkgGroup=tmp/repo
+ local pkgName=repo-oakindex
+ local pkgVersion=1520508470
OK I see now.
Probably users passing arguments to get command will expect the same:
get download server content to local file system
Can we expect JCR and map it back to filesystem object? Is this really needed? I guess for JCR VLT filter you'll already have a correct value from command line (it needs to be sanitized if it's not) but you probably use rsync
and you know what physically is in the package contents (archive)? An I right?
I'm thinking about pushing a PR for that in a free time.. but I need to be sure I won't break here any tool assumptions...
Ok, thanks for verifying my hunch.
Actually, in the docs I already state that checkout
gets a <jcr-path>
as argument (raw JCR path), as opposed to <path>
(file system path) as for all the others. So this should probably be fixed ;-) and we should have an inverse of the filesystem_to_jcr() function used for checkout
.
This has to do essentially the same as jackrabbit-filevault's getPlatformName, replace some well known namespace prefixes (as a quick hack; if someone can write the real logic in bash that would be great), then escape the few special chars using %xx
.
For all the other commands the local path must exist, so it can only be a local filevault mapped file system path. Nothing to do there I hope.
I faced the same issue today. I would be great if checkout could handle the transformation. Or not transform at all, as macos does not mind the colons. Or update the docs to reflect this.
The issue summary might need to be re-qualified depending on investigation. The current hypothesis I have is that there are troubles syncing (possibly in both ways) special JCR paths like
/oak:index
that are escaped by VLT. It seems to be related to #5My version
Steps to reproduce on local AEM instance
set -x
line torepo
tool to see debug logs for bashmkdir repo-oak-index
cd repo-oak-index/
repo checkout '/oak:index'
repo checkout '/apps'
works correctly so in general the problem is not related to local environment.The output of 3. is:
What's in the filesystem
Versions
rsync
curl