Hacker News new | past | comments | ask | show | jobs | submit login
Ugit - DIY Git in Python (leshenko.net)
194 points by rohithkp on Oct 3, 2021 | hide | past | favorite | 23 comments



I particularly like the iterated development approach to teaching on this site. That is, one starts with some minimal working code, states a goal, and then modifies the code to accomplish that goal --- repeatedly.

This is a very powerful way to go through a codebase (when it is possible).


Does anyone know the tool to use used to generate the site?

e.g. Is it using plugin for a static site generator?


In the comments on the first page, he says it's custom written in TypeScript and not open source yet.


Anyone knows of similar projects in another languages? I've been wanting to understand some important tools (like git in this case) and also learn some languages I've been pushing back. Would love to find more of these


There's a long list here: https://github.com/danistefanovic/build-your-own-x.

Also, https://codecrafters.io/challenges/git supports multiple languages (I'm the author). Many folks that try this challenge do it for the same reason you mentioned: to learn about a tool and learn a new language at the same time.


I was thinking the same and found the book that teaches to build Git in Ruby, although I haven’t checked it out yet: https://shop.jcoglan.com/building-git/


I followed along to that book in Rust and found it excellent.


There's https://git.sr.ht/~sircmpwn/shit, written in posix sh. It doesn't implement any of the porcelain though.


I’ve been slowly working on implementing git in Common Lisp: https://github.com/fiddlerwoaroof/cl-git

I think I have most of the object type parsers done for loose objects and pack files, just need to finish implementing the delta ref decoding algorithm.


The OpenBSD people are working on Game of Trees: http://gameoftrees.org/

And I wrote the one that 9front uses, which is self hosting (client, server, and web ui all run off it): http://shithub.us/ori/git9/HEAD/f.html


For Rust, see https://github.com/Byron/gitoxide , which provides both a pure Rust library and a command-line tool built atop that library.


Exactly, Typescript or C# would have been very nice.

edit: found some for JS, not TS but still something:

http://gitlet.maryrosecook.com/docs/gitlet.html

https://kushagra.dev/blog/build-git-learn-git/


Wow, that is a beautiful interface. I mean the website itself. How is it made?


+1, it looks great! Just wanted to ask the same question.


+1 It would be awesome to have a tool that creates a website like that from a git repo and a collection of markdown pages matching the commits.


Earlier(2020-09) HN submission with discussion on same project: https://news.ycombinator.com/item?id=24517925.



> f'{GIT_DIR}/objects'

Never seen a writing style like that. How is it called? I want to read some documentation and history.


Sting interpolation, aka f-string, pep 498. Uses the .format mini-language plus expressions. Python 3.6+


^string of course.


Thanks a lot, I'll check it out!


There isn't a table of contents for the website? I haven't been able to find one.





Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: