Hacker Newsnew | past | comments | ask | show | jobs | submit | e40's commentslogin

I don’t think you understand how supply chains work.

Krugman sure is a good, probably even great, writer. His prose is almost effortless to consume. On the content, very interesting.

I think we can all agree that information should be behind a -v CLA. It's probably just something no one has thought of doing. I've learned over the decades to just ignore it.

> It's probably just something no one has thought of doing.

One might reasonably think that about a number of git's rough edges, and one might be surprised at the reality.

Some years ago, the annoyance of git's inconsistent terminology drove me to look into consolidating "cache", "index", and "staging area" in git's help text and documentation. What I found was that others had (of course) thought of it before, but when they tried to do it, it was rejected by git's gatekeepers.


That makes me sad. This termainology is really one of the major flaws of git, along with the checkout/reset thing


I understand there's friction in contributing to git, but it's absolutely possible to improve the docs:

Contributions from jvns:

https://github.com/search?q=repo%3Agit%2Fgit+jvns&type=commi...

Here she explains how she did it:

https://jvns.ca/blog/2026/01/08/a-data-model-for-git/

Contributions I've made:

https://github.com/search?q=repo%3Agit%2Fgit+jaysoffian+docu...

Generically:

https://github.com/search?q=repo%3Agit%2Fgit+documentation&t...

Do you have a link to your proposal on the git mailing list?


Are those three really all the same things? That seems crazy to have all three not consolidated.

Cache is like the old name, index is the new name, because the implementation didn't really make sense to use as a term for the users. Staging area was invented by third-parties as a term for training. Now Git uses --cached to mean only work on the context cached in the index and --index to mean also look at the --index. --stages exists as an alias for --cached for the people who want it, but it has no additional meaning and is not advertised in the documentation.

The actual documentation is actually sensible, the issue is just that most people just learn from third parties, who are lax with terms.

> At the end user level, "cache" is only used as an adjective these days; "cached", meaning "contents cached in the index, not the contents in the work tree". We could have called it "indexed", but "cached contents" was an already established phrase from very early days to mean that exact concept, and we did not need another word that meant the same thing.

> There are some commands that take --index and --cached options, and even some that can take both (but not at the same time). Many people find this confusing, but there is a pair of simple rules:

    "--cached" always means "work only on contents cached in the index, ignoring the work tree";
    "--index" makes a command that usually works on files in the work tree also pay attention to the index.
> Here are a handful of examples.

    "git apply" usually patches the files in the work tree without touching the index.
    "git apply --cached" only updates the contents in the index without modifying the file in the work tree.
    "git apply --index" patches both the contents in the work tree and in the index.
    "git diff HEAD" shows a patch to update the contents in the HEAD commit to contents in the work tree.
    "git diff --cached HEAD" shows a patch to update the contents in the HEAD commit to contents that is cached in the index.  "git diff --cached" is a short-hand for "git diff --cached HEAD" only because the HEAD commit is what you most often would want to compare the cached contents with.
    There is no "git diff --index HEAD" (yet); it would imply showing a three-way diff between HEAD, the index and the work tree.
    "git grep" finds matches in the work tree.
    "git grep --cached" finds matches in the contents in the index.
    "git rm" removes both the file in the work tree and the corresponding path in the index.
    "git rm --cached" removes the path from the index, leaving the file in the work tree untracked.

Yes.

> It's probably just something no one has thought of doing

There are 1000 things that's true of about git. At a certain point that becomes a problem in and of itself.


Luckily it’s an open source project so you could go in and clean up the ux.

Great, then your choices are (a) try and probably fail to get your changes upstreamed and/or (b) maintain your own fork of git forever.

This is very much a "if you don't like X about your country, just move to a different one" kind of "solution". The costs are extreme to the point that pretending it's viable is insulting. Really it's just a way to silence legitimate complaints.


to be fair, if you just want to improve the UX for yourself you can totally have a fork, make your changes, and use it on your own machines when talking to github or whatever other git repository. Now getting someone else to accept your changes might be harder, but that's what happens when you try to change a tool so many people use, especially one with a lot of history. Maintaining a fork is literally one of the things git was designed to make feasible after all.


Probably unacceptable as many would have built tooling around the specific default behaviors.

If tooling is relying on the output format of porcelain commands, it's wrong. The output of various subcommands have already changed more than once.

Relying on porcelain commands' output is the official way of interacting with git, they famously always refused to break it into a library. Nobody is going to use the low level git commands because: 1. Their output isn't any more reliable than the porcelain, and 2. How the porcelain uses them is also subject to change, so your UI might end up doing something different from the git high level command which is undesirable.

At least they gave us the `--porcelain` flag, meant exactly for this use case, to make the output format of porcelain commands never change. Dumb flag name, though.


You can have your own version. You don’t have to push all improvements upstream.

It's not really feasible to maintain private forks of every piece of software you use (especially something like git that needs regular security patches)

I do want a progress indicator for something that might take a while without asking. If you clone things locally, Git only reports that it cloned something.

Care to share?

I agree, people don’t change, the circumstances change to expose their true self.

Of course it does. It’s still a measurement though against other super rich.

I sent Colin Furze a note and got back a nice reply. The dude has an insane number of followers, so it was surprising I got a reply.


A ploy to waste resources of neighboring countries? Distract from something else? Theories?

Just want to thank you, Mike. I love Homebrew and wouldn't know what to do without it. My company sponsor's the project on github and I recommend that everyone consider helping out.

Thanks for the kind words and sponsorship <3

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: