From: Junio C Hamano <gitster@pobox.com>
To: Ralf Thielow <ralf.thielow@gmail.com>
Cc: pclouds@gmail.com, git@vger.kernel.org
Subject: Re: [PATCHv6] clone --single: limit the fetch refspec to fetched branch
Date: Tue, 18 Sep 2012 12:42:01 -0700 [thread overview]
Message-ID: <7vk3vrm83a.fsf@alter.siamese.dyndns.org> (raw)
In-Reply-To: <1347995660-9956-1-git-send-email-ralf.thielow@gmail.com> (Ralf Thielow's message of "Tue, 18 Sep 2012 21:14:20 +0200")
Ralf Thielow <ralf.thielow@gmail.com> writes:
> After running "git clone --single", the resulting repository has the
> usual default "+refs/heads/*:refs/remotes/origin/*" wildcard fetch
> refspec installed, which means that a subsequent "git fetch" will
> end up grabbing all the other branches.
>
> Update the fetch refspec to cover only the singly cloned ref instead
> to correct this.
>
> That means:
> If "--single" is used without "--branch" or "--mirror", the
> fetch refspec covers the branch on which remote's HEAD points to.
> If "--single" is used with "--branch", it'll cover only the branch
> specified in the "--branch" option.
> If "--single" is combined with "--mirror", then it'll cover all
> refs of the cloned repository.
> If "--single" is used with "--branch" that specifies a tag, then
> it'll cover only the ref for this tag.
>
> Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
> ---
>
> changes in v6
> - remove initial created tests (they tested in a too deep level)
> - add tests for "--mirror" option
> - add tests for the case of cloning a tag
> - update commit message
>
> I've tried to update "Documentation/git-clone.txt", but I don't
> know in which way this patch changes already described behaviour.
> The resulting refspec seems only be covered in the last part of
> the "--single-branch" section by describing "--no-single-branch",
> but this hasn't changed. Or did I miss something?
I do not think we are changing anything. The whole "--single-branch"
was an half-baked afterthought hack that nobody anticipated the user
to later issue "git fetch" in the resulting repository, and everybody
involved in the series (the maintainer included) were just happy to
see the resulting code only transferred objects needed for the branch
without wasting bandwidth for objects needed for other branches, and
stopped thinking beyond that X-<.
If anything, we need to _add_ the description of what happens when
further fetches are done. The second and the third paragraph in
the DESCRIPTION section talks only about the normal case, so at
least at the end of the second paragraph we should say "But if you
use --single-branch, all of this is different". And what happens
when you do use --single-branch should be described in the part that
describes that option, e.g.
Documentation/git-clone.txt | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git c/Documentation/git-clone.txt w/Documentation/git-clone.txt
index c1ddd4c..f59bc49 100644
--- c/Documentation/git-clone.txt
+++ w/Documentation/git-clone.txt
@@ -29,7 +29,8 @@ currently active branch.
After the clone, a plain `git fetch` without arguments will update
all the remote-tracking branches, and a `git pull` without
arguments will in addition merge the remote master branch into the
-current master branch, if any.
+current master branch, if any (this is untrue when "--single-branch"
+is given; see below).
This default configuration is achieved by creating references to
the remote branch heads under `refs/remotes/origin` and
@@ -152,9 +153,11 @@ objects from the source repository into a pack in the cloned repository.
-b <name>::
Instead of pointing the newly created HEAD to the branch pointed
to by the cloned repository's HEAD, point to `<name>` branch
- instead. `--branch` can also take tags and treat them like
- detached HEAD. In a non-bare repository, this is the branch
+ instead. In a non-bare repository, this is the branch
that will be checked out.
++
+`--branch` can also take tags and detaches the HEAD
+at that commit in the resulting repository.
--upload-pack <upload-pack>::
-u <upload-pack>::
@@ -193,6 +196,12 @@ objects from the source repository into a pack in the cloned repository.
clone with the `--depth` option, this is the default, unless
`--no-single-branch` is given to fetch the histories near the
tips of all branches.
++
+Further fetches into the resulting repository will only update the
+remote tracking branch for the branch this option was used for the
+initial cloning. If the HEAD at the remote did not point at any
+branch when `--single-branch` clone was made, no remote tracking
+branch is created.
--recursive::
--recurse-submodules::
next prev parent reply other threads:[~2012-09-18 19:42 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-13 18:38 is this behaviour expected for "git clone --single-branch"? Ralf Thielow
2012-09-13 18:45 ` Junio C Hamano
2012-09-13 18:48 ` Ralf Thielow
2012-09-14 5:09 ` [PATCH] clone: fix refspec on "--single-branch" option Ralf Thielow
2012-09-14 5:35 ` Junio C Hamano
2012-09-14 6:48 ` Junio C Hamano
2012-09-14 13:10 ` Nguyen Thai Ngoc Duy
2012-09-14 14:25 ` Ralf Thielow
2012-09-14 16:02 ` Junio C Hamano
2012-09-14 18:11 ` [PATCHv2] " Ralf Thielow
2012-09-14 19:22 ` Junio C Hamano
2012-09-14 21:13 ` [PATCHv3] " Ralf Thielow
2012-09-14 22:45 ` Junio C Hamano
2012-09-16 8:13 ` [PATCHv4] clone --single: limit the fetch refspec to fetched branch Ralf Thielow
2012-09-17 4:48 ` Junio C Hamano
2012-09-17 12:06 ` Nguyen Thai Ngoc Duy
2012-09-17 12:11 ` Nguyen Thai Ngoc Duy
2012-09-17 19:21 ` [PATCHv5] " Ralf Thielow
2012-09-17 20:18 ` Junio C Hamano
2012-09-17 21:04 ` Ralf Thielow
2012-09-17 21:39 ` Junio C Hamano
2012-09-18 14:08 ` Ralf Thielow
2012-09-18 16:57 ` Junio C Hamano
2012-09-18 19:14 ` [PATCHv6] " Ralf Thielow
2012-09-18 19:42 ` Junio C Hamano [this message]
2012-09-18 19:45 ` Junio C Hamano
2012-09-19 16:45 ` [PATCHv7] " Ralf Thielow
2012-09-19 23:26 ` Junio C Hamano
2012-09-20 18:04 ` [PATCHv8] " Ralf Thielow
2012-09-20 21:17 ` Junio C Hamano
2012-09-19 7:36 ` [PATCHv6] " Nguyen Thai Ngoc Duy
2012-09-19 8:24 ` Ralf Thielow
2012-09-17 20:09 ` [PATCHv4] " Junio C Hamano
2012-09-18 1:04 ` Nguyen Thai Ngoc Duy
2012-09-18 3:56 ` Junio C Hamano
2012-09-17 13:25 ` Ralf Thielow
2012-09-17 20:08 ` Junio C Hamano
2012-09-18 1:02 ` Nguyen Thai Ngoc Duy
2012-09-14 18:42 ` [PATCH] clone: fix refspec on "--single-branch" option Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7vk3vrm83a.fsf@alter.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=pclouds@gmail.com \
--cc=ralf.thielow@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.