projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
git-clone: Support changing the origin branch with -o
[git.git]
/
send-pack.c
diff --git
a/send-pack.c
b/send-pack.c
index
3eeb18f
..
5bc2f01
100644
(file)
--- a/
send-pack.c
+++ b/
send-pack.c
@@
-8,6
+8,7
@@
static const char send_pack_usage[] =
"git-send-pack [--all] [--exec=git-receive-pack] <remote> [<head>...]\n"
" --all and explicit <head> specification are mutually exclusive.";
static const char *exec = "git-receive-pack";
"git-send-pack [--all] [--exec=git-receive-pack] <remote> [<head>...]\n"
" --all and explicit <head> specification are mutually exclusive.";
static const char *exec = "git-receive-pack";
+static int verbose = 0;
static int send_all = 0;
static int force_update = 0;
static int send_all = 0;
static int force_update = 0;
@@
-179,6
+180,7
@@
static int send_pack(int in, int out, int nr_refspec, char **refspec)
{
struct ref *ref;
int new_refs;
{
struct ref *ref;
int new_refs;
+ int ret = 0;
/* No funny business with the matcher */
remote_tail = get_remote_heads(in, &remote_refs, 0, NULL, 1);
/* No funny business with the matcher */
remote_tail = get_remote_heads(in, &remote_refs, 0, NULL, 1);
@@
-190,6
+192,12
@@
static int send_pack(int in, int out, int nr_refspec, char **refspec)
if (match_refs(local_refs, remote_refs, &remote_tail,
nr_refspec, refspec, send_all))
return -1;
if (match_refs(local_refs, remote_refs, &remote_tail,
nr_refspec, refspec, send_all))
return -1;
+
+ if (!remote_refs) {
+ fprintf(stderr, "No refs in common and none specified; doing nothing.\n");
+ return 0;
+ }
+
/*
* Finally, tell the other end!
*/
/*
* Finally, tell the other end!
*/
@@
-199,7
+207,8
@@
static int send_pack(int in, int out, int nr_refspec, char **refspec)
if (!ref->peer_ref)
continue;
if (!memcmp(ref->old_sha1, ref->peer_ref->new_sha1, 20)) {
if (!ref->peer_ref)
continue;
if (!memcmp(ref->old_sha1, ref->peer_ref->new_sha1, 20)) {
- fprintf(stderr, "'%s': up-to-date\n", ref->name);
+ if (verbose)
+ fprintf(stderr, "'%s': up-to-date\n", ref->name);
continue;
}
continue;
}
@@
-226,6
+235,7
@@
static int send_pack(int in, int out, int nr_refspec, char **refspec)
error("remote '%s' object %s does not "
"exist on local",
ref->name, sha1_to_hex(ref->old_sha1));
error("remote '%s' object %s does not "
"exist on local",
ref->name, sha1_to_hex(ref->old_sha1));
+ ret = -2;
continue;
}
continue;
}
@@
-239,12
+249,14
@@
static int send_pack(int in, int out, int nr_refspec, char **refspec)
error("remote ref '%s' is not a strict "
"subset of local ref '%s'.", ref->name,
ref->peer_ref->name);
error("remote ref '%s' is not a strict "
"subset of local ref '%s'.", ref->name,
ref->peer_ref->name);
+ ret = -2;
continue;
}
}
memcpy(ref->new_sha1, ref->peer_ref->new_sha1, 20);
if (is_zero_sha1(ref->new_sha1)) {
error("cannot happen anymore");
continue;
}
}
memcpy(ref->new_sha1, ref->peer_ref->new_sha1, 20);
if (is_zero_sha1(ref->new_sha1)) {
error("cannot happen anymore");
+ ret = -3;
continue;
}
new_refs++;
continue;
}
new_refs++;
@@
-260,8
+272,10
@@
static int send_pack(int in, int out, int nr_refspec, char **refspec)
packet_flush(out);
if (new_refs)
pack_objects(out, remote_refs);
packet_flush(out);
if (new_refs)
pack_objects(out, remote_refs);
+ else if (ret == 0)
+ fprintf(stderr, "Everything up-to-date\n");
close(out);
close(out);
- return
0
;
+ return
ret
;
}
}
@@
-273,6
+287,7
@@
int main(int argc, char **argv)
int fd[2], ret;
pid_t pid;
int fd[2], ret;
pid_t pid;
+ setup_git_directory();
argv++;
for (i = 1; i < argc; i++, argv++) {
char *arg = *argv;
argv++;
for (i = 1; i < argc; i++, argv++) {
char *arg = *argv;
@@
-290,6
+305,10
@@
int main(int argc, char **argv)
force_update = 1;
continue;
}
force_update = 1;
continue;
}
+ if (!strcmp(arg, "--verbose")) {
+ verbose = 1;
+ continue;
+ }
usage(send_pack_usage);
}
if (!dest) {
usage(send_pack_usage);
}
if (!dest) {