On Wed, Jan 6, 2016 at 7:30 PM, Sebastian Schuberth
<sschube...@gmail.com> wrote:
> Hi,
>
> I recently compared the results of doing
>
>     $ git clone --depth=1 https://github.com/git/git.git git-clone-depth-1
>
> versus
>
>     $ mkdir git-fetch-depth-1
>     $ cd git-fetch-depth-1
>     $ git init
>     $ git remote add origin https://github.com/git/git.git
>     $ git fetch --depth=1
>
> and noticed a few things:

I think the culprit is the "git remote add" line. "git clone --depth"
by default will fetch only one branch (aka --single-branch option in
git-clone). But I suspect when you add a new remote, the default
refspec is to get all refs. So "git fetch --depth=1" means fetch _all_
refs, each one has maximum one commit. "git log --graph --decorate"
should show this clearer.

> 1. The docs of clone [1] say about --depth "Create a shallow clone with a 
> history truncated to the specified number of revisions" while for fetch the 
> docs [2] say "[...] to the specified number of commits [...]". As in this 
> particular case revision are always commits, I think the clone docs should 
> also say "commits".
>
> 2. In the fetch docs --depth is described to "Deepen or shorten the history 
> of a shallow repository created by git clone". That sounds as if my example 
> from above where I initialze a repo manually would not allow fetch to be 
> called with --depth as I did not clone before. But in fact my example works 
> fine. I guess we need some clarfication in the wording here.
>
> 3. When running "git log --all -oneline" in the two working trees I get 
> different results, which is not what I'd expect:
>
>     $ cd git-clone-depth-1
>     $ git log --all --oneline
>       7548842 Git 2.7
>
> versus
>
>     $ cd git-fetch-depth-1
>     $ git log --all --oneline
>       b819526 Merge branch 'jk/notes-merge-from-anywhere' into pu
>       e2281f4 What's cooking (2016/01 #01)
>       ef7b32d Sync with 2.7
>       7548842 Git 2.7
>       833e482 Git 2.6.5
>
> So in the clone case only the specified number of commits from the tip of the 
> default branch (master in this case) is fetched, not of each remote branch 
> history. fetch in the other hand really gets the specified number of commits 
> from the tip of each remote branch history. I don't know whether this 
> behavior is inded or not as I cannot find any docs on it either way. But it 
> seems inconsistent to me that clone with --depth only gets the history for 
> the default branch, as clone without --depth would give me the history of all 
> branches.
>
> For completeness, I'm using Git for Windows 2.7.
>
> Any comments?
>
> [1] https://git-scm.com/docs/git-clone
> [1] https://git-scm.com/docs/git-fetch
>
> --
> Sebastian Schuberth
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
Duy
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to