The display weirdness (e.g. the Z shell's percent character showing up) that you are seeing in your demo is because you are putting the terminal line discipline into raw mode, raw mode of course does not do CR-before-LF stuffing, and there's some confusion in the code as to when it does and when it does not explicitly emit CRs.
I'm kind of relieved to see that it calls out to the native git binary. There is a popular pure-Go git implementation that is in my experience very slow.
From the GIF in the repo I think it's somewhere between CLI and TUI -- it's interactive but does not try to draw windows/surfaces in the terminal. But the borderline is fuzzy, so yeah
This is not intended to be an insult of any sort, but I am pretty sure the use of LLM to write this was not so moderate, but I have nothing against it, you have a working project. I have done the same with projects similar to this.
I use lazygit (also written in Go) and magit a lot, they are quite nice. For GUI, I use Git Cola.
I wish the demo GIF was something more complex, perhaps adding & removing a particular chunk and committing it or something like that.
I've used it - it's lacking a ton of features. Another commenter in this thread said it's very slow compared to the git CLI, which is not surprising given that git is written in C.
I would have used libgit2 myself in any languages. If bindings do not exist, I would have made the bindings first. There is no way I would have called out to an external program.
Someone mentioned https://github.com/go-git/go-git. I would have definitely used it unless there are better alternatives. If - as someone who claimed - it turns out it is slow, I would have created my own bindings to libgit2 still, most likely.
* https://github.com/bmf-san/ggc/blob/9e93ef8a87973cab916e37a9...
* https://github.com/bmf-san/ggc/blob/9e93ef8a87973cab916e37a9...
In particular, C Shell (csh) and Tcsh uses "%" as the prompt character. Common in BSD systems.
Of course you can customize Zsh (or Bash) to show "%", too.
Edit: never mind, I noticed it when he quit "ggc". My bad. :)
I use lazygit (also written in Go) and magit a lot, they are quite nice. For GUI, I use Git Cola.
I wish the demo GIF was something more complex, perhaps adding & removing a particular chunk and committing it or something like that.
holdup... is this just a wrapper around git?
oh my god. you have just wrapped standard git CLI. well, this is dissapointing.
> aims to be fully compatible with git, all the porcelain operations are implemented to work exactly as git does
written in pure go, therefore with a go native api.
I've never tried to use it, but it does look quite impressive to me.
[0] https://github.com/go-git/go-git
Someone mentioned https://github.com/go-git/go-git. I would have definitely used it unless there are better alternatives. If - as someone who claimed - it turns out it is slow, I would have created my own bindings to libgit2 still, most likely.