commit - 2ae2891d0e4f8e66706be6eb6394c199f18b7691
commit + 27b75514d9b1c8e9f188ef9c483760647a8c1b72
blob - eaabe5b6cd871e178683532ded10fc75eb8f864d
blob + f48598b57aa7474d4174c928c96d948834824f21
--- got/got.c
+++ got/got.c
if (got_path_cmp(branchname, refname,
strlen(branchname), strlen(refname)) == 0) {
status = "deleted";
+ a->sent_something = 1;
break;
}
}
}
- printf("\nServer has %s %s", status, refname);
+ if (a->printed_something)
+ putchar('\n');
+ printf("Server has %s %s", status, refname);
a->printed_something = 1;
return NULL;
}
blob - 52892c3decd6888c574c8cfa2ad91ff22a4df596
blob + 110f62e7d18931540ea150d0169e082cd0227e48
--- lib/send.c
+++ lib/send.c
struct got_object_id *my_id = NULL;
int i, nours = 0, ntheirs = 0;
size_t nalloc_ours = 0, nalloc_theirs = 0;
- int refs_to_send = 0;
+ int refs_to_send = 0, refs_to_delete = 0;
off_t bytes_sent = 0;
struct pack_progress_arg ppa;
uint8_t packsha1[SHA1_DIGEST_LENGTH];
TAILQ_FOREACH(pe, delete_branches, entry) {
const char *branchname = pe->path;
if (find_their_ref(&their_refs, branchname))
- refs_to_send++;
+ refs_to_delete++;
}
- if (refs_to_send == 0) {
+ if (refs_to_send == 0 && refs_to_delete == 0) {
got_privsep_send_stop(imsg_sendfds[0]);
goto done;
}
- memset(&ppa, 0, sizeof(ppa));
- ppa.progress_cb = progress_cb;
- ppa.progress_arg = progress_arg;
- err = got_pack_create(packsha1, packfile, their_ids, ntheirs,
- our_ids, nours, repo, 0, 1, pack_progress, &ppa,
- cancel_cb, cancel_arg);
- if (err)
- goto done;
-
- if (fflush(packfile) == -1) {
- err = got_error_from_errno("fflush");
- goto done;
- }
+ if (refs_to_send > 0) {
+ memset(&ppa, 0, sizeof(ppa));
+ ppa.progress_cb = progress_cb;
+ ppa.progress_arg = progress_arg;
+ err = got_pack_create(packsha1, packfile, their_ids, ntheirs,
+ our_ids, nours, repo, 0, 1, pack_progress, &ppa,
+ cancel_cb, cancel_arg);
+ if (err)
+ goto done;
- npackfd = dup(fileno(packfile));
- if (npackfd == -1) {
- err = got_error_from_errno("dup");
- goto done;
+ if (fflush(packfile) == -1) {
+ err = got_error_from_errno("fflush");
+ goto done;
+ }
+
+ npackfd = dup(fileno(packfile));
+ if (npackfd == -1) {
+ err = got_error_from_errno("dup");
+ goto done;
+ }
+ err = got_privsep_send_packfd(&sendibuf, npackfd);
+ if (err != NULL)
+ goto done;
+ npackfd = -1;
+ } else {
+ err = got_privsep_send_packfd(&sendibuf, -1);
+ if (err != NULL)
+ goto done;
}
- err = got_privsep_send_packfd(&sendibuf, npackfd);
- if (err != NULL)
- goto done;
- npackfd = -1;
while (!done) {
int success = 0;
blob - 70cdbda2df02489a97ea03b27cca01f0e4d3fb10
blob + 2a886f297fcabe6e08a1841e95f3913286f75c86
--- libexec/got-send-pack/got-send-pack.c
+++ libexec/got-send-pack/got-send-pack.c
if (err)
goto done;
- err = send_pack_file(fd, packfd, ibuf);
- if (err)
- goto done;
+ if (packfd != -1) {
+ err = send_pack_file(fd, packfd, ibuf);
+ if (err)
+ goto done;
+ }
err = readpkt(&n, fd, buf, sizeof(buf));
if (err)
blob - d8ab1acc4f17379f79f974897f8e33f9677871e2
blob + b7603c982431e0c17ae7aeb27a58df3481304608
--- regress/cmdline/send.sh
+++ regress/cmdline/send.sh
fi
got send -r $testroot/repo -d refs/heads/branch2 origin \
- > $testroot/stdout.raw 2>$testroot/stderr
+ > $testroot/stdout 2>$testroot/stderr
ret="$?"
if [ "$ret" != "0" ]; then
echo "got send command failed unexpectedly" >&2
test_done "$testroot" "$ret"
return 1
fi
- tr -d '\r' < $testroot/stdout.raw > $testroot/stdout
echo 'Connecting to "origin" 127.0.0.1' > $testroot/stdout.expected
- echo -n "packing 0 references; 0 objects; deltify: 0%; " \
- >> $testroot/stdout.expected
- echo "uploading pack: 32B 100%" >> $testroot/stdout.expected
echo "Server has deleted refs/heads/branch2" \
>> $testroot/stdout.expected