{"thread":{"id":"10519","subject":"[PATCH 4/4 v2] Use built-in send-pack.","startedAt":"2007-10-30T02:03:42Z","lastAt":"2007-10-30T02:03:42Z","messageCount":1,"participants":["Daniel Barkalow"],"isPatch":true,"patchVersion":2,"patchTotal":4},"messages":[{"id":"57511","messageId":"Pine.LNX.4.64.0710292203150.7357@iabervon.org","threadId":"10519","inReplyTo":null,"subject":"[PATCH 4/4 v2] Use built-in send-pack.","fromName":"Daniel Barkalow","fromEmail":"barkalow@iabervon.org","sentAt":"2007-10-30T02:03:42Z","receivedAt":"2007-10-30T02:03:42Z","isPatch":true,"sender":{"key":"barkalow@iabervon.org","avatar":"https://avatars.githubusercontent.com/u/55364219?v=4"},"body":"Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>\n---\n transport.c |   51 ++++++++++-----------------------------------------\n 1 files changed, 10 insertions(+), 41 deletions(-)\n\ndiff --git a/transport.c b/transport.c\nindex 89b73dc..6b1f419 100644\n--- a/transport.c\n+++ b/transport.c\n@@ -6,6 +6,7 @@\n #endif\n #include \"pkt-line.h\"\n #include \"fetch-pack.h\"\n+#include \"send-pack.h\"\n #include \"walker.h\"\n #include \"bundle.h\"\n #include \"dir.h\"\n@@ -653,48 +654,16 @@ static int fetch_refs_via_pack(struct transport *transport,\n \n static int git_transport_push(struct transport *transport, int refspec_nr, const char **refspec, int flags) {\n \tstruct git_transport_data *data = transport->data;\n-\tconst char **argv;\n-\tchar *rem;\n-\tint argc;\n-\tint err;\n+\tstruct send_pack_args args;\n \n-\targv = xmalloc((refspec_nr + 11) * sizeof(char *));\n-\targv[0] = \"send-pack\";\n-\targc = 1;\n-\tif (flags & TRANSPORT_PUSH_ALL)\n-\t\targv[argc++] = \"--all\";\n-\tif (flags & TRANSPORT_PUSH_FORCE)\n-\t\targv[argc++] = \"--force\";\n-\tif (flags & TRANSPORT_PUSH_DRY_RUN)\n-\t\targv[argc++] = \"--dry-run\";\n-\tif (data->receivepack) {\n-\t\tchar *rp = xmalloc(strlen(data->receivepack) + 16);\n-\t\tsprintf(rp, \"--receive-pack=%s\", data->receivepack);\n-\t\targv[argc++] = rp;\n-\t}\n-\tif (data->thin)\n-\t\targv[argc++] = \"--thin\";\n-\trem = xmalloc(strlen(transport->remote->name) + 10);\n-\tsprintf(rem, \"--remote=%s\", transport->remote->name);\n-\targv[argc++] = rem;\n-\targv[argc++] = transport->url;\n-\twhile (refspec_nr--)\n-\t\targv[argc++] = *refspec++;\n-\targv[argc] = NULL;\n-\terr = run_command_v_opt(argv, RUN_GIT_CMD);\n-\tswitch (err) {\n-\tcase -ERR_RUN_COMMAND_FORK:\n-\t\terror(\"unable to fork for %s\", argv[0]);\n-\tcase -ERR_RUN_COMMAND_EXEC:\n-\t\terror(\"unable to exec %s\", argv[0]);\n-\t\tbreak;\n-\tcase -ERR_RUN_COMMAND_WAITPID:\n-\tcase -ERR_RUN_COMMAND_WAITPID_WRONG_PID:\n-\tcase -ERR_RUN_COMMAND_WAITPID_SIGNAL:\n-\tcase -ERR_RUN_COMMAND_WAITPID_NOEXIT:\n-\t\terror(\"%s died with strange error\", argv[0]);\n-\t}\n-\treturn !!err;\n+\targs.receivepack = data->receivepack;\n+\targs.send_all = !!(flags & TRANSPORT_PUSH_ALL);\n+\targs.force_update = !!(flags & TRANSPORT_PUSH_FORCE);\n+\targs.use_thin_pack = data->thin;\n+\targs.verbose = transport->verbose;\n+\targs.dry_run = !!(flags & TRANSPORT_PUSH_DRY_RUN);\n+\n+\treturn send_pack(&args, transport->url, transport->remote, refspec_nr, refspec);\n }\n \n static int disconnect_git(struct transport *transport)\n-- \n1.5.3.4.1206.g5f96\n"}]}