* [PATCH] Do not call fetch() when we have it.
@ 2005-05-02 0:10 Junio C Hamano
0 siblings, 0 replies; only message in thread
From: Junio C Hamano @ 2005-05-02 0:10 UTC (permalink / raw)
To: Linus Torvalds; +Cc: git
Currently pull() calls fetch() without checking whether we have
the wanted object but all of the existing fetch()
implementations perform this check and return success
themselves. This patch moves the check to the caller.
I will be sending a trivial git-local-pull which depends on
this in the next message.
Signed-off-by: Junio C Hamano <junkio@cox.net>
---
http-pull.c | 4 ----
pull.c | 17 ++++++++++++-----
rpull.c | 2 --
3 files changed, 12 insertions(+), 11 deletions(-)
# - date handling: handle "AM"/"PM" on time
# + working-tree
--- k/http-pull.c
+++ l/http-pull.c
@@ -53,10 +53,6 @@ int fetch(unsigned char *sha1)
char *url;
char *posn;
- if (has_sha1_file(sha1)) {
- return 0;
- }
-
local = open(filename, O_WRONLY | O_CREAT | O_EXCL, 0666);
if (local < 0)
--- k/pull.c
+++ l/pull.c
@@ -8,6 +8,13 @@ int get_tree = 0;
int get_history = 0;
int get_all = 0;
+static int make_sure_we_have_it(unsigned char *sha1)
+{
+ if (has_sha1_file(sha1))
+ return 0;
+ return fetch(sha1);
+}
+
static int process_tree(unsigned char *sha1)
{
struct tree *tree = lookup_tree(sha1);
@@ -17,7 +24,7 @@ static int process_tree(unsigned char *s
return -1;
for (entries = tree->entries; entries; entries = entries->next) {
- if (fetch(entries->item.tree->object.sha1))
+ if (make_sure_we_have_it(entries->item.tree->object.sha1))
return -1;
if (entries->directory) {
if (process_tree(entries->item.tree->object.sha1))
@@ -31,14 +38,14 @@ static int process_commit(unsigned char
{
struct commit *obj = lookup_commit(sha1);
- if (fetch(sha1))
+ if (make_sure_we_have_it(sha1))
return -1;
if (parse_commit(obj))
return -1;
if (get_tree) {
- if (fetch(obj->tree->object.sha1))
+ if (make_sure_we_have_it(obj->tree->object.sha1))
return -1;
if (process_tree(obj->tree->object.sha1))
return -1;
@@ -50,7 +57,7 @@ static int process_commit(unsigned char
for (; parents; parents = parents->next) {
if (has_sha1_file(parents->item->object.sha1))
continue;
- if (fetch(parents->item->object.sha1)) {
+ if (make_sure_we_have_it(parents->item->object.sha1)) {
/* The server might not have it, and
* we don't mind.
*/
@@ -70,7 +77,7 @@ int pull(char *target)
retval = get_sha1_hex(target, sha1);
if (retval)
return retval;
- retval = fetch(sha1);
+ retval = make_sure_we_have_it(sha1);
if (retval)
return retval;
return process_commit(sha1);
--- k/rpull.c
+++ l/rpull.c
@@ -14,8 +14,6 @@ static int fd_out;
int fetch(unsigned char *sha1)
{
- if (has_sha1_file(sha1))
- return 0;
write(fd_out, sha1, 20);
return write_sha1_from_fd(sha1, fd_in);
}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2005-05-02 0:05 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-05-02 0:10 [PATCH] Do not call fetch() when we have it Junio C Hamano
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox