Re: [RFC PATCH 00/10] Make submodules work if .gitmodules is not checked out
- Date: Tue, 15 May 2018 13:09:39 +0900
- From: Junio C Hamano <gitster@xxxxxxxxx>
- Subject: Re: [RFC PATCH 00/10] Make submodules work if .gitmodules is not checked out
Antonio Ospite <ao2@xxxxxx> writes:
> - my git terminology may still be a little off: do "work tree" and
> "work directory" mean the same thing?
Just on this tangent.
When we talk about the current working directory of a process
returned by getcwd((3) call, we typically spell that word fully (or
We lived without the modern "git worktree" layout for a long time,
but there was a hack in contrib/ called "git-new-workdir". This
creates something similar (in spirit, not in implementation) to
"worktree" in modern Git lingo, but because not many people use the
contrib feature (at least there is only few who get confused by it
and ask questions publicly, anyway), we do not hear "workdir" very
Since very early days of Git, we had "working tree" that is the
directory hierarchy that corresponds to what you place in the index,
and "Git repository" which is the ".git" directory that has that
index. Even though most everybody else was calling it the "working
tree", primarily because I was young(er) and (more) stupid, I often
called the same thing "work tree", and made things worse by
introducing GIT_WORK_TREE environment variable etc. But "working
tree" is the official terminology to denote a directory hierarchy
that corresponds to (and controlled by) a single index file as
opposed to what is in ".git/" directory..
The official term "worktree" came much later, with "git worktree"
command. This allow multiple working trees to be associated with a
single ".git/" directory. Most of the time "worktree" and "working
tree" can be used interchangeably, but we tend to say "working tree"
when we have more emphasis on the non-bareness of the repository and
talking about checked-out files, and say "worktree" when we are
mostly interested in the layout that have more than one working trees
associated to a single Git repository. What you get by "git clone",
for example, is just a single repository with a single working tree,
and nobody sane (other than young(er) and (more) stupid version of
me 10 years ago) would call the latter a "worktree" these days, as
there is not yet a secondary worktree to contrast it with.