Where are my future Git UI features?

Git sucks rubric Clients Awards Similar Items Git sucks

The Git version control system has been giving us trouble for over 15 years. Since its inception, a thousand people have tried to create new clients for Git to improve usability.

But pretty much everyone's focus has been on providing a pretty facade for doing more or less the same operations as Git on the command line - as if Git's CLI was already the ultimate user-friendliness.

Nobody cares to know: what workflows do people actually want to implement? What features would make these workflows easier? So instead we get clients thinking that git rebase -i is the best possible way to rephrase a commit message, or change an old commit, or split a commit, or even get exposed in the user interface.

rubric

I thought about some of the workflows I run frequently and looked at several Git clients (some of which are GUIs and some of which are TUIs) to see how well they support those workflows.

Many of my readers don't care about these workflows, but it's not just about the workflows themselves; this is the resolution to improve workflows by not using the flawed set of primitives offered by Git. I don't care to discuss which workflows are best or which should be supported.

Workflow:

rephrase: it should be possible to update the commit message of a commit that is not currently checked out. Rewording a commit is guaranteed not to cause a merge conflict, so there is no need to require the commit to be checked out. It should also be possible to rephrase a commit that is the ancestor of multiple branches without dropping some of those branches, but let's not get our hopes up... sync: It should be possible to sync all of my branches (or some subsets) via merge or rebase, in a single operation. I do this all the time! Virtually the first thing every morning when entering work. split: There should be a specific command to split a commit into two or more commits, including commits that are not currently checked out. Splitting a commit is guaranteed not to cause a merge conflict, so there is no need to require the commit to be checked out. Do not accept git rebase -i solutions, as it is very confusing to examine the state of the repository during a rebase. preview: before performing a merge or rebase, it should be possible to preview the result, including any conflicts that may arise. This way I don't have to run the merge/rebase operation to see if it will succeed or if it will be difficult to resolve the conflicts. Merge conflicts are perhaps the worst part of using Git, so it should be much easier to work with them (and avoid dealing with them!). The only people who seem to want this feature are people coming from other version control systems. undo: I should be able to undo arbitrary operations, ideally including tracked but uncommitted changes. This is not the same as undoing a commit. Undoing a commit creates a whole new commit with the reverse changes, whereas undoing an operation should restore the repository to the state it was in before the operation was performed, so that there would be no original commit to undo. large-load: The UI should load large repositories quickly. The UI should not crash at any time and should display useful information as soon as it loads. You shouldn't have to wait for the entire repository to load before c...

Git sucks rubric Clients Awards Similar Items Git sucks

The Git version control system has been giving us trouble for over 15 years. Since its inception, a thousand people have tried to create new clients for Git to improve usability.

But pretty much everyone's focus has been on providing a pretty facade for doing more or less the same operations as Git on the command line - as if Git's CLI was already the ultimate user-friendliness.

Nobody cares to know: what workflows do people actually want to implement? What features would make these workflows easier? So instead we get clients thinking that git rebase -i is the best possible way to rephrase a commit message, or change an old commit, or split a commit, or even get exposed in the user interface.

rubric

I thought about some of the workflows I run frequently and looked at several Git clients (some of which are GUIs and some of which are TUIs) to see how well they support those workflows.

Many of my readers don't care about these workflows, but it's not just about the workflows themselves; this is the resolution to improve workflows by not using the flawed set of primitives offered by Git. I don't care to discuss which workflows are best or which should be supported.

Workflow:

rephrase: it should be possible to update the commit message of a commit that is not currently checked out. Rewording a commit is guaranteed not to cause a merge conflict, so there is no need to require the commit to be checked out. It should also be possible to rephrase a commit that is the ancestor of multiple branches without dropping some of those branches, but let's not get our hopes up... sync: It should be possible to sync all of my branches (or some subsets) via merge or rebase, in a single operation. I do this all the time! Virtually the first thing every morning when entering work. split: There should be a specific command to split a commit into two or more commits, including commits that are not currently checked out. Splitting a commit is guaranteed not to cause a merge conflict, so there is no need to require the commit to be checked out. Do not accept git rebase -i solutions, as it is very confusing to examine the state of the repository during a rebase. preview: before performing a merge or rebase, it should be possible to preview the result, including any conflicts that may arise. This way I don't have to run the merge/rebase operation to see if it will succeed or if it will be difficult to resolve the conflicts. Merge conflicts are perhaps the worst part of using Git, so it should be much easier to work with them (and avoid dealing with them!). The only people who seem to want this feature are people coming from other version control systems. undo: I should be able to undo arbitrary operations, ideally including tracked but uncommitted changes. This is not the same as undoing a commit. Undoing a commit creates a whole new commit with the reverse changes, whereas undoing an operation should restore the repository to the state it was in before the operation was performed, so that there would be no original commit to undo. large-load: The UI should load large repositories quickly. The UI should not crash at any time and should display useful information as soon as it loads. You shouldn't have to wait for the entire repository to load before c...

What's Your Reaction?

like

dislike

love

funny

angry

sad

wow