Re: Pushing/fetching from/into a shallow-cloned repository
- From
Philip Oakley <philipoakley@iee.org>
- Date
- Apr 18, 2013, 20:27 UTC
- Message-ID
- <8BCCECD4CEEA4028AD97B851099F4C5E@PhilipOakley>
- In-Reply-To
- <20130418135233.87aa23896fa48dc2d87d80fb@domain007.com>
From: "Konstantin Khomoutov" <kostix+git@007spb.ru> Sent: Thursday, April 18, 2013 10:52 AM
Show 26 quoted lines
> The git-clone manual page, both [1] and my local copy coming with > Git for Windows 1.8.1, say about the --depth command-line option: > > --depth <depth> > > Create a shallow clone with a history truncated to the specified > number of revisions. A shallow repository has a number of > limitations (you cannot clone or fetch from it, nor push from nor > into it), but is adequate if you are only interested in the recent > history of a large project with a long history, and would want to > send in fixes as patches. > > But having done a shallow clone (--depth=1) of one of my repositories, > I was able to record a new commit, push it out to a "reference" bare > repository and then fetch back to another clone of the same repository > just fine. I have then killed my test commit doing a forced push from > another clone and subsequently was able to do `git fetch` in my > shallow > clone just fine. > > So I observe pushing/fetching works OK at least for a simple case like > this one. > > Hence I'd like to ask: if the manual page is wrong or I'm observing > some corner case? > --
The manual is deliberately misleading. The problem is that the depth is a movable feast that depends on how far the branches have progressed. The DAG will be missing the historic merge bases, and in some scenarios can form disconnected runs of commits. The ref negotiation can also be a problem.
The git\Documentation\technical\shallow.txt has some extra details on issues.
Philip