News for hackers. Stuff that matters.

Cykelero

Show HN: Commit cherry-picking by copy-and-paste in a Mac GUI

https://indieapps.space/@Retcon/116482957501196309

Strangely, git GUIs are often slower, more restrictive than the git CLI. They really shouldn't be.One aspect is cherry-picking, where you can't just copy a hash somewhere, and paste it at the top of your branch, the way you would on the command line. With this update to my git client Retcon, I'm adding cherry-picking, and it does work by direct copy-paste.(Retcon is my macOS GUI specifically...

( Read More... | no comments | on HN )

Show HN: I spent two months optimizing my Git client

https://indieapps.space/@Retcon/113946127656095978

Last year I released Retcon, a Git GUI specifically made for rewriting history. Think `git rebase -i`, but with all the friction removed: no need to stash changes, a single undo command that works in any situation, and the ability to make changes even when there are conflicts. (so a bit of an alternative take on jj, that's more Git-compatible and comes with less mental load, but has its own...

( Read More... | no comments | on HN )

Show HN: Git commit splitting in Retcon 1.2 for macOS

https://indieapps.space/@Retcon/113946127656095978

Retcon (a macOS Git client for quickly rewriting history) has been out for a few months, but this update adds a highly-requested feature: commit splitting.In a few keystrokes, you can now break apart a big commit into smaller, more granular commits. Just enter Edit mode on a commit, unstage some of its changes, and confirm: the changes will be moved to a new commit, which you just have to...

( Read More... | no comments | 4 points | on HN )
Re:Rewrite Git history via drag-and-drop on Wednesday December 04, 2024 @06:20AM (#42316446)
Totally understand the dislike for subscriptions. I did go that way because it makes it much likelier I'll be able to work on the app long-term (which I'd really like!).

Retcon's actually already available on Homebrew—someone kindly added it, unprompted!

Re:Rewrite Git history via drag-and-drop on Wednesday December 04, 2024 @05:54AM (#42316313)
Thanks for the link; jj's approach seems really solid.

Retcon is pretty different: during a rebase, the state of everything is only stored in RAM, not serialized to the repo. So while you can postpone resolving conflicts until you're done putting commits in place, you do have to do so before you go do something else in your repo.

The RAM representation is basically a list of commits (well, commit-likes), what I call a virtual history. It's the history you want to get to, but that's not currently representable with a regular, physical Git history.

Re:Rewrite Git history via drag-and-drop on Tuesday December 03, 2024 @04:27PM (#42311689)
If there's a conflict, Retcon shows that to you, but you can keep freely moving commits around—it's not blocking. Once you're happy with how your history looks like, you can start actually resolving any remaining conflicts, and after that the history gets actually written.

Sometimes, just moving things around further is enough to resolve the conflicts, too, if they're simple enough!

Re:Rewrite Git history via drag-and-drop on Tuesday December 03, 2024 @04:24PM (#42311658)
Thank you!

It's a regular video recording, and then I noted down the chapter timestamps in an array. (see heroVideoChapterStartTimesSeconds at the very top of https://retcon.app/main.js) As the video is playing, the player uses this to know what chapter to highlight, and how much to fill its progress bar. (that's updateVideoChapters())

Re:Rewrite Git history via drag-and-drop on Tuesday December 03, 2024 @04:18PM (#42311576)
I'm actually working on adding this to Retcon right now! It's one of the biggest feature requests.

So far the implementation goes like this: you enter Edit mode on a commit; you unstage some lines; and you confirm. The lines are yanked from the commit, and added to a new commit that you just have to title. I just use it on the Retcon repo and it's real cool to have.

Re:Rewrite Git history via drag-and-drop on Tuesday December 03, 2024 @03:26PM (#42310918)
(Retcon dev here)

lazygit is really cool, and is a lot more full-featured than Retcon. But, the core "rewrite with zero friction" feature of Retcon is still unmatched, I think.

For instance: while lazygit does allow you to reorder commits without entering a separate mode, that's only if each move is conflict free. If you have two commits that need to both be moved at once, then in lazygit, you'll have to resort to a regular interactive rebase (so, with the separate planning and execution steps, no undo or preview along the way, etc).

In Retcon, if a commit move results in a conflict, that doesn't matter; you can keep making changes to your history anyway, and then resolve any remaining conflicts when you're ready. It makes the workflow super fluid.

There's probably still a ton Retcon could learn from lazygit/magit/jj, though!

Show HN: Retcon – A macOS Git client for instantly rewriting history

https://retcon.app/

I really like interactive rebases in Git, but always thought they took too much time and effort. There are tools that make them a lot nicer, like magit or GitUp, but they still ask a lot of you.So over the last two years I built Retcon. In the app, you can manipulate history directly (e.g. drag a commit to a different spot) at all times; even when there’s a conflict waiting for resolution, you...

( Read More... | 3 comments | 2 points | on HN )
I'm not sure what your point is; of course, you can write JS on top of Node that exposes its functionality with a nice API: that's exactly what Tasklemon is!

Did the intro maybe give you the impression that TL was built standalone, instead of on Node?

Hmm, could you explain your exports idea further? I don't think I'm getting it.

The different extensions are a good idea; my current recommendation is to use .lem.js (for compatibility with editors), so that could be changed to .lem.ts easily!

I'd love to have proper TypeScript support at some point, too.