I would like to introduce you lovely OpenSource Lovers to a GIT-Alternative called FOSSIL that I also stumbled upon because of this Blog.<br> It’s basically opensource Github-in-a-box which means it’s an SCM with:
- Bug-tracker
- Ticketting-system
- Forum
- Wiki-system
- even a Chat-functionality
- Has built-in GUI
- Also has a Web-Server
- Self-Hostable like Gitea/Forgejo
& the best part it’s all in ONE STANDALONE FILE!!! which is extremely lightweight which you can copy to your $PATH & works even in crappy internet. how cool is that!!
However this tool supports a completely different style of development in FOSS called the “Cathedral-Style” whereas GIT suports a “Bazaar-Style”<br> The person behind Fossil is the creator of SQLite, <u>Dr.Richard Hipp</u> & they even made other projects to support Fossil like a PIC-Like language called PikChr<br> Well just in case; here’s a list of difference between Git vs Fossil<br> & guess what!! they even have a hosting service called CHISEL
Listen; Just check it out & use it for fun in your spare time even with the flaws it has (& Try out Darcs & Pijul as well)
Since jujutsu is Git-compatible it has very much replaced Git for me and is what I’m using for everything now. Its workflow is so good and miles ahead of Git.
I was trying out Pijul for a while before that and while it has a lot of great ideas and has a lot of potential due to the way its foundations work its interface is way too janky right now and missing features and nothing I’ve reported or the many changes I’ve submitted have been fixed/pulled since March. I’d really like it to be good but alas…
I ‘forgot’ it on purpose.
The compatibility with Git means it is ultimately shackled to the design decisions fundamental to Git which require hacky workarounds. The maker of Pijul has pointed out some of the fundamental ways it can never handle patches is the manner of Darcs/Pijul, but I am not in the position to pull some of these quotes.
I would rather see revolution over evolution, & the weird ties to Google & hosting the project Microsoft GitHub rub me wrong.
Darcs does not require a central server, and works perfectly in offline mode.
Git can be used that way too. Am I missing something?
So GIT has a ticketting system, a Wiki, Bug-tracker built-into it along with a Version-tracker
It also has a Sync All command (I’m sure Git also has it Somewhere) ??
Darcs came out in 2003—Git in 2005. It was novel at the time compared to the alternatives. Darcs started as alternative to CSV & Subversion, not Git. Unlike Git it works on patches, not snapshots which has advantanges in merge conflicts.
Git uses mergetools, which do whatever you make them to. Patches can be created from snapshots, but snapshots are not guaranteed to be creatable from patches - you might not have original state.
EDIT: it uses merge drivers.
Oh Yeah I like Pijul as well & I fully agree with your point of breaking the Git Hedgemony
BTW, tell me more about Darcs I want to know EDIT: Boy GIT-Fanboys are clearly mad about other VCSs existing😅
Darcs is sort of like Pijul before Pijul. It is a little slower, but might not even affect you at your project size, but what it has instead is a longer history with more tooling & support—on the CLI, support from package managers, forge options. It ends up being my preferred option just for this reason even if Pijul has better performance, handles binary files, & the identity server is novel.
Spent 5 minutes on the website and couldn’t get a peek at their code… The most fundamental thing, IMO.
it’s not the most intuitive interface but there you go: https://fossil-scm.org/home/tree?name=src
fossil is made by the sqlite devs, for development of sqlite. this is not some amateur operation.
also, it’s by the sqlite people, so expect the code to be… odd.
& The code behind Linux isn’t ? People back then did some REAL sorcery with coding
back then? both codebases are fully modern. its more that sqlite uses a style that differs from the accepted norm quite a bit. that, and they don’t accept contributions.
What about git needs replacement?
Git is far from user friendly but that’s a design consideration from a decentralized architecture. Fossil will have the same considerations. People need to learn how to use Git.
The problem is there’s only one person who really knows how to use it: Linus.
I’m so fuckin tired of hearing x is user unfriendly, it’s not intuitive enough.
Like fuckin yeah. Sometimes you have to actually learn something new to use something new when I first started driving it wasn’t user friendly. I had to learn how to do it
git is exactly as unfriendly as a distributed source control system that doesn’t shy away from power user commands needs to be
… sure it’s difficult to comprehend, but yknow what’s worse? getting into a bullshit situation and having broken garbage repos in every other “user friendly” system on the planet
I remember Linus saying in an interview that he’d only really been involved in git for the first 6 months or so and that the other devs had managed it without him since then. This makes sense - Linus’s creations aren’t successful because he’s the only person who understands them, they’re successful because there are so many other collaborators on them.
Isn’t that by design? I believe the intention was to offload that capability to an existing solution, usually ssh.
Yeah & for that we have to deal withe Dependency hell Look at the size of Fossil & compare
I must be missing whan you mean by remote/server since pull, fetch, push… All interact with remote copies of the repo.
As in it’s literally Github-in-a-box you can spin up a web-server with a command<br> (Imagine a git serve command that launches your GitHub instance)
I really like the idea of using a relation db to track change history. It removes so much weirdness and quirkiness that git has. You just have regular SQL queries you can use to go through history and ask questions about the state of the repo. I also like that it’s immutable so you don’t have to worry about things like rebasing and other ways you can fuck up history in git. The problems solved by mucking with history largely go away when you can query the db with a rich syntax.
Same, really love the idea of backing history with a proper database, and the immutability. git rebasing was a mistake.
Rebasing is for advanced git users who knows what he’s doing. If one does not know how to use it or not feeling comfortable in general, he can happily take his own code and try to merge it into the latest version instead. No one is judging.
For the rest of the world where projects are open-source, more often than not, not those projects inside a corporation where only the team lead is making decisions, it’s a powerful tool to settle down conflicts sort out history.
One does not need to change the history again, if he’s not comfortable with it. Just use git as if it’s centralised VCS like SVN. No big deal. In fact, in corporations you do. There only needs to be one person who manages the repository.
How do you cleanly base your local changes against a new upstream version? Merges?
I love Fossil and use it for all my personal projects! I use syncthing to keep my all my repositories updated across devices and it works great!
I do wish I better understood either self-hosting or that there were more web hosts though, it would make collaboration easier when I feel like sharing. A git(hub) bridge could do it too I guess…
It’s interesting that OP is here talking about this being better than git because it has its own server, but the only person besides op claiming to use it is syncing with syncthing 🤔
The binary executable for Fossil is a single file (repos are also single files, sqlite databases). That one executable does all the VCS functions but it also has a built-in web server that will host repos as a little customizable website. That’s how you access the wiki, chat, forums, and ticketing system. You can also configure the repo, view timelines, view code, and all that stuff.
One can set up a proxy and publicly self-host the repo over the internet. That’s what the official fossil site is, a hosted repo of it’s own source code. I didn’t feel like setting up a local web host, an ngnx reverse proxy, figuring out vpn for remote access, etc etc. So i just use synching and only run locally, because it’s easier for me.
That’s another nice thing about fossil, it’s quite flexible and can grow with the needs of the project.
Opinions vary – you’re saying the single-file thing is good, but to me that’s quite a downside honestly. For backup purposes, if nothing else, I would rather my software not need to copy the entire file every time a tiny change to it happens. And all those other server based features, imo, are bloat that I wouldn’t use.