4 ms·
>The hardest part about this project was actually just parsing. How about using sqlite for this? Then you wouldn't need to parse anything, just read/update tab
by kgeist 9mo ago
>The hardest part about this project was actually just parsing.
How about using sqlite for this? Then you wouldn't need to parse anything, just read/update tables. Fast indexing out of the box, too.
- deleted 9mo ago[deleted]
- grenran 9mo agothat would be what https://fossil-scm.org/ https://fossil-scm.org/ is
- TonyStr 9mo agoVery interesting. Looks like fossil has made some unique design choices that differ from git[0]. Has anyone here used it? I'd love to hear how it compares. [0] https://fossil-scm.org/home/doc/trunk/www/fossil-v-git.wiki#history https://fossil-scm.org/home/doc/trunk/www/fossil-v-git.wiki#...
- embedding-shape 9mo agoUsed it on and off mainly to check it out, but always in a personal/experimental capacity. Never managed to convince any teams to give it a try, mostly because git don't tend to get in the way, so hard to justify to learn something completely new. I really enjoy how local-first it is, as someone who sometimes work without internet connection. That the data around "work" is part of the SCM as well, not just the code, makes a lot of sense to me at a high-level, and many times I wish git worked the same...
- usrbinbash 9mo agoI mean, git is just as "local-first" (a git repo is just a directory after all), and the standard git-toolchain includes a server, so... But yeah, fossil is interesting, and it's a crying shame its not more well known, for the exact reasons you point out.
- embedding-shape 9mo ago> I mean, git is just as "local-first" (a git repo is just a directory after all), and the standard git-toolchain includes a server, so... It isn't though, Fossil integrates all the data around the code too in the "repository", so issues, wiki, documentation, notes and so on are all together, not like in git where most commonly you have those things on another platform, or you use something like `git notes` which has maybe 10% of the features of the respective Fossil feature. It might be useful to scan through the list of features of Fossil and dig into it, because it does a lot more than you seem to think :) https://fossil-scm.org/home/doc/trunk/www/index.wiki https://fossil-scm.org/home/doc/trunk/www/index.wiki
- adastra22 9mo agoThose things exist for git too, e.g. git-bug. But the first-class to do it in git is email.
- embedding-shape 9mo agoEmail isn't a wiki, bug tracking, documentation and all the other stuff Fossil offers as part of their core design. The point is for it to be in one place, and local-first. If you don't trust me, read the list of features and give it a try yourself: https://fossil-scm.org/home/doc/trunk/www/index.wiki https://fossil-scm.org/home/doc/trunk/www/index.wiki
- adastra22 9mo agoI am aware of fossil. Did you look up git-bug?
- embedding-shape 9mo agoIndeed, I'd still claim that a 3rd party addition doesn't make Git as local-first as Fossil when it comes to other things than source code.
- smartmic 9mo agoI use Fossil extensively, but only for personal projects. There are specific design conditions, such as no rebasing [0], and overall, it is simpler yet more useful to me. However, I think Fossil is better suited for projects governed under the cathedral model than the bazaar model. It's great for self-hosting, and the web UI is excellent not only for version control, but also for managing a software development project. However, if you want a low barrier to integrating contributions, Fossil is not as good as the various Git forges out there. You have to either receive patches or Fossil bundles via email or forum, or onboard/register contributors as developers with quite wide repo permissions. [0]: https://fossil-scm.org/home/doc/trunk/www/rebaseharm.md https://fossil-scm.org/home/doc/trunk/www/rebaseharm.md
- graemep 9mo agoI like it but the problem is everyone else already knows git and everything integrates with git. It is very easy to self host. Not having staging is awkward at first but works well once you get used to it. I prefer it for personal projects. In think its better for small teams if people are willing to adjust but have not had enough opportunities to try it.
- TonyStr 9mo agoIs it possible to commit individual files, or specific lines, without a staging area? I guess this might be against Fossil's ethos, and you're supposed to just commit everything every time?
- jact 9mo agoI use Fossil extensively for all my personal projects and find it superior for the general case. As others said it’s more suited for small projects. I also use Fossil for lots of weird things. I created a forum game using Fossil’s ticket and forum features because it’s so easy to spin up and for my friends to sign in to. At work we ended up using Fossil in production to manage configuration and deployment in a highly locked down customer environment where its ability to run as a single static binary, talk over HTTP without external dependencies, etc. was essential. It was a poor man’s deployment tool, but it performed admirably. Fossil even works well as a blogging platform.
- dchest 9mo agoWhile Fossil uses SQLite for underlying storage (instead of the filesystem directly) and various support infrastructure, its actual format is not based on SQLite: https://fossil-scm.org/home/doc/trunk/www/fileformat.wiki https://fossil-scm.org/home/doc/trunk/www/fileformat.wiki It's basically plaintext. Even deltas are plaintext for text files. Reason: "The global state of a fossil repository is kept simple so that it can endure in useful form for decades or centuries. A fossil repository is intended to be readable, searchable, and extensible by people not yet born."
- storystarling 9mo agoSQLite solves the storage layer but I suspect you run into a pretty big impedance mismatch on the graph traversals. For heavy DAG operations like history rewriting, a custom structure seems way more efficient than trying to model that relationally.
- SQLite 9mo agoThe Common Table Expression feature of SQL is very good at walking graphs. See, for example <https://sqlite.org/lang_with.html#queries_against_a_graph https://sqlite.org/lang_with.html#queries_against_a_graph>.