From: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
To: Junio C Hamano <gitster@pobox.com>, git@vger.kernel.org
Cc: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Subject: [PATCH v2 2/3] fetch-pack: use args.shallow to detect shallow clone instead of args.depth
Date: Mon, 23 Aug 2010 22:08:23 +1000 [thread overview]
Message-ID: <1282565304-3122-2-git-send-email-pclouds@gmail.com> (raw)
In-Reply-To: <1282565304-3122-1-git-send-email-pclouds@gmail.com>
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
next prev parent reply other threads:[~2010-08-23 22:36 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-23 12:08 [PATCH v2 1/3] clone: warn users --depth is ignored in local clones Nguyễn Thái Ngọc Duy
2010-08-23 12:08 ` Nguyễn Thái Ngọc Duy [this message]
2010-08-24 16:31 ` [PATCH v2 2/3] fetch-pack: use args.shallow to detect shallow clone instead of args.depth Junio C Hamano
2010-08-24 22:14 ` Nguyen Thai Ngoc Duy
2010-08-23 12:08 ` [PATCH v2 3/3] {fetch,upload}-pack: allow --depth=0 for infinite depth Nguyễn Thái Ngọc Duy
2010-08-24 13:53 ` Jeff King
2010-08-24 17:39 ` Junio C Hamano
2010-08-24 17:46 ` Jeff King
2010-08-24 22:12 ` Nguyen Thai Ngoc Duy
2010-08-24 5:28 ` [PATCH v2 1/3] clone: warn users --depth is ignored in local clones Jonathan Nieder
2010-08-24 5:52 ` Nguyen Thai Ngoc Duy
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=1282565304-3122-2-git-send-email-pclouds@gmail.com \
--to=pclouds@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).