gruntwork-io / boilerplate

A tool for generating files and folders ("boilerplate") from a set of templates
https://www.gruntwork.io
Mozilla Public License 2.0
156 stars 12 forks source link

Git tracking #185

Open leventyalcin opened 1 week ago

leventyalcin commented 1 week ago

Describe the solution you'd like

I am planning to use a tool for scaffolding Git repositories and establishing community/coding standards in the organizations I work with. boilerplate seems to be a good candidate for this purpose.

However, once boilerplate runs through the templates and creates the structure, its job is done. This brings another problem: keeping the created repositories up-to-date.

For example, let's say I create a template for directory structures for reusable code (e.g., Terraform modules, Ansible roles, bash or groovy libraries), including pre-commit hook configurations and linter configurations. Over time, these standards might change, or at the very least, their versions may need to be upgraded. Currently, there is no easy way to detect or upgrade any repository created from that template to adopt new updates. It also seems like a cumbersome task to manually find the differences between the new template and what was used at the time of creation.

Describe alternatives you've considered

I would prefer if boilerplate could somehow leave a git tracking fingerprint and provide an option to apply those differences when needed.

Additionally, if there were a way to detect changes between the original template and the current state of the template's repository (e.g., the SHA of the used Git ref has changed, or there is a newer Git tag than the one used), I could create a pre-commit hook to check for these changes. This would allow me to enforce updates to linters and pre-commit configurations. Even if I don't want to block commits and disrupt workflow, at the very least, I could print warnings to encourage users to eventually upgrade their repositories.

I believe this feature would not only benefit me but also help maintain alignment in collaborative work environments.

ZachGoldberg commented 3 days ago

Thanks so much for submitting this feature reuest @leventyalcin, I agree that it's a really useful feature to be able to track when something was boilerplated and be able to "sync" or "update" with upstream changes in some way. It does seem like something that will require considerable thought, however, unless you have some sort of clever solution in mind? I'll keep this open in our queue for now.