mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
push: support signing pushes iff the server supports it
Add a new flag --sign=true (or --sign=false), which means the same thing as the original --signed (or --no-signed). Give it a third value --sign=if-asked to tell push and send-pack to send a push certificate if and only if the server advertised a push cert nonce. If not, warn the user that their push may not be as secure as they thought. Signed-off-by: Dave Borowitz <dborowitz@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
068c77a518
commit
30261094b1
@@ -11,6 +11,7 @@
|
||||
#include "argv-array.h"
|
||||
#include "credential.h"
|
||||
#include "sha1-array.h"
|
||||
#include "send-pack.h"
|
||||
|
||||
static struct remote *remote;
|
||||
/* always ends with a trailing slash */
|
||||
@@ -26,7 +27,8 @@ struct options {
|
||||
followtags : 1,
|
||||
dry_run : 1,
|
||||
thin : 1,
|
||||
push_cert : 1;
|
||||
/* One of the SEND_PACK_PUSH_CERT_* constants. */
|
||||
push_cert : 2;
|
||||
};
|
||||
static struct options options;
|
||||
static struct string_list cas_options = STRING_LIST_INIT_DUP;
|
||||
@@ -109,9 +111,11 @@ static int set_option(const char *name, const char *value)
|
||||
return 0;
|
||||
} else if (!strcmp(name, "pushcert")) {
|
||||
if (!strcmp(value, "true"))
|
||||
options.push_cert = 1;
|
||||
options.push_cert = SEND_PACK_PUSH_CERT_ALWAYS;
|
||||
else if (!strcmp(value, "false"))
|
||||
options.push_cert = 0;
|
||||
options.push_cert = SEND_PACK_PUSH_CERT_NEVER;
|
||||
else if (!strcmp(value, "if-asked"))
|
||||
options.push_cert = SEND_PACK_PUSH_CERT_IF_ASKED;
|
||||
else
|
||||
return -1;
|
||||
return 0;
|
||||
@@ -880,8 +884,10 @@ static int push_git(struct discovery *heads, int nr_spec, char **specs)
|
||||
argv_array_push(&args, "--thin");
|
||||
if (options.dry_run)
|
||||
argv_array_push(&args, "--dry-run");
|
||||
if (options.push_cert)
|
||||
argv_array_push(&args, "--signed");
|
||||
if (options.push_cert == SEND_PACK_PUSH_CERT_ALWAYS)
|
||||
argv_array_push(&args, "--signed=yes");
|
||||
else if (options.push_cert == SEND_PACK_PUSH_CERT_IF_ASKED)
|
||||
argv_array_push(&args, "--signed=if-asked");
|
||||
if (options.verbosity == 0)
|
||||
argv_array_push(&args, "--quiet");
|
||||
else if (options.verbosity > 1)
|
||||
|
||||
Reference in New Issue
Block a user