diff --git a/hgext/remotefilelog/__init__.py b/hgext/remotefilelog/__init__.py --- a/hgext/remotefilelog/__init__.py +++ b/hgext/remotefilelog/__init__.py @@ -542,14 +542,17 @@ def onetimeclientsetup(ui): # close cache miss server connection after the command has finished def runcommand(orig, lui, repo, *args, **kwargs): + fileservice = None + # repo can be None when running in chg: + # - at startup, reposetup was called because serve is not norepo + # - a norepo command like "help" is called + if repo and isenabled(repo): + fileservice = repo.fileservice try: return orig(lui, repo, *args, **kwargs) finally: - # repo can be None when running in chg: - # - at startup, reposetup was called because serve is not norepo - # - a norepo command like "help" is called - if repo and isenabled(repo): - repo.fileservice.close() + if fileservice: + fileservice.close() extensions.wrapfunction(dispatch, 'runcommand', runcommand) # disappointing hacks below diff --git a/tests/test-remotefilelog-share.t b/tests/test-remotefilelog-share.t --- a/tests/test-remotefilelog-share.t +++ b/tests/test-remotefilelog-share.t @@ -22,3 +22,4 @@ $ hg share source dest updating working directory 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg -R dest unshare