On 2020-10-25, at 5:25 AM, Konstantin Khomoutov <kos...@bswap.ru> wrote:

> Aren't you using Git in a way it wasn't supposed to be used? ;-)
> Git is indeed a content-addressable filesystem in its core

"In a way it wasn't supposed to be used" implies that there is a way it was 
supposed to be used. If there is such a way, I've never seen it documented.

Git, to me at least, seems like the assembly language / virtual machine for an 
immutable system of datablobs, that has a "file system" of sorts layered on top 
of that (well, more accurately, many many file systems that all share the same 
datablobs). At the lowest level, as long as one of the reachable filetrees has 
a reference to a datablob somewhere, then that datablob will not be garbage 
collected -- but if you disable the garbage collection system, or use a custom 
one, then arbitrary datablobs not even referenced in a git file tree can be 
stored in the packs.

Built on top of this, like the C language, is a version control system, that 
seems like the assembly language of VCS systems. For anything that you want to 
do, there's multiple ways to do it. Rules for how you set up a bunch of 
repositories for many developers to work together on a project are numerous, 
all different, and the procedures and best practices at one place might be 
different at another place,
depending on whether you have a "privileged publishing master" or not.
Depending on whether or not each person treats their own "master" as their own 
version, or if "master" is the shared current best version and everyone has 
their own forks off that.
Depending on whether or not you are set up for a triangle flow, and which 
version of triangle flow you use.
Depending on whether or not you do plain rebasing, or imerge-based rebase with 
history.
Depending on whether or not you use the "git flow" branching system, or some 
other branching system.
Depending on whether or not you do squashed merges.
Etc.

There are too many different "how do I use git as a VCS" options, and frankly, 
I've never seen a really good "best practices" that covers all the bases. Just 
that what you want to be able to do with git determines which of the many ways 
to do things you will do -- and if there is a "If this is your goal, then this 
is your setup" document that addresses the many different "this is what I want 
to be able to do", I haven't seen it.

-- 
You received this message because you are subscribed to the Google Groups "Git 
for human beings" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to git-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/git-users/D6D994FB-DF20-49AB-AF19-4BD4C394D4FA%40gmail.com.

Reply via email to