There are a number of git commands, such as git clone --depth 10 <repo>
, that require the number of revisions [git help revisions
] to be given.
What is the distinction between a commit and a revision (in git, rather than say svn)?
Or does it only show up in the plural when trying to count revisions/commits, e.g. that revisons must be counted by walking the DAG (directed acyclic graph) of commits and their parents, or some other careful distinction?
Interesting. I hadn't come across this distinction before but from skimming the documentation and my own experience, a commit in git is an object that points to a specific point in time in the history of the project (along with information on how it reached there). A revision is superset of this that talks about different ways to reference a commit or a range of commits.
See "SPECIFYING REVISIONS" of git rev-parse:
So "revision" refers to the id you can use as a parameter to reference an object in git (usually a commit).
HEAD@{5 minutes ago}
is a revision which reference the commit present 5 minutes ago.gitrevision
mentions:For instance, the following rev parameter doesn't reference a commit:
A "commit" in Git generally designates a "commit object" (as described in
git commit-tree
for instance):So:
In your case (
git clone
)--depth <n>
does:It is for all the commits accessible at that depth, up to
n
revisions per path in the DAG.Since the result can be more than
n
commits, the term revision is more adapted here in order to emphasize you don't want justn
commits, but any commits referenced by a max ofn
revisions accessible.However, in this context, revisions clearly reference only commits (as illustrated below) reachable (as you mentioned in "Is
git clone --depth 1
(shallow clone) more useful than it makes out?").The question is "reachable from what"?
You referenced this thread which included: