this post was submitted on 30 Sep 2024
28 points (96.7% liked)

VS Code

798 readers
2 users here now

founded 1 year ago
MODERATORS
28
submitted 1 month ago* (last edited 1 month ago) by [email protected] to c/vscode
you are viewing a single comment's thread
view the rest of the comments
[–] spartanatreyu 1 points 1 month ago

It's basically just a better sourcetree.

If you're already used to sourcetree, it's a really smooth transition.

The main reason to switch away from sourcetree is the bugs and papercuts.

  • Bugs: Sure, bugs happen with everything but you're stuck with them when they happen with sourcetree. There was an issue not too long ago where sourcetree couldn't scroll. It was classed as a low priority bug and took about a year for it to be fixed. Imagine needing to use your keyboard to scroll up and down, but then git would refresh and take you back to the top where you'd need to start again. Now imagine trying to do that for a whole year. And that was just one bug.

  • Papercuts: It's so good at some things that you want to forgive the flaws in other things and find workarounds to bugs, but after a while they build up into poisoning you're experience. For example: things going slow in larger repos, getting git errors when staging certain lines because a different line in the middle had to be staged/removed in a different order, the bi-yearly account issues, etc...

The thing is, you don't need to put up with it since fork already does everything that sourcetree does (and a bit more), and they actually spend time sanding off the papercuts so you don't need to worry about finding workarounds when something goes wrong.

Just losing the bugs without losing any features is already reason enough to switch.

But there's also the improvements over sourcetree as well:

  • Collapsible and sortable git graph (by date or topology)
  • Better staging -- Sourcetree supports staging changed content by file, hunk, and sometimes by line when it doesn't bug out. -- Fork supports staging changed content AND original content by file, hunk, and by line. That way if you changed a line, you can keep both the old version and new version in a commit. (e.g. You altered a comment in your code, but then upon self review when staging changes you realised you don't want to change the comment, but instead you want the new comment to exist under the old comment. Instead of copying the change, undoing the change, then pasting the change into the code, you can simply stage the addition of the line, but discard the removal of the old line. Now both lines exist in your code)
  • Better rebasing
  • Supports new git features (e.g. worktrees, new diff algos, etc)
  • Just how snappy the program is compared to sourcetree, it keeps you in that flow state