Ingo Schwarze wrote in <[email protected]>: |Douglas McIlroy wrote on Tue, Mar 22, 2022 at 08:58:19AM -0400: |> Tangential comment: |> I have always recoiled from git. | |I agree to some extent. Git does get a number of things right, but |there are also many aspects of its user interface and design that make |it harder to use than necessary. It's hard to call those issues fatal
I do not agree with that. Mr. McIlroy was used to Plan9, and they had a SHA-1/block based backing store behind a short lived cache aka venti/fossil etc. So it can be said he/they even invented the actual concept. But it is not daily snapshoted etc., but explicitly on request. It is just a database of hashed objects. The database consists of several types of objects (commits, directory/content snapshots, and binary blobs), which refer to each other and (can) form several paths through the database. Like a (several) commit history line(s) of a branch(es). That said, i learned it now over a decade ago, and basically did not move. I use commands like "git update-ref refs/heads/BRANCH SHA-1/BRANCH" to reset history line "heads". I use "git tag TAG SHA-1/BRANCH" to introduce a tag in the tag in the line. I use "git fetch [-v] [UPSTREAM NAME]" to synchronise, "git push [UPSTREAM NAME] [:BRANCH NAME:]" in the other direction. I use "git commit" to create a commit object. "git rebase [--onto BRANCH] SHA-1^/BRANCH^ (first) SHA-1/BRANCH (last) to rebase (parts of) history lines. I use "git merge [--ff-only] SHA-1/BRANCH" to merge other lines onto the current one. We are basically there. "git reset [--hard] BRANCH". Ah yes, "git diff [--cached]", because there is the working tree and the things yet "git add [:FILE:]"ed to the staging area that will be used by the next "git commit". Today much much more is possible, partial checkouts etc etc. That however is beyond my capabilities. --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt)
