mirror of
https://github.com/git/git
synced 2024-08-27 19:49:21 +00:00
![Junio C Hamano](/assets/img/avatar_default.png)
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> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
54 lines
926 B
C
54 lines
926 B
C
#include <fcntl.h>
|
|
#include <unistd.h>
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
#include "cache.h"
|
|
#include "commit.h"
|
|
#include <errno.h>
|
|
#include <stdio.h>
|
|
#include "rsh.h"
|
|
#include "pull.h"
|
|
|
|
static int fd_in;
|
|
static int fd_out;
|
|
|
|
int fetch(unsigned char *sha1)
|
|
{
|
|
write(fd_out, sha1, 20);
|
|
return write_sha1_from_fd(sha1, fd_in);
|
|
}
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
char *commit_id;
|
|
char *url;
|
|
int arg = 1;
|
|
|
|
while (arg < argc && argv[arg][0] == '-') {
|
|
if (argv[arg][1] == 't') {
|
|
get_tree = 1;
|
|
} else if (argv[arg][1] == 'c') {
|
|
get_history = 1;
|
|
} else if (argv[arg][1] == 'a') {
|
|
get_all = 1;
|
|
get_tree = 1;
|
|
get_history = 1;
|
|
}
|
|
arg++;
|
|
}
|
|
if (argc < arg + 2) {
|
|
usage("rpull [-c] [-t] [-a] commit-id url");
|
|
return 1;
|
|
}
|
|
commit_id = argv[arg];
|
|
url = argv[arg + 1];
|
|
|
|
if (setup_connection(&fd_in, &fd_out, "rpush", url, arg, argv + 1))
|
|
return 1;
|
|
|
|
if (pull(commit_id))
|
|
return 1;
|
|
|
|
return 0;
|
|
}
|