root: add template variables pointing to repository directories
These paths are useful for GUI applications to detect changes. A GUI process
typically monitors .hg and .hg/store directories so that it will be notified
on lock/wlock deletion.
Alternatively, maybe we can add debugpaths command if we don't want to extend
the root command. I'm not sure which will be nicer.
--- a/mercurial/commands.py Tue Jun 04 20:58:39 2019 +0900
+++ b/mercurial/commands.py Tue Jun 04 21:13:35 2019 +0900
@@ -5232,12 +5232,23 @@
Print the root directory of the current repository.
+ .. container:: verbose
+
+ Template:
+
+ The following keywords are supported in addition to the common template
+ keywords and functions. See also :hg:`help templates`.
+
+ :hgpath: String. Path to the .hg directory.
+ :storepath: String. Path to the directory holding versioned data.
+
Returns 0 on success.
"""
opts = pycompat.byteskwargs(opts)
with ui.formatter('root', opts) as fm:
fm.startitem()
fm.write('reporoot', '%s\n', repo.root)
+ fm.data(hgpath=repo.path, storepath=repo.spath)
@command('serve',
[('A', 'accesslog', '', _('name of access log file to write to'),
--- a/tests/test-basic.t Tue Jun 04 20:58:39 2019 +0900
+++ b/tests/test-basic.t Tue Jun 04 21:13:35 2019 +0900
@@ -101,7 +101,9 @@
$ hg root -Tjson | sed 's|\\\\|\\|g'
[
{
- "reporoot": "$TESTTMP/t"
+ "hgpath": "$TESTTMP/t/.hg",
+ "reporoot": "$TESTTMP/t",
+ "storepath": "$TESTTMP/t/.hg/store"
}
]
--- a/tests/test-clone.t Tue Jun 04 20:58:39 2019 +0900
+++ b/tests/test-clone.t Tue Jun 04 21:13:35 2019 +0900
@@ -719,6 +719,14 @@
$ hg -R src debugrevlog -c | egrep 'format|flags'
format : 0
flags : (none)
+ $ hg root -R src -T json | sed 's|\\\\|\\|g'
+ [
+ {
+ "hgpath": "$TESTTMP/src/.hg",
+ "reporoot": "$TESTTMP/src",
+ "storepath": "$TESTTMP/src/.hg"
+ }
+ ]
$ hg clone -U -q src dst
$ hg -R dst log -q
0:e1bab28bca43
--- a/tests/test-share.t Tue Jun 04 20:58:39 2019 +0900
+++ b/tests/test-share.t Tue Jun 04 21:13:35 2019 +0900
@@ -21,6 +21,14 @@
$ cd repo2
$ test -d .hg/store
[1]
+ $ hg root -Tjson | sed 's|\\\\|\\|g'
+ [
+ {
+ "hgpath": "$TESTTMP/repo2/.hg",
+ "reporoot": "$TESTTMP/repo2",
+ "storepath": "$TESTTMP/repo1/.hg/store"
+ }
+ ]
share shouldn't have a full cache dir, original repo should