At MadeTech, we need to deal with hundreds of projects, across lots of workspaces, and potentially across hundreds of clients' workspaces too.
To keep a standard approach, we should split dotfiles, or config files in general, into 3 categories:
- Project level, Source controlled
- Project level, user controlled
- Workspace level, user controlled
These are configuration files commited through the VCS. They should relate specifically to;
- languages
- librariesa
- frameworks
- documented tools
- files generated by the project
They MUST NOT relate to the editor or any tools specific to a user.
They MUST NOT include secrets relating to the project (passwords, keys, certificates, etc)
These are configuration files relating to a specific project, but should not be distributed. These can include;
- tools used by the user for the project, but not widely accepted in the project
- secrets used for the projcet
- overrides for project tools
They MUST NOT conflict with source controlled configs. For example; if the source controlled config says to use indentation of 2 spaces, do not override it in your config to indentation of 4 spaces.
These are configuration files about a users workspace. They are for use across all projects. These can include;
- global tool/editor settings
- global secrets (ssh keys, htpassword, aws)
They MUST NOT conflict with source controlled configs. For example; if the source controlled config says to use indentation of 2 spaces, do not override it in your config to indentation of 4 spaces.