diff mbox series

[v4,3/4] gitfaq: shallow cloning a repository

Message ID 20200429093811.8475-3-shouryashukla.oo@gmail.com (mailing list archive)
State New, archived
Headers show
Series [v4,1/4] gitfaq: files in .gitignore are tracked | expand

Commit Message

Shourya Shukla April 29, 2020, 9:38 a.m. UTC
Add issue in 'Common issue' section which covers issues with cloning
large repositories. Use partial cloning to selectively clone the
repository.

Signed-off-by: Shourya Shukla <shouryashukla.oo@gmail.com>
---
I wanted to ask why is there no mention of partial cloning in
the 'git-clone' documentation? Is it because it is an experimental
feature?

 Documentation/gitfaq.txt | 10 ++++++++++
 1 file changed, 10 insertions(+)

Comments

Elijah Newren April 29, 2020, 4 p.m. UTC | #1
On Wed, Apr 29, 2020 at 2:38 AM Shourya Shukla
<shouryashukla.oo@gmail.com> wrote:
>
> Add issue in 'Common issue' section which covers issues with cloning
> large repositories. Use partial cloning to selectively clone the
> repository.
>
> Signed-off-by: Shourya Shukla <shouryashukla.oo@gmail.com>
> ---
> I wanted to ask why is there no mention of partial cloning in
> the 'git-clone' documentation? Is it because it is an experimental
> feature?
>
>  Documentation/gitfaq.txt | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/Documentation/gitfaq.txt b/Documentation/gitfaq.txt
> index 7d294306f9..6f32846e3d 100644
> --- a/Documentation/gitfaq.txt
> +++ b/Documentation/gitfaq.txt
> @@ -243,6 +243,16 @@ I want to change the remote of my repository. How do I do that?::
>  One can list the remotes of a repository using `git remote -v` command.
>  The default name of a remote is 'origin'.
>
> +[[shallow-cloning]]

Why is this marked as "shallow-cloning"?

> +The repository I am trying to clone is too big. Is there an alternative
> +way of cloning it in lesser space?::
> +       A good way to save up space when cloning a repository is

"save space" instead of "save up space"?

> +       by using `partial clones`. A partial clone will clone the
> +       full history of the repository but will skip out the entities
> +       specified by the `--filter` option one uses in `git clone`.
> +       Any entity which has not been cloned to save space can be cloned
> +       on-demand. See linkgit:partial-clone[1].
> +

I like this much better than suggesting shallow clones, though you
should mention that partial clones (currently?) presume that you have
an always-on network connection to the original repository because
subsequent commands may need to fetch additional objects in order to
complete.
Junio C Hamano April 29, 2020, 5:09 p.m. UTC | #2
Shourya Shukla <shouryashukla.oo@gmail.com> writes:

> Add issue in 'Common issue' section which covers issues with cloning
> large repositories. Use partial cloning to selectively clone the
> repository.
>
> Signed-off-by: Shourya Shukla <shouryashukla.oo@gmail.com>
> ---
> I wanted to ask why is there no mention of partial cloning in
> the 'git-clone' documentation? Is it because it is an experimental
> feature?

If the folks that have been pushing the feature haven't bothered to
document it fully, by definition, it must be a work in progress that
is not ready for the prime time ;-)

Jokes aside, the --filter=<filter-spec> option is mentioned in the
documentation and it says "...is used for the partial clone filter",
without even defining what a "partial clone filter" really is.

The topic deserves its own subsection, between the "Git URLs" and
the "Examples" sections, in git-clone(1).

>  Documentation/gitfaq.txt | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/Documentation/gitfaq.txt b/Documentation/gitfaq.txt
> index 7d294306f9..6f32846e3d 100644
> --- a/Documentation/gitfaq.txt
> +++ b/Documentation/gitfaq.txt
> @@ -243,6 +243,16 @@ I want to change the remote of my repository. How do I do that?::
>  One can list the remotes of a repository using `git remote -v` command.
>  The default name of a remote is 'origin'.
>  
> +[[shallow-cloning]]
> +The repository I am trying to clone is too big. Is there an alternative
> +way of cloning it in lesser space?::
> +	A good way to save up space when cloning a repository is
> +	by using `partial clones`. A partial clone will clone the
> +	full history of the repository but will skip out the entities
> +	specified by the `--filter` option one uses in `git clone`.
> +	Any entity which has not been cloned to save space can be cloned
> +	on-demand. See linkgit:partial-clone[1].

Where does this link go?
Shourya Shukla May 2, 2020, 5 a.m. UTC | #3
On 29/04 09:00, Elijah Newren wrote:
> > diff --git a/Documentation/gitfaq.txt b/Documentation/gitfaq.txt
> > index 7d294306f9..6f32846e3d 100644
> > --- a/Documentation/gitfaq.txt
> > +++ b/Documentation/gitfaq.txt
> > @@ -243,6 +243,16 @@ I want to change the remote of my repository. How do I do that?::
> >  One can list the remotes of a repository using `git remote -v` command.
> >  The default name of a remote is 'origin'.
> >
> > +[[shallow-cloning]]
> 
> Why is this marked as "shallow-cloning"?

I forgot to change the heading, will fix it right away.

> > +The repository I am trying to clone is too big. Is there an alternative
> > +way of cloning it in lesser space?::
> > +       A good way to save up space when cloning a repository is
> 
> "save space" instead of "save up space"?

Sure.

> > +       by using `partial clones`. A partial clone will clone the
> > +       full history of the repository but will skip out the entities
> > +       specified by the `--filter` option one uses in `git clone`.
> > +       Any entity which has not been cloned to save space can be cloned
> > +       on-demand. See linkgit:partial-clone[1].
> > +
> 
> I like this much better than suggesting shallow clones, though you
> should mention that partial clones (currently?) presume that you have
> an always-on network connection to the original repository because
> subsequent commands may need to fetch additional objects in order to
> complete.

Alright, I will add that. Thank you for the review :)
Shourya Shukla May 2, 2020, 6:13 a.m. UTC | #4
On 29/04 10:09, Junio C Hamano wrote:
> > ---
> > I wanted to ask why is there no mention of partial cloning in
> > the 'git-clone' documentation? Is it because it is an experimental
> > feature?
> 
> If the folks that have been pushing the feature haven't bothered to
> document it fully, by definition, it must be a work in progress that
> is not ready for the prime time ;-)
> 
> Jokes aside, the --filter=<filter-spec> option is mentioned in the
> documentation and it says "...is used for the partial clone filter",
> without even defining what a "partial clone filter" really is.
> 
> The topic deserves its own subsection, between the "Git URLs" and
> the "Examples" sections, in git-clone(1).

May I try to add it? If yes then are there any points to be kept in mind
while writing this part (for eg., length of the subsection, writing
style, what all is to be written etc.)?
> 
> >  Documentation/gitfaq.txt | 10 ++++++++++
> >  1 file changed, 10 insertions(+)
> >
> > diff --git a/Documentation/gitfaq.txt b/Documentation/gitfaq.txt
> > index 7d294306f9..6f32846e3d 100644
> > --- a/Documentation/gitfaq.txt
> > +++ b/Documentation/gitfaq.txt
> > @@ -243,6 +243,16 @@ I want to change the remote of my repository. How do I do that?::
> >  One can list the remotes of a repository using `git remote -v` command.
> >  The default name of a remote is 'origin'.
> >  
> > +[[shallow-cloning]]
> > +The repository I am trying to clone is too big. Is there an alternative
> > +way of cloning it in lesser space?::
> > +	A good way to save up space when cloning a repository is
> > +	by using `partial clones`. A partial clone will clone the
> > +	full history of the repository but will skip out the entities
> > +	specified by the `--filter` option one uses in `git clone`.
> > +	Any entity which has not been cloned to save space can be cloned
> > +	on-demand. See linkgit:partial-clone[1].
> 
> Where does this link go?

Actually I intended to link to this page:
https://git-scm.com/docs/partial-clone

Do we link such pages in a manner different from linking command
documentations? Also, lets say I want to link this section using
gitlink:
https://git-scm.com/docs/git-clone#_git_urls

Do we change the number in 'linkgit:git-clone[n]'? If yes, then how do
we decide that number?
Junio C Hamano May 4, 2020, 4:06 p.m. UTC | #5
Shourya Shukla <shouryashukla.oo@gmail.com> writes:

> On 29/04 10:09, Junio C Hamano wrote:
>> > ---
>> > I wanted to ask why is there no mention of partial cloning in
>> > the 'git-clone' documentation? Is it because it is an experimental
>> > feature?
>> 
>> If the folks that have been pushing the feature haven't bothered to
>> document it fully, by definition, it must be a work in progress that
>> is not ready for the prime time ;-)
>> 
>> Jokes aside, the --filter=<filter-spec> option is mentioned in the
>> documentation and it says "...is used for the partial clone filter",
>> without even defining what a "partial clone filter" really is.
>> 
>> The topic deserves its own subsection, between the "Git URLs" and
>> the "Examples" sections, in git-clone(1).
>
> May I try to add it? If yes then are there any points to be kept in mind
> while writing this part (for eg., length of the subsection, writing
> style, what all is to be written etc.)?

I am much less qualified to answer these questions than others on
the CC: list.

Who added the mention to --filter and "used for the partial clone filter"
to the page anyway?  Did you run "git blame" to find out?

    ... goes and looks ...

It was added by 4a465443 (clone: document --filter options, 2020-03-22).

Derrick, perhaps you can help Shourya to find a good place to give
a birds-eye description for the partial-clone feature and figure out
what points about the feature are worth covering there?

Thanks.
Derrick Stolee May 5, 2020, 12:26 p.m. UTC | #6
On 5/4/2020 12:06 PM, Junio C Hamano wrote:
> Shourya Shukla <shouryashukla.oo@gmail.com> writes:
> 
>> On 29/04 10:09, Junio C Hamano wrote:
>>>> ---
>>>> I wanted to ask why is there no mention of partial cloning in
>>>> the 'git-clone' documentation? Is it because it is an experimental
>>>> feature?
>>>
>>> If the folks that have been pushing the feature haven't bothered to
>>> document it fully, by definition, it must be a work in progress that
>>> is not ready for the prime time ;-)
>>>
>>> Jokes aside, the --filter=<filter-spec> option is mentioned in the
>>> documentation and it says "...is used for the partial clone filter",
>>> without even defining what a "partial clone filter" really is.
>>>
>>> The topic deserves its own subsection, between the "Git URLs" and
>>> the "Examples" sections, in git-clone(1).
>>
>> May I try to add it? If yes then are there any points to be kept in mind
>> while writing this part (for eg., length of the subsection, writing
>> style, what all is to be written etc.)?
> 
> I am much less qualified to answer these questions than others on
> the CC: list.
> 
> Who added the mention to --filter and "used for the partial clone filter"
> to the page anyway?  Did you run "git blame" to find out?
> 
>     ... goes and looks ...
> 
> It was added by 4a465443 (clone: document --filter options, 2020-03-22).
> 
> Derrick, perhaps you can help Shourya to find a good place to give
> a birds-eye description for the partial-clone feature and figure out
> what points about the feature are worth covering there?

Yes, in the series that added those options I requested help in
documenting the partial clone. This was started in [1] but seems
to have gone stale. 

CC'ing Dyrone to see where they are with this.

Shourya: would you be willing to help the patch [1] get finished?
You could probably incorporate it into this series (adding your
sign-off). Let's see if Dyrone gets back to us.

Thanks,
-Stolee

[1] https://lore.kernel.org/git/c1a44a35095e7d681c312ecaa07c46e49f2fae67.1586791560.git.gitgitgadget@gmail.com/
Teng Long May 6, 2021, 2:49 a.m. UTC | #7
Sorry, I was taking attention on other place and totally forgot that.

I will restart to look into the patch again today

Derrick Stolee <stolee@gmail.com> 于2020年5月5日周二 下午8:26写道:
>
> On 5/4/2020 12:06 PM, Junio C Hamano wrote:
> > Shourya Shukla <shouryashukla.oo@gmail.com> writes:
> >
> >> On 29/04 10:09, Junio C Hamano wrote:
> >>>> ---
> >>>> I wanted to ask why is there no mention of partial cloning in
> >>>> the 'git-clone' documentation? Is it because it is an experimental
> >>>> feature?
> >>>
> >>> If the folks that have been pushing the feature haven't bothered to
> >>> document it fully, by definition, it must be a work in progress that
> >>> is not ready for the prime time ;-)
> >>>
> >>> Jokes aside, the --filter=<filter-spec> option is mentioned in the
> >>> documentation and it says "...is used for the partial clone filter",
> >>> without even defining what a "partial clone filter" really is.
> >>>
> >>> The topic deserves its own subsection, between the "Git URLs" and
> >>> the "Examples" sections, in git-clone(1).
> >>
> >> May I try to add it? If yes then are there any points to be kept in mind
> >> while writing this part (for eg., length of the subsection, writing
> >> style, what all is to be written etc.)?
> >
> > I am much less qualified to answer these questions than others on
> > the CC: list.
> >
> > Who added the mention to --filter and "used for the partial clone filter"
> > to the page anyway?  Did you run "git blame" to find out?
> >
> >     ... goes and looks ...
> >
> > It was added by 4a465443 (clone: document --filter options, 2020-03-22).
> >
> > Derrick, perhaps you can help Shourya to find a good place to give
> > a birds-eye description for the partial-clone feature and figure out
> > what points about the feature are worth covering there?
>
> Yes, in the series that added those options I requested help in
> documenting the partial clone. This was started in [1] but seems
> to have gone stale.
>
> CC'ing Dyrone to see where they are with this.
>
> Shourya: would you be willing to help the patch [1] get finished?
> You could probably incorporate it into this series (adding your
> sign-off). Let's see if Dyrone gets back to us.
>
> Thanks,
> -Stolee
>
> [1] https://lore.kernel.org/git/c1a44a35095e7d681c312ecaa07c46e49f2fae67.1586791560.git.gitgitgadget@gmail.com/
diff mbox series

Patch

diff --git a/Documentation/gitfaq.txt b/Documentation/gitfaq.txt
index 7d294306f9..6f32846e3d 100644
--- a/Documentation/gitfaq.txt
+++ b/Documentation/gitfaq.txt
@@ -243,6 +243,16 @@  I want to change the remote of my repository. How do I do that?::
 One can list the remotes of a repository using `git remote -v` command.
 The default name of a remote is 'origin'.
 
+[[shallow-cloning]]
+The repository I am trying to clone is too big. Is there an alternative
+way of cloning it in lesser space?::
+	A good way to save up space when cloning a repository is
+	by using `partial clones`. A partial clone will clone the
+	full history of the repository but will skip out the entities
+	specified by the `--filter` option one uses in `git clone`.
+	Any entity which has not been cloned to save space can be cloned
+	on-demand. See linkgit:partial-clone[1].
+
 Hooks
 -----