# HG changeset patch # User Yuya Nishihara # Date 2019-06-04 12:13:35 # Node ID 69883775b27dd1c56154ff4317a784d6a04d6d9a # Parent 9803323048b67cb8b53746f2554242073a089ce0 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. diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -5232,12 +5232,23 @@ def root(ui, repo, **opts): 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'), diff --git a/tests/test-basic.t b/tests/test-basic.t --- a/tests/test-basic.t +++ b/tests/test-basic.t @@ -101,7 +101,9 @@ Repository root: $ hg root -Tjson | sed 's|\\\\|\\|g' [ { - "reporoot": "$TESTTMP/t" + "hgpath": "$TESTTMP/t/.hg", + "reporoot": "$TESTTMP/t", + "storepath": "$TESTTMP/t/.hg/store" } ] diff --git a/tests/test-clone.t b/tests/test-clone.t --- a/tests/test-clone.t +++ b/tests/test-clone.t @@ -719,6 +719,14 @@ Test clone from the repository in (emula $ 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 diff --git a/tests/test-share.t b/tests/test-share.t --- a/tests/test-share.t +++ b/tests/test-share.t @@ -21,6 +21,14 @@ share shouldn't have a store dir $ 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