# HG changeset patch # User Sean Farley <sean@farley.io> # Date 1472865961 25200 # Fri Sep 02 18:26:01 2016 -0700 # Node ID 9c15c89088fd57212a19e969d8de66491b66c974 # Parent 1fec6463922bba1193f3637b071bda88f2786cac gitdirstate: only wrap for hg-git repos Previously, if a user enables hg-git and in a non-git repo (i.e. hg-only) they have a .gitignore, then hg-git will try to parse that. I consider this a bug and a bad performance regression for what should be a no-op. diff --git a/hggit/__init__.py b/hggit/__init__.py --- a/hggit/__init__.py +++ b/hggit/__init__.py @@ -208,7 +208,9 @@ if not isinstance(repo, gitrepo.gitrepo): if (getattr(dirstate, 'rootcache', False) and - (not ignoremod or getattr(ignore, 'readpats', False))): + (not ignoremod or getattr(ignore, 'readpats', False)) and + hgutil.safehasattr(repo, 'join') and + os.path.exists(repo.join('git'))): # only install our dirstate wrapper if it has a hope of working import gitdirstate if ignoremod: diff --git a/tests/test-gitignore.t b/tests/test-gitignore.t --- a/tests/test-gitignore.t +++ b/tests/test-gitignore.t @@ -5,6 +5,11 @@ $ hg init +We should only read .gitignore files in a hg-git repo (i.e. one with .hg/git +directory) otherwise, a rogue .gitignore could slow down a hg-only repo + + $ mkdir .hg/git + $ touch foo $ touch foobar $ touch bar