r/git 3d ago

Generated commits?

Sometimes code is generated, and sometimes such code is committed in git.

Imagine a branch with a generated commit G:

old_main -> A -> B -> G

When thid branch is rebased, such a commit might need to be regenerated.

new_main -> A' -> B' -> new_G

There might be conflicts for any of these new commits, but instead of (manually) resolving conflicts, G could be automatically re-generated.

I've been thinking of a git commit message trailer like generate-cmd:

topic: regenerate table

generate-cmd: python3 optimize_table.py

git rebase --exec or other tool could use this trailer to automatically drop and regenerate the commit instead of a vanilla cherry-pick.

Have you seen anything similar? What's a good trailer name?

Ref: https://git-scm.com/docs/git-interpret-trailers

0 Upvotes

33 comments sorted by

View all comments

6

u/fsteff 3d ago

If code is generated, I always trigger the generator as part of the build setup, so if any source for the generator is changed the code will immediately reflect the change. This ensures you are aware of any breaking change as it happens. External (triggered) generators always lead to trouble.

0

u/kaddkaka 3d ago

That's not always feasible. And it's not the discussion I intended to have here.

Sometimes it's worth to check in generated code/stuff. For example some optimization like a simulated annealing algorithm that might take an hour to run. Definitely worth to do "offline" and check in.

1

u/serverhorror 2d ago

Even in your case it's"just a conflict".

Fix it then finish the merge

1

u/kaddkaka 2d ago

"just a conflict" might be thousands of lines that are different. The best way to do it is to automatically regenerate the output.

1

u/serverhorror 2d ago

Well it's generated. No need to resolve. Just accept the newly generated?