The Evilness of Git UI

Petr Baudis

pasky@suse.cz

SuSE Labs CZ

Let's talk about...

...random mesh of UI evilness - audience-generated!

I will get you started with few things I hate (and you know you do too)

Then we will fix them and can say we've done something tangible on GitTogether

...

PROFIT!

About 2/3 of GitSurvey feedback seems to be about UI

UI problems are not hard to fix technically

And they are not always a conceptual challenge either

Let's make a big UI janitorial TOOD list

Cogito Goodies

Few of us still sometimes use Cogito, because of

cg commit -m does a fmt pass

cg export vs git archive –format=tar –prefix=dir | tar x

cg tag-ls will actually feed you useful information about the tags

The reset-checkout model

Semantics of various git reset and git checkout usages is complicated and confusing

Cogito's model:

cg switch to switch between branches and repoint them

cg reset to throw away local changes

cg restore to get different versions of files

Do we want to change the git model at this point?

Ever?

How?

The add-rm inconsistency

git add does much more than git rm

Overloaded to both track new files and stage changes

No easy way to unstage changes

Do we want to change the git model at this point?

Ever?

How?

git send-email

Barely anybody regularly using this does so directly without wrapping it with extensive parameters and scripts, apparently!

Its defaults are evil

Its interactivity is evil

Its rcpt list auto-building is evil

(Why is git am -3 not the default?)

Random Ideas

Evil error messages:

Getting better, but sometimes still ambiguous
(e.g. if “resolving conflicts” includes committing or not)

My pet peeve: permission denied when pushing

git-new-workdir only in contrib

Warn about pushing to non-bare repository

Support branch wildcards working with slashes

Varying levels and styles of documentation

Too few examples

Advertise GUIs more

GitSurvey-based Ideas

.git/config containing a comment referencing manpage

Cache-stage-index terminology inconsistency

Finer layering of git commands

The whole submodules thing

chmod -R a+rX . && touch git-daemon-export-ok && git gc && git update-server-info && chmod u+x .git/hooks/post-update

“How to pay for services from Russia - no solution at all”

More

Give me more of the evil stuff!

SUSE BrainShare Template 2004

2004-01-28T12:03:58