internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: pre-commit/pre-commit

Issue:
init-templatedir installing hooks to wrong directory
I was trying to use the init-templatedir functionality of pre-commit and ran into a weird problem:

Using Windows 10, pre-commit 2.9.2, git version 2.29.2.windows.1

I followed the example on the pre-commit.com website and used:
```
git config --global init.templateDir ~/.git-template
pre-commit init-templatedir ~/.git-template
```
![grafik](https://user-images.githubusercontent.com/11942682/100527714-36ac7900-31d5-11eb-8312-ab5dc966e7ea.png)

It wants me to be in a git repository (I thought you prevented this with da80cc6479154c0a0a6096d183f9d1d72aae556b).
So i switched to a git repository and rerun 
```
pre-commit init-templatedir ~/.git-template
```
![grafik](https://user-images.githubusercontent.com/11942682/100527744-a7ec2c00-31d5-11eb-8b45-4bcc4093dd12.png)

the hooks aren't installed in the stated directory.
Based on the warnings it looks like pre-commit isn't resolving the ~ correctly, or did I miss sth.?

```
git config --get init.templateDir 
```
returns ~/.git-template

![grafik](https://user-images.githubusercontent.com/11942682/100527765-e41f8c80-31d5-11eb-95d6-9fc95aa96841.png)



Discussion:

Resolving patch:
diff --git a/pre_commit/git.py b/pre_commit/git.py
--- a/pre_commit/git.py
+++ b/pre_commit/git.py
@@ -201,7 +201,10 @@ def check_for_cygwin_mismatch() -> None:
     """See https://github.com/pre-commit/pre-commit/issues/354"""
     if sys.platform in ('cygwin', 'win32'):  # pragma: no cover (windows)
         is_cygwin_python = sys.platform == 'cygwin'
-        toplevel = get_root()
+        try:
+            toplevel = get_root()
+        except FatalError:  # skip the check if we're not in a git repo
+            return
         is_cygwin_git = toplevel.startswith('/')
 
         if is_cygwin_python ^ is_cygwin_git:


Test patch:
Repository: pre-commit/pre-commit

Issue:
[pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/asottile/pyupgrade: v2.25.0 → v2.26.0](https://github.com/asottile/pyupgrade/compare/v2.25.0...v2.26.0)



Discussion:

Resolving patch:
diff --git a/pre_commit/commands/install_uninstall.py b/pre_commit/commands/install_uninstall.py
--- a/pre_commit/commands/install_uninstall.py
+++ b/pre_commit/commands/install_uninstall.py
@@ -1,6 +1,7 @@
 import itertools
 import logging
 import os.path
+import shlex
 import shutil
 import sys
 from typing import Optional
@@ -100,19 +101,17 @@ def _install_hook_script(
     args = ['hook-impl', f'--config={config_file}', f'--hook-type={hook_type}']
     if skip_on_missing_config:
         args.append('--skip-on-missing-config')
-    params = {'INSTALL_PYTHON': sys.executable, 'ARGS': args}
 
     with open(hook_path, 'w') as hook_file:
         contents = resource_text('hook-tmpl')
         before, rest = contents.split(TEMPLATE_START)
-        to_template, after = rest.split(TEMPLATE_END)
-
-        before = before.replace('#!/usr/bin/env python3', shebang())
+        _, after = rest.split(TEMPLATE_END)
 
         hook_file.write(before + TEMPLATE_START)
-        for line in to_template.splitlines():
-            var = line.split()[0]
-            hook_file.write(f'{var} = {params[var]!r}\n')
+        hook_file.write(f'INSTALL_PYTHON={shlex.quote(sys.executable)}\n')
+        # TODO: python3.8+: shlex.join
+        args_s = ' '.join(shlex.quote(part) for part in args)
+        hook_file.write(f'ARGS=({args_s})\n')
         hook_file.write(TEMPLATE_END + after)
     make_executable(hook_path)
 


Test patch:
diff --git a/tests/commands/install_uninstall_test.py b/tests/commands/install_uninstall_test.py
--- a/tests/commands/install_uninstall_test.py
+++ b/tests/commands/install_uninstall_test.py
@@ -278,11 +278,7 @@ def test_environment_not_sourced(tempdir_factory, store):
         hook = os.path.join(path, '.git/hooks/pre-commit')
         with open(hook) as f:
             src = f.read()
-        src = re.sub(
-            '\nINSTALL_PYTHON =.*\n',
-            '\nINSTALL_PYTHON = "/dne"\n',
-            src,
-        )
+        src = re.sub('\nINSTALL_PYTHON=.*\n', '\nINSTALL_PYTHON="/dne"\n', src)
         with open(hook, 'w') as f:
             f.write(src)
Repository: pre-commit/pre-commit

Issue:
doesn't work in visual studio 2019 on Windows
### describe your issue

When I try to commit from visual studio 2019, I get the following message:
```
/usr/bin/env: ‘bash’: No such file or directory
```

I have confirmed that it works from vscode and command prompt.
I rewrote the `.git/hooks/pre-commit` to below and it worked.
```
#!/usr/bin/env sh
```

As far as I can see, visual studio git hooks only support `sh`.
Are you aware of this problem?

thank you.


### pre-commit --version

pre-commit 2.16.0

### .pre-commit-config.yaml

```yaml
repos:
  - repo: https://github.com/pre-commit/mirrors-clang-format
    rev: v13.0.0
    hooks:
      - id: clang-format
```


### ~/.cache/pre-commit/pre-commit.log (if present)

_No response_


Discussion:
that's odd -- what version of `git` are you using? (it ships with `bash` because parts of `git` use bash)
git version is the latest `git version 2.34.1.windows.1`.

---
By the way, when shebang was changed to `#!/bin/bash`, the following message was output.
```
Your git-hook, '.git/hooks/pre-commit', is not supported, likely because the first line is not \"#!/bin/sh\".\r\nSee your administrator for additional assistance. 
```

From above messages, I guessed that Visual Studio 2019 only supports sh.
interesting, does `#!/bin/bash` work?
No. As far as I can see, only `#!/usr/bin/env sh` and `#!/bin/sh` work.

Resolving patch:
diff --git a/pre_commit/commands/install_uninstall.py b/pre_commit/commands/install_uninstall.py
--- a/pre_commit/commands/install_uninstall.py
+++ b/pre_commit/commands/install_uninstall.py
@@ -82,6 +82,13 @@ def _install_hook_script(
         before, rest = contents.split(TEMPLATE_START)
         _, after = rest.split(TEMPLATE_END)
 
+        # on windows always use `/bin/sh` since `bash` might not be on PATH
+        # though we use bash-specific features `sh` on windows is actually
+        # bash in "POSIXLY_CORRECT" mode which still supports the features we
+        # use: subshells / arrays
+        if sys.platform == 'win32':  # pragma: win32 cover
+            hook_file.write('#!/bin/sh\n')
+
         hook_file.write(before + TEMPLATE_START)
         hook_file.write(f'INSTALL_PYTHON={shlex.quote(sys.executable)}\n')
         # TODO: python3.8+: shlex.join


Test patch:
Repository: pre-commit/pre-commit

Issue:
Add GIT_HTTP_PROXY_AUTHMETHOD to kept environment variables
### describe your issue

On the cluster I work on, there’s a proxy. It’s… Let’s just say that proxy is being a pain, and to make it work we have to set the environment variable GIT_HTTP_PROXY_AUTHMETHOD.

In pre_commit/git.py however, only a small subset of variables are kept, and that one is not among them. So, sure, I can (and did) edit the script to keep that one too (and it works now) but it’s not ideal.

### pre-commit --version

pre-commit 2.17.0

### .pre-commit-config.yaml

```yaml
Not relevant
```


### ~/.cache/pre-commit/pre-commit.log (if present)

_No response_


Discussion:
sounds fine! would you like to send a PR?

Resolving patch:
diff --git a/pre_commit/git.py b/pre_commit/git.py
--- a/pre_commit/git.py
+++ b/pre_commit/git.py
@@ -43,6 +43,7 @@ def no_git_env(
         k in {
             'GIT_EXEC_PATH', 'GIT_SSH', 'GIT_SSH_COMMAND', 'GIT_SSL_CAINFO',
             'GIT_SSL_NO_VERIFY', 'GIT_CONFIG_COUNT',
+            'GIT_HTTP_PROXY_AUTHMETHOD',
         }
     }
 


Test patch:
Repository: pre-commit/pre-commit

Issue:
warnings for regexes don't apply to `repo: local`
looks like these were left out -- should be a pretty easy patch similar to #1707 / #1750


Discussion:

Resolving patch:
diff --git a/pre_commit/clientlib.py b/pre_commit/clientlib.py
--- a/pre_commit/clientlib.py
+++ b/pre_commit/clientlib.py
@@ -298,6 +298,14 @@ def check(self, dct: dict[str, Any]) -> None:
     OptionalSensibleRegexAtHook('files', cfgv.check_string),
     OptionalSensibleRegexAtHook('exclude', cfgv.check_string),
 )
+LOCAL_HOOK_DICT = cfgv.Map(
+    'Hook', 'id',
+
+    *MANIFEST_HOOK_DICT.items,
+
+    OptionalSensibleRegexAtHook('files', cfgv.check_string),
+    OptionalSensibleRegexAtHook('exclude', cfgv.check_string),
+)
 CONFIG_REPO_DICT = cfgv.Map(
     'Repository', 'repo',
 
@@ -308,7 +316,7 @@ def check(self, dct: dict[str, Any]) -> None:
         'repo', cfgv.NotIn(LOCAL, META),
     ),
     cfgv.ConditionalRecurse(
-        'hooks', cfgv.Array(MANIFEST_HOOK_DICT),
+        'hooks', cfgv.Array(LOCAL_HOOK_DICT),
         'repo', LOCAL,
     ),
     cfgv.ConditionalRecurse(


Test patch:
diff --git a/tests/clientlib_test.py b/tests/clientlib_test.py
--- a/tests/clientlib_test.py
+++ b/tests/clientlib_test.py
@@ -15,6 +15,8 @@
 from pre_commit.clientlib import MANIFEST_SCHEMA
 from pre_commit.clientlib import META_HOOK_DICT
 from pre_commit.clientlib import MigrateShaToRev
+from pre_commit.clientlib import OptionalSensibleRegexAtHook
+from pre_commit.clientlib import OptionalSensibleRegexAtTop
 from pre_commit.clientlib import validate_config_main
 from pre_commit.clientlib import validate_manifest_main
 from testing.fixtures import sample_local_config
@@ -261,6 +263,27 @@ def test_warn_mutable_rev_conditional():
         cfgv.validate(config_obj, CONFIG_REPO_DICT)
 
 
+@pytest.mark.parametrize(
+    'validator_cls',
+    (
+        OptionalSensibleRegexAtHook,
+        OptionalSensibleRegexAtTop,
+    ),
+)
+def test_sensible_regex_validators_dont_pass_none(validator_cls):
+    key = 'files'
+    with pytest.raises(cfgv.ValidationError) as excinfo:
+        validator = validator_cls(key, cfgv.check_string)
+        validator.check({key: None})
+
+    assert str(excinfo.value) == (
+        '\n'
+        f'==> At key: {key}'
+        '\n'
+        '=====> Expected string got NoneType'
+    )
+
+
 @pytest.mark.parametrize(
     ('regex', 'warning'),
     (
@@ -296,6 +319,22 @@ def test_validate_optional_sensible_regex_at_hook(caplog, regex, warning):
     assert caplog.record_tuples == [('pre_commit', logging.WARNING, warning)]
 
 
+def test_validate_optional_sensible_regex_at_local_hook(caplog):
+    config_obj = sample_local_config()
+    config_obj['hooks'][0]['files'] = r'dir/*.py'
+
+    cfgv.validate(config_obj, CONFIG_REPO_DICT)
+
+    assert caplog.record_tuples == [
+        (
+            'pre_commit',
+            logging.WARNING,
+            "The 'files' field in hook 'do_not_commit' is a regex, not a glob "
+            "-- matching '/*' probably isn't what you want here",
+        ),
+    ]
+
+
 @pytest.mark.parametrize(
     ('regex', 'warning'),
     (
Repository: pre-commit/pre-commit

Issue:
Alternative to stashing files for testing
Are there any plans to implement alternatives to stashing the worktree?

Ideally this would be hook/scriptable, like some 'prepare-worktree' and 'restore-worktree' options (which default to the current stash behavior) but can also yield some new directory where the tests are run. The rationale here is that my editor reverts files changed on disk and I'd like to add notes to  source files while the commit is in progress.

In my own pre-commit hooks I use something like:

     git archive "$(git write-tree)" --prefix="$test_dir/" | tar xf -

To create a pristine source tree (actually, I also prime it with `cp -rl` with build artifacts from the previous build to speed up incremental builds). 'git-worktree' and other tools could be used as well...

Eventually I have the idea to run some (more expensive) pre-commit checks in the background while one types the  commit message. Then in the commit-msg hook wait for the background results and abort the commit there. This should reduce the turn around times significantly.





Discussion:
> Are there any plans to implement alternatives to stashing the worktree?

nope!  but thanks for the issue nonetheless

Resolving patch:
diff --git a/pre_commit/languages/swift.py b/pre_commit/languages/swift.py
--- a/pre_commit/languages/swift.py
+++ b/pre_commit/languages/swift.py
@@ -44,7 +44,7 @@ def install_environment(
     os.mkdir(envdir)
     cmd_output_b(
         'swift', 'build',
-        '-C', prefix.prefix_dir,
+        '--package-path', prefix.prefix_dir,
         '-c', BUILD_CONFIG,
         '--build-path', os.path.join(envdir, BUILD_DIR),
     )


Test patch:
Repository: pre-commit/pre-commit

Issue:
Use of --dev deprecated for npm
I'm seeing this warning sometimes (output seems to be hidden unless the install fails):

```
npm WARN install Usage of the `--dev` option is deprecated. Use `--include=dev` instead.
```

Which seems to be because of this:

https://github.com/pre-commit/pre-commit/blob/fe436f1eb09dfdd67032b4f9f8dfa543fb99cf06/pre_commit/languages/node.py#L104

The problem with this command was that it installed dependencies recursively, rendering them useless (AFAICT, not a node expert). The developers decided it was only a footgun in https://github.com/npm/npm/issues/5554#issuecomment-56121953 and deprecated in https://github.com/npm/npm/issues/6200.


Discussion:
it's a break either way to change it -- since old npm doesn't support the new flag

the unfortunate thing is that's the command that was recommended by the npm team so...
What about selecting the flag based on npm version, could that be done here? If so I could look up the version that --include=dev was added. 
good luck parsing npm's version and doing anything reasonable with it 😆 .  I don't think that's a solution which gives long term stability
did some research on this, and it looks like we can't replace the code we have for this until *at least* npm 6.x is no longer supported.  which would be the EOL of node 14 2023-04-30
[@asottile ](https://github.com/pre-commit/pre-commit/issues/1983#issuecomment-908807469) And here we are.

Resolving patch:
diff --git a/pre_commit/languages/node.py b/pre_commit/languages/node.py
--- a/pre_commit/languages/node.py
+++ b/pre_commit/languages/node.py
@@ -93,7 +93,7 @@ def install_environment(
         # install as if we installed from git
 
         local_install_cmd = (
-            'npm', 'install', '--dev', '--prod',
+            'npm', 'install', '--include=dev', '--include=prod',
             '--ignore-prepublish', '--no-progress', '--no-save',
         )
         lang_base.setup_cmd(prefix, local_install_cmd)


Test patch:
Repository: readthedocs/readthedocs.org

Issue:
Debug bzr tag issue
Traceback (most recent call last):
  File "/home/docs/checkouts/readthedocs.org/readthedocs/projects/tasks.py", line 345, in update_imported_docs
    tags = version_repo.tags
  File "/home/docs/checkouts/readthedocs.org/readthedocs/vcs_support/backends/bzr.py", line 46, in tags
    return self.parse_tags(stdout)
  File "/home/docs/checkouts/readthedocs.org/readthedocs/vcs_support/backends/bzr.py", line 60, in parse_tags
    for name, commit in raw_tags:
ValueError: too many values to unpack



Discussion:

Resolving patch:
diff --git a/readthedocs/vcs_support/backends/bzr.py b/readthedocs/vcs_support/backends/bzr.py
--- a/readthedocs/vcs_support/backends/bzr.py
+++ b/readthedocs/vcs_support/backends/bzr.py
@@ -1,4 +1,5 @@
 import csv
+import re
 from StringIO import StringIO
 
 from projects.exceptions import ProjectImportError
@@ -58,7 +59,8 @@ def parse_tags(self, data):
             0.2.0-pre-alpha      177
         """
         # parse the lines into a list of tuples (commit-hash, tag ref name)
-        raw_tags = csv.reader(StringIO(data), delimiter=' ')
+        squashed_data = re.sub(r' +', ' ', data)
+        raw_tags = csv.reader(StringIO(squashed_data), delimiter=' ')
         vcs_tags = []
         for name, commit in raw_tags:
             vcs_tags.append(VCSVersion(self, commit, name))


Test patch:
Repository: readthedocs/readthedocs.org

Issue:
Edit on GitHub link is broken for branches with e.g. slash in the name
If you have docs built from a branch with e.g. slash in the name, like `v1.x/master`, then RTD will "slugify" it and use v1.x-master in URLs. That's OK.

The problem is that RTD use this slugified branch name to construct the "Edit on GitHub" URL as well, which then becomes a broken link.



Discussion:

Resolving patch:
diff --git a/readthedocs/builds/utils.py b/readthedocs/builds/utils.py
--- a/readthedocs/builds/utils.py
+++ b/readthedocs/builds/utils.py
@@ -30,14 +30,22 @@ def get_bitbucket_username_repo(version):
                 return match.groups()
     return (None, None)
 
-def get_vcs_version(version):
+def get_vcs_version_slug(version):
+    slug = None
     if version.slug == 'latest':
         if version.project.default_branch:
-            return version.project.default_branch
+            slug = version.project.default_branch
         else:
-            return version.project.vcs_repo().fallback_branch
+            slug = version.project.vcs_repo().fallback_branch
     else:
-        return version.slug
+        slug = version.slug
+    # https://github.com/rtfd/readthedocs.org/issues/561
+    # version identifiers with / characters in branch name need to un-slugify
+    # the branch name for remote links to work
+    if slug.replace('-', '/') in version.identifier:
+        slug = slug.replace('-', '/')
+    return slug
+
 
 def get_conf_py_path(version):
     conf_py_path = version.project.conf_file(version.slug)
diff --git a/readthedocs/doc_builder/backends/sphinx.py b/readthedocs/doc_builder/backends/sphinx.py
--- a/readthedocs/doc_builder/backends/sphinx.py
+++ b/readthedocs/doc_builder/backends/sphinx.py
@@ -126,7 +126,7 @@ def _whitelisted(self, **kwargs):
                               encoding='utf-8', mode='a')
         outfile.write("\n")
         conf_py_path = version_utils.get_conf_py_path(self.version)
-        remote_version = version_utils.get_vcs_version(self.version)
+        remote_version = version_utils.get_vcs_version_slug(self.version)
         github_info = version_utils.get_github_username_repo(self.version)
         bitbucket_info = version_utils.get_bitbucket_username_repo(self.version)
         if github_info[0] is None:


Test patch:
Repository: readthedocs/readthedocs.org

Issue:
Must create /translations/en directory before symlinking.
One of the last steps of the build process is to create the symlink: 

```
/user_builds/<project>/translations/en/ -> /user_builds/<project>/rtd_builds/
```

The symlink creation was failing, because `/translations/en/` must exist before attempting to symlink.



Discussion:

Resolving patch:
diff --git a/readthedocs/projects/tasks.py b/readthedocs/projects/tasks.py
--- a/readthedocs/projects/tasks.py
+++ b/readthedocs/projects/tasks.py
@@ -724,6 +724,7 @@ def symlink_translations(version):
 
     # Hack in the en version for backwards compat
     symlink = version.project.translations_symlink_path('en')
+    run_on_app_servers('mkdir -p %s' % '/'.join(symlink.split('/')[:-1]))
     docs_dir = os.path.join(settings.DOCROOT, version.project.slug, 'rtd-builds')
     run_on_app_servers('ln -nsf %s %s' % (docs_dir, symlink))
 


Test patch:
Repository: readthedocs/readthedocs.org

Issue:
build hook has false positives
https://github.com/rtfd/readthedocs.org/blob/master/readthedocs/core/views.py#L159
https://github.com/rtfd/readthedocs.org/blob/master/readthedocs/core/views.py#L188

github.com/saltstack/salt will match the following urls:
- git://github.com/saltstack/salt.git
- https://github.com/saltstack/salt-api
- git://github.com/saltstack/salt-cloud.git
- git://github.com/saltstack/salt-ui.git

Perhaps we should do something like:

```
projects = Project.objects.filter(repo__endswith=url)
if projects.count() == 0:
    projects = Project.objects.filter(repo_endswith=url + '.git')
        if projects.count() == 0:
            raise NoProjectException()
```

I'll implement that tonight and see if it works out.



Discussion:

Resolving patch:
diff --git a/readthedocs/core/views.py b/readthedocs/core/views.py
--- a/readthedocs/core/views.py
+++ b/readthedocs/core/views.py
@@ -4,7 +4,7 @@
 """
 
 from django.contrib.auth.models import User
-from django.core.urlresolvers import NoReverseMatch, reverse
+from django.core.urlresolvers import reverse
 from django.conf import settings
 from django.http import HttpResponse, HttpResponseRedirect, Http404, HttpResponseNotFound
 from django.shortcuts import render_to_response, get_object_or_404, redirect
@@ -22,7 +22,6 @@
 from core.forms import FacetedSearchForm
 from projects.models import Project, ImportedFile, ProjectRelationship
 from projects.tasks import update_docs, remove_dir
-from projects.utils import highest_version
 
 import json
 import mimetypes
@@ -156,9 +155,11 @@ def _build_branches(project, branch_list):
 
 def _build_url(url, branches):
     try:
-        projects = Project.objects.filter(repo__contains=url)
+        projects = Project.objects.filter(repo__endswith=url)
         if not projects.count():
-            raise NoProjectException()
+            projects = Project.objects.filter(repo__endswith=url + '.git')
+            if not projects.count():
+                raise NoProjectException()
         for project in projects:
             (to_build, not_building) = _build_branches(project, branches)
         if to_build:
@@ -301,7 +302,7 @@ def default_docs_kwargs(request, project_slug=None):
         try:
             proj = Project.objects.get(slug=project_slug)
         except (Project.DoesNotExist, ValueError):
-            # Try with underscore, for legacy 
+            # Try with underscore, for legacy
             try:
                 proj = Project.objects.get(slug=project_slug.replace('-', '_'))
             except (Project.DoesNotExist):
@@ -312,7 +313,7 @@ def default_docs_kwargs(request, project_slug=None):
         try:
             proj = Project.objects.get(slug=request.slug)
         except (Project.DoesNotExist, ValueError):
-            # Try with underscore, for legacy 
+            # Try with underscore, for legacy
             try:
                 proj = Project.objects.get(slug=request.slug.replace('-', '_'))
             except (Project.DoesNotExist):


Test patch:
Repository: readthedocs/readthedocs.org

Issue:
Lack of trailing / in URL breaks links
If you don't have the trailing / in the URL i.e. http://sunpy.readthedocs.org/en/latest rather than http://sunpy.readthedocs.org/en/latest/ all the relative URL links on the page, as generated by sphinx, break.



Discussion:

Resolving patch:
diff --git a/deploy/scripts/nginx-smoke-test.py b/deploy/scripts/nginx-smoke-test.py
--- a/deploy/scripts/nginx-smoke-test.py
+++ b/deploy/scripts/nginx-smoke-test.py
@@ -173,6 +173,10 @@ def main():
             'https://pip.readthedocs.org/en/latest',
             'https://pip.readthedocs.org/en/latest/'
         ],
+        [
+            'https://pip.readthedocs.org/en/develop',
+            'https://pip.readthedocs.org/en/develop/'
+        ],
         [
             'https://pip.readthedocs.org/latest/',
             'https://pip.readthedocs.org/en/latest/'


Test patch:
Repository: readthedocs/readthedocs.org

Issue:
Move vagrant settings to separate file
Vagrant provisioning shouldn't use `local_settings`, as pointed out in #709. This moves settings to a separate file and updates the salt states to use the vagrant settings. The vagrant settings don't include an import of `local_settings` because standalone development settings in local_settings could break the vagrant instance configuration.



Discussion:

Resolving patch:
diff --git a/deploy/salt/readthedocs/site/local_settings.py b/readthedocs/settings/vagrant.py
similarity index 97%
rename from deploy/salt/readthedocs/site/local_settings.py
rename to readthedocs/settings/vagrant.py
--- a/deploy/salt/readthedocs/site/local_settings.py
+++ b/readthedocs/settings/vagrant.py
@@ -1,5 +1,8 @@
 # Vagrant development settings
 
+from .base import *  # noqa
+
+
 REDIS = {
     'host': 'localhost',
     'port': 6379,


Test patch: