# HG changeset patch # User Jun Wu # Date 1506017017 25200 # Node ID b1d4ac0689616f0ad0624dc341cba7bf15df7900 # Parent 25e1a8876cc0e12cf9a4bb270587ae5dbc289117 blackbox: do not prevent 'chg init' from working Previously, blackbox always appends to blackbox.log and creates the directory for that file on demand. That could be an issue if: 1. chg starts from `$REPO` directory, so `ui._bbrepo` is set. 2. `rm -rf $REPO`. 3. `chg init $REPO`, blackbox writes something and `init` will fail because `$REPO` directory is non-empty. This patch fixes that by verifying whether vfs exists before re-using it. Differential Revision: https://phab.mercurial-scm.org/D768 diff -r 25e1a8876cc0 -r b1d4ac068961 hgext/blackbox.py --- a/hgext/blackbox.py Mon Sep 11 20:07:41 2017 -0400 +++ b/hgext/blackbox.py Thu Sep 21 11:03:37 2017 -0700 @@ -77,9 +77,13 @@ class blackboxui(ui.__class__): @property def _bbvfs(self): + vfs = None repo = getattr(self, '_bbrepo', None) if repo: - return repo.vfs + vfs = repo.vfs + if not vfs.isdir('.'): + vfs = None + return vfs @util.propertycache def track(self): @@ -136,6 +140,10 @@ if not ui: return + vfs = ui._bbvfs + if not vfs: + return + repo = getattr(ui, '_bbrepo', None) if not lastui or repo: lastui = ui diff -r 25e1a8876cc0 -r b1d4ac068961 tests/test-blackbox.t --- a/tests/test-blackbox.t Mon Sep 11 20:07:41 2017 -0400 +++ b/tests/test-blackbox.t Thu Sep 21 11:03:37 2017 -0700 @@ -293,6 +293,13 @@ $ cd .. +With chg, blackbox should not create the log file if the repo is gone + + $ hg init repo1 + $ hg --config extensions.a=! -R repo1 log + $ rm -rf $TESTTMP/repo1 + $ hg --config extensions.a=! init repo1 + #endif blackbox should work if repo.ui.log is not called (issue5518)