Support 'push --dry-run' for rsync transport
If the end-user requested a dry-run push we should pass that flag though to rsync so that the rsync command can show what it would do (or not do) if push was to be executed without the --dry-run flag. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
parent
18184f79db
commit
ee020f3598
29
transport.c
29
transport.c
@ -281,7 +281,7 @@ static int rsync_transport_push(struct transport *transport,
|
||||
struct strbuf buf = STRBUF_INIT, temp_dir = STRBUF_INIT;
|
||||
int result = 0, i;
|
||||
struct child_process rsync;
|
||||
const char *args[8];
|
||||
const char *args[10];
|
||||
|
||||
/* first push the objects */
|
||||
|
||||
@ -291,14 +291,19 @@ static int rsync_transport_push(struct transport *transport,
|
||||
memset(&rsync, 0, sizeof(rsync));
|
||||
rsync.argv = args;
|
||||
rsync.stdout_to_stderr = 1;
|
||||
args[0] = "rsync";
|
||||
args[1] = (transport->verbose > 0) ? "-av" : "-a";
|
||||
args[2] = "--ignore-existing";
|
||||
args[3] = "--exclude";
|
||||
args[4] = "info";
|
||||
args[5] = get_object_directory();;
|
||||
args[6] = buf.buf;
|
||||
args[7] = NULL;
|
||||
i = 0;
|
||||
args[i++] = "rsync";
|
||||
args[i++] = "-a";
|
||||
if (flags & TRANSPORT_PUSH_DRY_RUN)
|
||||
args[i++] = "--dry-run";
|
||||
if (transport->verbose > 0)
|
||||
args[i++] = "-v";
|
||||
args[i++] = "--ignore-existing";
|
||||
args[i++] = "--exclude";
|
||||
args[i++] = "info";
|
||||
args[i++] = get_object_directory();
|
||||
args[i++] = buf.buf;
|
||||
args[i++] = NULL;
|
||||
|
||||
if (run_command(&rsync))
|
||||
return error("Could not push objects to %s", transport->url);
|
||||
@ -316,7 +321,11 @@ static int rsync_transport_push(struct transport *transport,
|
||||
} else if (write_refs_to_temp_dir(&temp_dir, refspec_nr, refspec))
|
||||
return -1;
|
||||
|
||||
i = (flags & TRANSPORT_PUSH_FORCE) ? 2 : 3;
|
||||
i = 2;
|
||||
if (flags & TRANSPORT_PUSH_DRY_RUN)
|
||||
args[i++] = "--dry-run";
|
||||
if (!(flags & TRANSPORT_PUSH_FORCE))
|
||||
args[i++] = "--ignore-existing";
|
||||
args[i++] = temp_dir.buf;
|
||||
args[i++] = transport->url;
|
||||
args[i++] = NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user