diff --git a/hgext/largefiles/lfutil.py b/hgext/largefiles/lfutil.py --- a/hgext/largefiles/lfutil.py +++ b/hgext/largefiles/lfutil.py @@ -92,16 +92,30 @@ path = ui.configpath(name, b'usercache') if path: return path + + hint = None + if pycompat.iswindows: appdata = encoding.environ.get( b'LOCALAPPDATA', encoding.environ.get(b'APPDATA') ) if appdata: return os.path.join(appdata, name) + + hint = _(b"define %s or %s in the environment, or set %s.usercache") % ( + b"LOCALAPPDATA", + b"APPDATA", + name, + ) elif pycompat.isdarwin: home = encoding.environ.get(b'HOME') if home: return os.path.join(home, b'Library', b'Caches', name) + + hint = _(b"define %s in the environment, or set %s.usercache") % ( + b"HOME", + name, + ) elif pycompat.isposix: path = encoding.environ.get(b'XDG_CACHE_HOME') if path: @@ -109,11 +123,18 @@ home = encoding.environ.get(b'HOME') if home: return os.path.join(home, b'.cache', name) + + hint = _(b"define %s or %s in the environment, or set %s.usercache") % ( + b"XDG_CACHE_HOME", + b"HOME", + name, + ) else: raise error.Abort( _(b'unknown operating system: %s\n') % pycompat.osname ) - raise error.Abort(_(b'unknown %s usercache location') % name) + + raise error.Abort(_(b'unknown %s usercache location') % name, hint=hint) def inusercache(ui, hash): diff --git a/tests/test-lfs-bundle.t b/tests/test-lfs-bundle.t --- a/tests/test-lfs-bundle.t +++ b/tests/test-lfs-bundle.t @@ -95,3 +95,32 @@ OK ---- Applying src-lfs.bundle to dst-lfs ---- OK + +Hint if the cache location cannot be inferred from the environment + +#if windows + $ unset LOCALAPPDATA + $ unset APPDATA + $ HGRCPATH= hg config lfs --debug + abort: unknown lfs usercache location + (define LOCALAPPDATA or APPDATA in the environment, or set lfs.usercache) + [255] +#endif + +#if osx + $ unset HOME + $ HGRCPATH= hg config lfs --debug + abort: unknown lfs usercache location + (define HOME in the environment, or set lfs.usercache) + [255] +#endif + +#if no-windows no-osx + $ unset XDG_CACHE_HOME + $ unset HOME + $ HGRCPATH= hg config lfs --debug + abort: unknown lfs usercache location + (define XDG_CACHE_HOME or HOME in the environment, or set lfs.usercache) + [255] +#endif +