I'm not a fan of that decision. I don't want to live with my mistakes forever, especially on local branches.
[1] - https://www.fossil-scm.org/home/doc/trunk/www/rebaseharm.md
I'm not a fan of that decision. I don't want to live with my mistakes forever, especially on local branches.
[1] - https://www.fossil-scm.org/home/doc/trunk/www/rebaseharm.md
Not to mention a stream of WIP commits that mean at any point I can diff the mess I've made in my editor to when it was last working (or any other time). Often that's enough to reveal the problem. If you don't commit often enough, you can't do that, but if you can't rebase, the history is full of junk that should be collapsed before going public.
Without the ability to rewrite local history, you're either not commiting often (risky) or leaving long streams of poorly documented "work-in-progress" commits in the main project history.
For simple squash of WIP, the private branch works quite naturally, and simply merges onto the normal branch. For more involved reordering, it would be too cumbersome to be practical.
However, Fossil philosophy advocates a factual approach to commit history, unlike a 'maintained' approach that's so widely expected by Git-based workflows, and which calls for the use of rebase.
In case anyone is confused, git amend can amend the changes, not just the commit message. I didn't notice this for a while, and finally got around to reading about how it works. https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History
Very clever way of letting user fix some attribution mistakes/typos, yet not mangle the original commit.
However, for amending the actual file changes, like it could be done with git --amend, Fossil requires another proper commit; for historical amends, the new commit has to be put onto a new branch.
Fossil-scm website has a detailed help section for all commands, including the amend.
https://fossil-scm.org/home/doc/trunk/www/fossil-v-git.wiki#...
They ruin history, get in the way of bisect, may not be reproducible, etc, etc.
Sometimes they may be used but more likely as a superuser operation
[0]: https://docs.github.com/en/pull-requests/collaborating-with-...