I am wondering if anyone out there is trying to manage Intellij configurations for a team across many projects. There are solutions out there they just don't go the distance.
Project Level Sharing
Intellij allows configurations to be stored at the project level which is great in some situations but not if each component in a project has it's own repository. I have more components than developers. So keeping the project level configs in sync is time-consuming and error-prone especially if we want to rely on intellij for inspections, jslint, etc.
The other problem with this is that I often find myself with multiple projects which incorporate different sub-set of modules for one project to cover different types of tasks. In my current project I have an 'all', 'framework', 'tooling', and 'support' project which all cover different subets of the project. I do this to help with performance problems but this also helps with task focus. other developers break it down differently.
config dir in Source Control
I have tried that before. It usually results in a mess of 3-way merges when IntelliJ makes huge re-writes in some of the config files and multiple users push files back to master after weeks of changes to their config files. It might be possible with a good .gitignore file to get close to sanity but I am still not convinced.
A long time ago IntelliJ had a free Configuration Server that did the basic job. It doesn't seem to exist anymore. In any case it was good for one developer syncing configs on multiple PCs but I don't remember it doing any really team sharing stuff.
Import Export Import
We could use the Import/Export feature and store that on a file-share or maybe in source control. This is probably the simplest solution. But it does require a lot of steps to propagate changes to the team. If source control is not used then there there is a lot of risk that the config gets polluted by whoever does the export. If source control is used then we are back to issues mentioned above with storing config in source control.
So What are We to Do?
- Maybe someone out there can tell me that they have had a better experience with one of the above than me.
- Maybe there is some other approach, plugin, tool out there that I have not heard of.
- What does Jetbrains do? They use Intellij to implement all of their stuff. They must have this problem.
- Should I think of a real solution to this problem. Maybe something that takes the form of a plugin.
A perfect Solution for me would look something like this
- A repo accesible through http that stores versioned config files and config sets. (online source-control, or an artifact repo, or something else)
- A plugin that can pull configurations from one or more repo.
- A way to define config-sets.
- tooling for pushing changes. Not sure about how this should work but it should be harder to push than to pull.
What do you think? Am I over thinking this?