git.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package setup
  2. /* Git UI sucks.
  3. To be fair, the core of Git is not bad.
  4. But its command line interface sucks.
  5. Git Command Line Sucks
  6. There is an xkcd commic for this:
  7. https://xkcd.com/1597/
  8. Unfortunately, Git GUI clients sucks too.
  9. SourceTree
  10. Need to login into Atlassian account before first startup.
  11. GitEye
  12. Add a lot of features to clutter the UI.
  13. And most features are in a
  14. "yes, we have this (although it is quite basic and not quite useful)" state.
  15. GitHub Desktop
  16. Featureless.
  17. In fact it has fewer features than the GitHub website.
  18. GitList
  19. Viewer only.
  20. Can only view files, commits, and stats.
  21. GitKraken
  22. Need to login via GitHub or GitKraken on first startup.
  23. GitUp
  24. - Minimal UI, powerful features.
  25. - Extremely fast, particularly for large repositories.
  26. - Open source.
  27. But it is only available for macOS.
  28. Workarounds
  29. For some editors and IDEs,
  30. combining several git plugins together actually make Git usable.
  31. Not perfect.
  32. But at least not as counter-intuitive like Git command line.
  33. And they do not require registering an account.
  34. Some tweaking of configurations may be necessary.
  35. Alternatively, I can write aliases for Git.
  36. In fact I have more than 50 git aliases defined in my git config.
  37. However, to write such aliases,
  38. I first need to understand the shit of Git UI.
  39. Also I have to maintain them.
  40. Instead of writing unmaintainable aliases,
  41. I could have written extensions of Git.
  42. libgit2 is written in C with bindings for most general programming languages.
  43. There is also JGit for Java.
  44. However, this requires much more effort than defining aliases.
  45. */
  46. func GitSucks() {}