In the era of DevOps some of us write yaml-files on a daily basis. Sometimes it's just a lot of yamls. I would say that in some repositories YAML is more than just 'a data-file', it's a valuable artifact where the core (or just important) logic resides.
However GitHub doesn't think so. You know that there is a Language Breakdown Graph on every GitHub repository:
It looks cool, it highlights the languages used in this repo.
However, your DevOps efforts are not represented on this chart. No Kubernetes or Docker-Compose manifests and Charts, no CI/CD pipelines, no GitHub Actions, and other sometimes tricky configurations.
Luckily this is something we can fix.
GitHub uses a library called
Linguist (https://github.com/github/linguist) to analyze your repository. Of course, the Language Breakdown Graph is more of a side-effect and definitely not the main purpose of this analysis. But for now we'll focus on this particular feature of
All languages known to Linguist can be found in the
languages.yml file in the linguist repository.
YAML: type: data color: "#cb171e" tm_scope: source.yaml
as you can see, it's treated as a data file by default and thus it's left out from the graph.
We can add (or edit existing)
.gitattributes file with the following content to the root of our repository:
*.yml linguist-detectable=true *.yml linguist-language=YAML *.yaml linguist-detectable=true *.yaml linguist-language=YAML
and Linguist will respect that override, by showing us a proper Language Breakdown on your page:
Isn't it cool?
It's not just the way YAML files are treated. You can fine-tune that to emphasize the work which is important in your opinion.
Do you have a repository full of Markdown files, perhaps a book that you're writing? Well, Markdown can be marked as
linguist-detectable as well.
Do you have some samples or generated files that you want to exclude?
linguist-documentation attributes can be used.
You can go wild and mess up with it:
# Example of a `.gitattributes` file # which reclassifies `.rb` files as Java: *.rb linguist-language=Java
Additional documentation and examples can be found here.
I hope you enjoyed this little trick. Now go and celebrate your DevOps work by including it in your repository stats.