* [PATCH 1/3] clone: do not accept --depth on local clones @ 2010-08-20 1:51 Nguyễn Thái Ngọc Duy 2010-08-20 1:51 ` [PATCH 2/3] fetch-pack: use args.shallow to detect shallow clone instead of args.depth Nguyễn Thái Ngọc Duy ` (2 more replies) 0 siblings, 3 replies; 12+ messages in thread From: Nguyễn Thái Ngọc Duy @ 2010-08-20 1:51 UTC (permalink / raw) To: Jakub Narebski, mikachu, computerdruid, Junio C Hamano, git Cc: Nguyễn Thái Ngọc Duy clone_local() function disregards --depth. Make it more apparent. Also hint users that file:// works with --depth. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> --- builtin/clone.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/builtin/clone.c b/builtin/clone.c index efb1e6f..e787cf2 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -361,7 +361,7 @@ static void write_remote_refs(const struct ref *local_refs) int cmd_clone(int argc, const char **argv, const char *prefix) { - int is_bundle = 0; + int is_bundle = 0, is_local; struct stat buf; const char *repo_name, *repo, *work_tree, *git_dir; char *path, *dir; @@ -414,6 +414,10 @@ int cmd_clone(int argc, const char **argv, const char *prefix) repo = xstrdup(make_absolute_path(repo_name)); else repo = repo_name; + is_local = path && !is_bundle; + if (is_local && option_depth) + die("local clone with --depth does not make sense\n" + "hint: use file:// instead"); if (argc == 2) dir = xstrdup(argv[1]); @@ -514,7 +518,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix) strbuf_reset(&value); - if (path && !is_bundle) { + if (is_local) { refs = clone_local(path, git_dir); mapped_refs = wanted_peer_refs(refs, refspec); } else { -- 1.7.1.rc1.69.g24c2f7 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 2/3] fetch-pack: use args.shallow to detect shallow clone instead of args.depth 2010-08-20 1:51 [PATCH 1/3] clone: do not accept --depth on local clones Nguyễn Thái Ngọc Duy @ 2010-08-20 1:51 ` Nguyễn Thái Ngọc Duy 2010-08-20 1:51 ` [PATCH 3/3] {fetch,upload}-pack: allow --depth=0 for infinite depth Nguyễn Thái Ngọc Duy 2010-08-21 0:27 ` [PATCH 1/3] clone: do not accept --depth on local clones Junio C Hamano 2 siblings, 0 replies; 12+ messages in thread From: Nguyễn Thái Ngọc Duy @ 2010-08-20 1:51 UTC (permalink / raw) To: Jakub Narebski, mikachu, computerdruid, Junio C Hamano, git Cc: Nguyễn Thái Ngọc Duy Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> --- builtin/fetch-pack.c | 17 ++++++++++------- fetch-pack.h | 3 ++- transport.c | 9 +++++++-- transport.h | 1 + 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c index dbd8b7b..45d1824 100644 --- a/builtin/fetch-pack.c +++ b/builtin/fetch-pack.c @@ -167,7 +167,7 @@ enum ack_type { static void consume_shallow_list(int fd) { - if (args.stateless_rpc && args.depth > 0) { + if (args.stateless_rpc && args.shallow) { /* If we sent a depth we will get back "duplicate" * shallow and unshallow commands every time there * is a block of have lines exchanged. @@ -283,12 +283,12 @@ static int find_common(int fd[2], unsigned char *result_sha1, if (is_repository_shallow()) write_shallow_commits(&req_buf, 1); - if (args.depth > 0) + if (args.shallow) packet_buf_write(&req_buf, "deepen %d", args.depth); packet_buf_flush(&req_buf); state_len = req_buf.len; - if (args.depth > 0) { + if (args.shallow) { char line[1024]; unsigned char sha1[20]; @@ -476,7 +476,7 @@ static void filter_refs(struct ref **refs, int nr_match, char **match) check_ref_format(ref->name + 5)) ; /* trash */ else if (args.fetch_all && - (!args.depth || prefixcmp(ref->name, "refs/tags/") )) { + (!args.shallow || prefixcmp(ref->name, "refs/tags/") )) { *newtail = ref; ref->next = NULL; newtail = &ref->next; @@ -534,7 +534,7 @@ static int everything_local(struct ref **refs, int nr_match, char **match) } } - if (!args.depth) { + if (!args.shallow) { for_each_ref(mark_complete, NULL); if (cutoff) mark_recent_complete_commits(cutoff); @@ -845,6 +845,9 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix) } if (!prefixcmp(arg, "--depth=")) { args.depth = strtol(arg + 8, NULL, 0); + if (args.depth <= 0) + die("Invalid depth %d", args.depth); + args.shallow = 1; continue; } if (!strcmp("--no-progress", arg)) { @@ -928,7 +931,7 @@ struct ref *fetch_pack(struct fetch_pack_args *my_args, fetch_pack_setup(); if (&args != my_args) memcpy(&args, my_args, sizeof(args)); - if (args.depth > 0) { + if (args.shallow) { if (stat(git_path("shallow"), &st)) st.st_mtime = 0; } @@ -941,7 +944,7 @@ struct ref *fetch_pack(struct fetch_pack_args *my_args, } ref_cpy = do_fetch_pack(fd, ref, nr_heads, heads, pack_lockfile); - if (args.depth > 0) { + if (args.shallow) { struct cache_time mtime; struct strbuf sb = STRBUF_INIT; char *shallow = git_path("shallow"); diff --git a/fetch-pack.h b/fetch-pack.h index fbe85ac..abc1ab7 100644 --- a/fetch-pack.h +++ b/fetch-pack.h @@ -14,7 +14,8 @@ struct fetch_pack_args verbose:1, no_progress:1, include_tag:1, - stateless_rpc:1; + stateless_rpc:1, + shallow:1; }; struct ref *fetch_pack(struct fetch_pack_args *args, diff --git a/transport.c b/transport.c index 4dba6f8..cf7030b 100644 --- a/transport.c +++ b/transport.c @@ -470,10 +470,14 @@ static int set_git_option(struct git_transport_options *opts, opts->keep = !!value; return 0; } else if (!strcmp(name, TRANS_OPT_DEPTH)) { - if (!value) + if (!value) { opts->depth = 0; - else + opts->shallow = 0; + } + else { opts->depth = atoi(value); + opts->shallow = 1; + } return 0; } return 1; @@ -529,6 +533,7 @@ static int fetch_refs_via_pack(struct transport *transport, args.quiet = (transport->verbose < 0); args.no_progress = !transport->progress; args.depth = data->options.depth; + args.shallow = data->options.shallow; for (i = 0; i < nr_heads; i++) origh[i] = heads[i] = xstrdup(to_fetch[i]->name); diff --git a/transport.h b/transport.h index c59d973..e6ac4b1 100644 --- a/transport.h +++ b/transport.h @@ -8,6 +8,7 @@ struct git_transport_options { unsigned thin : 1; unsigned keep : 1; unsigned followtags : 1; + unsigned shallow : 1; int depth; const char *uploadpack; const char *receivepack; -- 1.7.1.rc1.69.g24c2f7 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 3/3] {fetch,upload}-pack: allow --depth=0 for infinite depth 2010-08-20 1:51 [PATCH 1/3] clone: do not accept --depth on local clones Nguyễn Thái Ngọc Duy 2010-08-20 1:51 ` [PATCH 2/3] fetch-pack: use args.shallow to detect shallow clone instead of args.depth Nguyễn Thái Ngọc Duy @ 2010-08-20 1:51 ` Nguyễn Thái Ngọc Duy 2010-08-20 22:11 ` Jakub Narebski 2010-08-21 0:27 ` Junio C Hamano 2010-08-21 0:27 ` [PATCH 1/3] clone: do not accept --depth on local clones Junio C Hamano 2 siblings, 2 replies; 12+ messages in thread From: Nguyễn Thái Ngọc Duy @ 2010-08-20 1:51 UTC (permalink / raw) To: Jakub Narebski, mikachu, computerdruid, Junio C Hamano, git Cc: Nguyễn Thái Ngọc Duy Users can do --depth=2147483648 for infinite depth now. It just looks ugly. So make "0" special (i.e. infinite depth) at plumbing/protocol level. To make it even more user friendly, "git fetch" accepts --depth=inf as an alternative to --depth=0. "git clone" also can. It just does not make much sense for doing "git clone --depth=inf" Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> --- Documentation/fetch-options.txt | 3 ++- Documentation/git-fetch-pack.txt | 1 + Documentation/technical/shallow.txt | 2 ++ builtin/fetch-pack.c | 2 +- shallow.c | 2 +- t/t5500-fetch-pack.sh | 8 ++++++++ transport.c | 2 +- upload-pack.c | 8 ++++---- 8 files changed, 20 insertions(+), 8 deletions(-) diff --git a/Documentation/fetch-options.txt b/Documentation/fetch-options.txt index 9333c42..a22d839 100644 --- a/Documentation/fetch-options.txt +++ b/Documentation/fetch-options.txt @@ -10,7 +10,8 @@ --depth=<depth>:: Deepen the history of a 'shallow' repository created by `git clone` with `--depth=<depth>` option (see linkgit:git-clone[1]) - by the specified number of commits. + by the specified number of commits. Specify "inf" for + infinite depth. ifndef::git-pull[] --dry-run:: diff --git a/Documentation/git-fetch-pack.txt b/Documentation/git-fetch-pack.txt index 4a8487c..75e4669 100644 --- a/Documentation/git-fetch-pack.txt +++ b/Documentation/git-fetch-pack.txt @@ -70,6 +70,7 @@ OPTIONS --depth=<n>:: Limit fetching to ancestor-chains not longer than n. + Specify 0 for infinite depth. --no-progress:: Do not show the progress. diff --git a/Documentation/technical/shallow.txt b/Documentation/technical/shallow.txt index 559263a..405170f 100644 --- a/Documentation/technical/shallow.txt +++ b/Documentation/technical/shallow.txt @@ -47,3 +47,5 @@ It also writes an appropriate $GIT_DIR/shallow. You can deepen a shallow repository with "git-fetch --depth 20 repo branch", which will fetch branch from repo, but stop at depth 20, updating $GIT_DIR/shallow. + +"--depth 0" (or "--depth inf" for git-fetch) means infinite depth. diff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c index 45d1824..7d7af2e 100644 --- a/builtin/fetch-pack.c +++ b/builtin/fetch-pack.c @@ -845,7 +845,7 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix) } if (!prefixcmp(arg, "--depth=")) { args.depth = strtol(arg + 8, NULL, 0); - if (args.depth <= 0) + if (args.depth < 0) die("Invalid depth %d", args.depth); args.shallow = 1; continue; diff --git a/shallow.c b/shallow.c index 4d90eda..eab97c6 100644 --- a/shallow.c +++ b/shallow.c @@ -85,7 +85,7 @@ struct commit_list *get_shallow_commits(struct object_array *heads, int depth, continue; *pointer = cur_depth; } - if (cur_depth < depth) { + if (!depth || cur_depth < depth) { if (p->next) add_object_array(&p->item->object, NULL, &stack); diff --git a/t/t5500-fetch-pack.sh b/t/t5500-fetch-pack.sh index 18376d6..47fd87c 100755 --- a/t/t5500-fetch-pack.sh +++ b/t/t5500-fetch-pack.sh @@ -248,4 +248,12 @@ test_expect_success 'clone shallow object count' ' grep "^count: 52" count.shallow ' +test_expect_success 'infinite deepening (full repo)' ' + ( + cd shallow && + git fetch --depth=inf && + ! test -f .git/shallow + ) +' + test_done diff --git a/transport.c b/transport.c index cf7030b..9303aef 100644 --- a/transport.c +++ b/transport.c @@ -475,7 +475,7 @@ static int set_git_option(struct git_transport_options *opts, opts->shallow = 0; } else { - opts->depth = atoi(value); + opts->depth = !strcmp(value, "inf") ? 0 : atoi(value); opts->shallow = 1; } return 0; diff --git a/upload-pack.c b/upload-pack.c index fc79dde..7b004b9 100644 --- a/upload-pack.c +++ b/upload-pack.c @@ -484,7 +484,7 @@ static void receive_needs(void) { struct object_array shallows = {0, 0, NULL}; static char line[1000]; - int len, depth = 0; + int len, depth = -1; shallow_nr = 0; if (debug_fd) @@ -514,7 +514,7 @@ static void receive_needs(void) if (!prefixcmp(line, "deepen ")) { char *end; depth = strtol(line + 7, &end, 0); - if (end == line + 7 || depth <= 0) + if (end == line + 7 || depth < 0) die("Invalid deepen: %s", line); continue; } @@ -562,9 +562,9 @@ static void receive_needs(void) if (!use_sideband && daemon_mode) no_progress = 1; - if (depth == 0 && shallows.nr == 0) + if (depth == -1 && shallows.nr == 0) return; - if (depth > 0) { + if (depth >= 0) { struct commit_list *result, *backup; int i; backup = result = get_shallow_commits(&want_obj, depth, -- 1.7.1.rc1.69.g24c2f7 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 3/3] {fetch,upload}-pack: allow --depth=0 for infinite depth 2010-08-20 1:51 ` [PATCH 3/3] {fetch,upload}-pack: allow --depth=0 for infinite depth Nguyễn Thái Ngọc Duy @ 2010-08-20 22:11 ` Jakub Narebski 2010-08-22 22:51 ` Nguyen Thai Ngoc Duy 2010-08-21 0:27 ` Junio C Hamano 1 sibling, 1 reply; 12+ messages in thread From: Jakub Narebski @ 2010-08-20 22:11 UTC (permalink / raw) To: Nguyễn Thái Ngọc Duy Cc: mikachu, computerdruid, Junio C Hamano, git On Fri, 20 Aug 2010, Nguyễn Thái Ngọc Duy wrote: > diff --git a/Documentation/fetch-options.txt b/Documentation/fetch-options.txt > index 9333c42..a22d839 100644 > --- a/Documentation/fetch-options.txt > +++ b/Documentation/fetch-options.txt > @@ -10,7 +10,8 @@ > --depth=<depth>:: > Deepen the history of a 'shallow' repository created by > `git clone` with `--depth=<depth>` option (see linkgit:git-clone[1]) > - by the specified number of commits. > + by the specified number of commits. Specify "inf" for > + infinite depth. It should probably be 'Specify 0 or "inf" for infinite (unlimited) depth', which means making repository non-shallow. > ifndef::git-pull[] > --dry-run:: > diff --git a/Documentation/git-fetch-pack.txt b/Documentation/git-fetch-pack.txt > index 4a8487c..75e4669 100644 > --- a/Documentation/git-fetch-pack.txt > +++ b/Documentation/git-fetch-pack.txt > @@ -70,6 +70,7 @@ OPTIONS > > --depth=<n>:: > Limit fetching to ancestor-chains not longer than n. > + Specify 0 for infinite depth. Again '0 or "inf"'. > --no-progress:: > Do not show the progress. > diff --git a/Documentation/technical/shallow.txt b/Documentation/technical/shallow.txt > index 559263a..405170f 100644 > --- a/Documentation/technical/shallow.txt > +++ b/Documentation/technical/shallow.txt > @@ -47,3 +47,5 @@ It also writes an appropriate $GIT_DIR/shallow. > You can deepen a shallow repository with "git-fetch --depth 20 > repo branch", which will fetch branch from repo, but stop at depth > 20, updating $GIT_DIR/shallow. > + > +"--depth 0" (or "--depth inf" for git-fetch) means infinite depth. ??? > diff --git a/t/t5500-fetch-pack.sh b/t/t5500-fetch-pack.sh > index 18376d6..47fd87c 100755 > --- a/t/t5500-fetch-pack.sh > +++ b/t/t5500-fetch-pack.sh > @@ -248,4 +248,12 @@ test_expect_success 'clone shallow object count' ' > grep "^count: 52" count.shallow > ' > > +test_expect_success 'infinite deepening (full repo)' ' > + ( > + cd shallow && > + git fetch --depth=inf && > + ! test -f .git/shallow > + ) > +' > + > test_done It's very good that you included test of making repository non-shallow. -- Jakub Narebski Poland ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 3/3] {fetch,upload}-pack: allow --depth=0 for infinite depth 2010-08-20 22:11 ` Jakub Narebski @ 2010-08-22 22:51 ` Nguyen Thai Ngoc Duy 0 siblings, 0 replies; 12+ messages in thread From: Nguyen Thai Ngoc Duy @ 2010-08-22 22:51 UTC (permalink / raw) To: Jakub Narebski; +Cc: mikachu, computerdruid, Junio C Hamano, git On Sat, Aug 21, 2010 at 8:11 AM, Jakub Narebski <jnareb@gmail.com> wrote: > On Fri, 20 Aug 2010, Nguyễn Thái Ngọc Duy wrote: > >> diff --git a/Documentation/fetch-options.txt >> b/Documentation/fetch-options.txt >> index 9333c42..a22d839 100644 >> --- a/Documentation/fetch-options.txt >> +++ b/Documentation/fetch-options.txt >> @@ -10,7 +10,8 @@ >> --depth=<depth>:: >> Deepen the history of a 'shallow' repository created by >> `git clone` with `--depth=<depth>` option (see linkgit:git-clone[1]) >> - by the specified number of commits. >> + by the specified number of commits. Specify "inf" for >> + infinite depth. > > It should probably be 'Specify 0 or "inf" for infinite (unlimited) depth', > which means making repository non-shallow. It would say "... which _may_ make the repository non-shallow". Or I have to redo the patch and make sure tags are fetched automatically too. Hmm.. >> ifndef::git-pull[] >> --dry-run:: >> diff --git a/Documentation/git-fetch-pack.txt >> b/Documentation/git-fetch-pack.txt >> index 4a8487c..75e4669 100644 >> --- a/Documentation/git-fetch-pack.txt >> +++ b/Documentation/git-fetch-pack.txt >> @@ -70,6 +70,7 @@ OPTIONS >> >> --depth=<n>:: >> Limit fetching to ancestor-chains not longer than n. >> + Specify 0 for infinite depth. > > Again '0 or "inf"'. OK. "inf" was intented for user pleasure, which was the reason I did not implement it in git-fetch-pack (a plumbing). But Jonathan was brave enough to make OPT_INT_INF, I'll rebase this series on that patch. -- Duy ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 3/3] {fetch,upload}-pack: allow --depth=0 for infinite depth 2010-08-20 1:51 ` [PATCH 3/3] {fetch,upload}-pack: allow --depth=0 for infinite depth Nguyễn Thái Ngọc Duy 2010-08-20 22:11 ` Jakub Narebski @ 2010-08-21 0:27 ` Junio C Hamano 1 sibling, 0 replies; 12+ messages in thread From: Junio C Hamano @ 2010-08-21 0:27 UTC (permalink / raw) To: Nguyễn Thái Ngọc Duy Cc: Jakub Narebski, mikachu, computerdruid, Junio C Hamano, git Nguyễn Thái Ngọc Duy <pclouds@gmail.com> writes: > diff --git a/Documentation/fetch-options.txt b/Documentation/fetch-options.txt > index 9333c42..a22d839 100644 > --- a/Documentation/fetch-options.txt > +++ b/Documentation/fetch-options.txt > @@ -10,7 +10,8 @@ > --depth=<depth>:: > Deepen the history of a 'shallow' repository created by > `git clone` with `--depth=<depth>` option (see linkgit:git-clone[1]) > - by the specified number of commits. > + by the specified number of commits. Specify "inf" for > + infinite depth. > > ifndef::git-pull[] > --dry-run:: > diff --git a/Documentation/git-fetch-pack.txt b/Documentation/git-fetch-pack.txt > index 4a8487c..75e4669 100644 > --- a/Documentation/git-fetch-pack.txt > +++ b/Documentation/git-fetch-pack.txt > @@ -70,6 +70,7 @@ OPTIONS > > --depth=<n>:: > Limit fetching to ancestor-chains not longer than n. > + Specify 0 for infinite depth. > Should we force users to remember which one is which? > diff --git a/transport.c b/transport.c > index cf7030b..9303aef 100644 > --- a/transport.c > +++ b/transport.c > @@ -475,7 +475,7 @@ static int set_git_option(struct git_transport_options *opts, > opts->shallow = 0; > } > else { > - opts->depth = atoi(value); > + opts->depth = !strcmp(value, "inf") ? 0 : atoi(value); Doesn't atoi("inf") give you 0 anyway ;-)? ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/3] clone: do not accept --depth on local clones 2010-08-20 1:51 [PATCH 1/3] clone: do not accept --depth on local clones Nguyễn Thái Ngọc Duy 2010-08-20 1:51 ` [PATCH 2/3] fetch-pack: use args.shallow to detect shallow clone instead of args.depth Nguyễn Thái Ngọc Duy 2010-08-20 1:51 ` [PATCH 3/3] {fetch,upload}-pack: allow --depth=0 for infinite depth Nguyễn Thái Ngọc Duy @ 2010-08-21 0:27 ` Junio C Hamano 2010-08-22 22:43 ` Nguyen Thai Ngoc Duy 2 siblings, 1 reply; 12+ messages in thread From: Junio C Hamano @ 2010-08-21 0:27 UTC (permalink / raw) To: Nguyễn Thái Ngọc Duy Cc: Jakub Narebski, mikachu, computerdruid, git Nguyễn Thái Ngọc Duy <pclouds@gmail.com> writes: > clone_local() function disregards --depth. Make it more apparent. > Also hint users that file:// works with --depth. Hmm---why? The "--depth" option is an ugly hack that tries to conserve network bandwidth and disk usage, which is not necessary if you are doing a local hardlinking clone. Without this patch we allowed people to clone with the option without a downside (allowing it didn't result in broken repository, for example), but with it, what has long been allowed suddenly stops working. Is the breakage justifiable? ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/3] clone: do not accept --depth on local clones 2010-08-21 0:27 ` [PATCH 1/3] clone: do not accept --depth on local clones Junio C Hamano @ 2010-08-22 22:43 ` Nguyen Thai Ngoc Duy 0 siblings, 0 replies; 12+ messages in thread From: Nguyen Thai Ngoc Duy @ 2010-08-22 22:43 UTC (permalink / raw) To: Junio C Hamano; +Cc: Jakub Narebski, mikachu, computerdruid, git On Sat, Aug 21, 2010 at 10:27 AM, Junio C Hamano <gitster@pobox.com> wrote: > Nguyễn Thái Ngọc Duy <pclouds@gmail.com> writes: > >> clone_local() function disregards --depth. Make it more apparent. >> Also hint users that file:// works with --depth. > > Hmm---why? > > The "--depth" option is an ugly hack that tries to conserve network > bandwidth and disk usage, which is not necessary if you are doing a local > hardlinking clone. Without this patch we allowed people to clone with the > option without a downside (allowing it didn't result in broken repository, > for example), but with it, what has long been allowed suddenly stops > working. Is the breakage justifiable? I also expect it to cut down history too. Maybe it's just me, when I say --depth=3, 'git log' should give me more or less 3 commits regardless what kind of transport I use to clone. Or we could make it a warning, "--depth is ignored in local clone"? -- Duy ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: fully deepening a shallow clone
@ 2010-08-18 12:54 Daniel Johnson
2010-08-19 10:40 ` [PATCH 1/3] clone: do not accept --depth on local clones Nguyễn Thái Ngọc Duy
0 siblings, 1 reply; 12+ messages in thread
From: Daniel Johnson @ 2010-08-18 12:54 UTC (permalink / raw)
To: Nguyen Thai Ngoc Duy; +Cc: Joey Hess, git
[-- Attachment #1: Type: Text/Plain, Size: 1018 bytes --]
On Wednesday 18 August 2010 05:36:08 Nguyen Thai Ngoc Duy wrote:
> On Tue, Aug 17, 2010 at 10:49 AM, Joey Hess <joey@kitenet.net> wrote:
> > git-pull(1):
> > --depth=<depth>
> > Deepen the history of a shallow repository created by git clone
> > with --depth=<depth> option (see git-clone(1)) by the specified
> > number of commits.
> >
> > Well, what if I want to deepen an existing shallow clone to include
> > the full history? In practice, something like --depth=100000000 is going
> > to work, but in theory, that will eventually fail some day when there are
> > enough commits. :)
>
> I have always thought --depth=0 will make full repo again. Have you tried
> that?
I tried it myself. --depth=0 is the same as leaving the depth argument off
entirely. If you are already working in a shallow clone fetch or pull without
arguments won't deepen it at all, only pull in new commits.
I haven't been able to figure out a good way to solve this yet though.
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 1/3] clone: do not accept --depth on local clones 2010-08-18 12:54 fully deepening a shallow clone Daniel Johnson @ 2010-08-19 10:40 ` Nguyễn Thái Ngọc Duy 2010-08-19 14:31 ` Daniel Johnson 2010-08-19 20:49 ` Mikael Magnusson 0 siblings, 2 replies; 12+ messages in thread From: Nguyễn Thái Ngọc Duy @ 2010-08-19 10:40 UTC (permalink / raw) To: git, computerdruid, joey; +Cc: Nguyễn Thái Ngọc Duy Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> --- builtin/clone.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/builtin/clone.c b/builtin/clone.c index efb1e6f..215c432 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -361,7 +361,7 @@ static void write_remote_refs(const struct ref *local_refs) int cmd_clone(int argc, const char **argv, const char *prefix) { - int is_bundle = 0; + int is_bundle = 0, is_local; struct stat buf; const char *repo_name, *repo, *work_tree, *git_dir; char *path, *dir; @@ -414,6 +414,9 @@ int cmd_clone(int argc, const char **argv, const char *prefix) repo = xstrdup(make_absolute_path(repo_name)); else repo = repo_name; + is_local = path && !is_bundle; + if (is_local && option_depth) + die("local clone with --depth does not make sense"); if (argc == 2) dir = xstrdup(argv[1]); @@ -514,7 +517,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix) strbuf_reset(&value); - if (path && !is_bundle) { + if (is_local) { refs = clone_local(path, git_dir); mapped_refs = wanted_peer_refs(refs, refspec); } else { -- 1.7.1.rc1.69.g24c2f7 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 1/3] clone: do not accept --depth on local clones 2010-08-19 10:40 ` [PATCH 1/3] clone: do not accept --depth on local clones Nguyễn Thái Ngọc Duy @ 2010-08-19 14:31 ` Daniel Johnson 2010-08-19 22:15 ` Nguyen Thai Ngoc Duy 2010-08-19 20:49 ` Mikael Magnusson 1 sibling, 1 reply; 12+ messages in thread From: Daniel Johnson @ 2010-08-19 14:31 UTC (permalink / raw) To: Nguyễn Thái Ngọc Duy; +Cc: git, joey [-- Attachment #1: Type: Text/Plain, Size: 436 bytes --] On Thursday 19 August 2010 06:40:35 you wrote: > Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> > --- > builtin/clone.c | 7 +++++-- > 1 files changed, 5 insertions(+), 2 deletions(-) Can you make it a little clearer what the rationale is for this change? Why wouldn't you be able to do a limited-depth local clone? Seems like this would break some tests, and even if not, would prevent the writing of them. [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/3] clone: do not accept --depth on local clones 2010-08-19 14:31 ` Daniel Johnson @ 2010-08-19 22:15 ` Nguyen Thai Ngoc Duy 0 siblings, 0 replies; 12+ messages in thread From: Nguyen Thai Ngoc Duy @ 2010-08-19 22:15 UTC (permalink / raw) To: Daniel Johnson, mikachu; +Cc: git, joey On Fri, Aug 20, 2010 at 12:31 AM, Daniel Johnson <computerdruid@gmail.com> wrote: > On Thursday 19 August 2010 06:40:35 you wrote: >> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> >> --- >> builtin/clone.c | 7 +++++-- >> 1 files changed, 5 insertions(+), 2 deletions(-) > Can you make it a little clearer what the rationale is for this change? Why > wouldn't you be able to do a limited-depth local clone? Seems like this > would > break some tests, and even if not, would prevent the writing of them. It's been like this ever since and it puzzled me, "why 'git clone --depth=2 ~/foo' did not work? What did I do?" Will do as Mikael suggested. -- Duy ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/3] clone: do not accept --depth on local clones 2010-08-19 10:40 ` [PATCH 1/3] clone: do not accept --depth on local clones Nguyễn Thái Ngọc Duy 2010-08-19 14:31 ` Daniel Johnson @ 2010-08-19 20:49 ` Mikael Magnusson 1 sibling, 0 replies; 12+ messages in thread From: Mikael Magnusson @ 2010-08-19 20:49 UTC (permalink / raw) To: Nguyễn Thái Ngọc Duy; +Cc: git, computerdruid, joey 2010/8/19 Nguyễn Thái Ngọc Duy <pclouds@gmail.com>: > > Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> > --- > builtin/clone.c | 7 +++++-- > 1 files changed, 5 insertions(+), 2 deletions(-) > > diff --git a/builtin/clone.c b/builtin/clone.c > index efb1e6f..215c432 100644 > --- a/builtin/clone.c > +++ b/builtin/clone.c > @@ -414,6 +414,9 @@ int cmd_clone(int argc, const char **argv, const char *prefix) > repo = xstrdup(make_absolute_path(repo_name)); > else > repo = repo_name; > + is_local = path && !is_bundle; > + if (is_local && option_depth) > + die("local clone with --depth does not make sense"); > > if (argc == 2) > dir = xstrdup(argv[1]); Wouldn't it be more helpful to also say "Use the file:///blabla syntax instead" or just automatically fall back to that protocol when --depth is used? -- Mikael Magnusson ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2010-08-22 22:51 UTC | newest] Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2010-08-20 1:51 [PATCH 1/3] clone: do not accept --depth on local clones Nguyễn Thái Ngọc Duy 2010-08-20 1:51 ` [PATCH 2/3] fetch-pack: use args.shallow to detect shallow clone instead of args.depth Nguyễn Thái Ngọc Duy 2010-08-20 1:51 ` [PATCH 3/3] {fetch,upload}-pack: allow --depth=0 for infinite depth Nguyễn Thái Ngọc Duy 2010-08-20 22:11 ` Jakub Narebski 2010-08-22 22:51 ` Nguyen Thai Ngoc Duy 2010-08-21 0:27 ` Junio C Hamano 2010-08-21 0:27 ` [PATCH 1/3] clone: do not accept --depth on local clones Junio C Hamano 2010-08-22 22:43 ` Nguyen Thai Ngoc Duy -- strict thread matches above, loose matches on Subject: below -- 2010-08-18 12:54 fully deepening a shallow clone Daniel Johnson 2010-08-19 10:40 ` [PATCH 1/3] clone: do not accept --depth on local clones Nguyễn Thái Ngọc Duy 2010-08-19 14:31 ` Daniel Johnson 2010-08-19 22:15 ` Nguyen Thai Ngoc Duy 2010-08-19 20:49 ` Mikael Magnusson
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.