3 ms·
I don't understand the obsession some VCS have (such as fossil and mercurial) with forcibly preventing the user from altering history. Even if it's intended to
by umvi 5y ago
I don't understand the obsession some VCS have (such as fossil and mercurial) with forcibly preventing the user from altering history. Even if it's intended to be a safety rail that prevents losing work, I should be the one that decides if I want the safety rail or not. Just like I should be able to run `sudo rm -rf /` on my computer if I want without some "mother-knows-best" OS preventing me from doing so. While the tool might be well-meaning and looking out for my best interests, I should have control at the end of the day, not the tool.
Super contrived example: Say I'm writing an book in markdown and I'm using VCS to track changes. Maybe it's a private repo to start with, but I plan on eventually making it public and open source. Maybe it's a book that touches on racial issues, like "To Kill a Mockingbird". Maybe I don't want the whole world to be able to look back through iterations of paragraphs I wrote and rewrote over and over because I was trying to figure out how to strike the right tone. You're telling me with Fossil/Hg I can't ever truly erase mistakes I never intended people to see? What's stopping people from mining the repo's "trash commits", looking for offensive text to label me a racist on Twitter? With Git I'm in control and before I make it public I'll prune the private repo to throw away any trash commits I never intended people to see. With fossil I'd have to... create a brand new repo and rebuild it from the ground up with some automated tool that skips commits I don't want people to see? Or somehow use the "shunning" feature to painstakingly delete commits I don't want people to see?
Fossil seems like a great fit for SQLite. Heck, seems like you use SQLite while using Fossil so it's like dogfooding (like using Git to version control Git). And I have never used fossil, so I can't knock it until I've tried it. But, I am reluctant to try it when I've already learned Git. I don't need wikis and chat and issue tracking or anything else fossil offers because I already use GitHub/Discord/etc for that (not to mention bundling all those things into a single executable is against the Unix philosophy, which I mostly subscribe to). However, I admit it is kind of cool that the wiki, issue tracking, chat, etc. are all just tables in the fossil repo so I guess theoretically you could easily search them with SQL commands.