Hacker News new | ask | show | jobs
by chipx86 372 days ago
`git format-patch` and `git am` are great! Not all SCMs have something like that (many don't even have a diff format with enough information to reliably look up a file or apply all of its changes).

Having the whole state of a series of commits up-front can help with tools like ours that need that information ideally in one place and need to do analysis across multiple commits.

We also wanted to avoid issues where, due to a bug or network error or whatever, a missing patch in a sequence could result in a broken set of changes to apply. This is obvious when you're patching locally, but less so when you're sending to a tool to process later. Having it up-front reduces the chances of problems and simplifies a lot of edge cases.

2 comments

perhaps the solution is to stop using those SCMs?
If wishing made it so...

I have so many stories I could tell at this point.

If you're forced to use crappy STM, you can still make "stealth" uses of a better SCM in your private workflows.

I have stories also. In one company almost twenty years ago, some Java-spewing troglodytes went on a branch and did stupid things, like simultaneously rename A.java to B.java, B.java to C.java and C.java to A.java! While of course changing all their content too.

When it came time to merge, this was completely beyond the power of Subversion to sort out.

They came to me for help, and I whipped out my Meta-CVS, with excellent support not only for renaming but for doing snapshot imports which figure out renaming by file similarity. We imported all the baselines into it, and it did the merge flawlessly across the rotated renames.

We took the resulting merged baseline out of Meta-CVS and cleanly committed it to the Subversion trunk.

Don't discount other SCMs being useful as tools in SCM problems, even if they are not the main source-of-truth SCM used by the org.

I mean ok but you having a business reason to spend effort on supporting legacy systems doesn't really make for a convincing argument why others should care about your "standard" especially when the largest VCS (by far) already supports most of the things you are adding but in an incompatible way.
Electricity and running water are great; alas, not all houses everywhere have them ...

Who cares?

The solution to SCMs not doing this and that is to implement ones which do. We have done that.

You can unlock the cage, and that is enough; if the apes want to stay, let them stay.