Skip to content

Commit

Permalink
Merge branch 'sp/maint-no-thin'
Browse files Browse the repository at this point in the history
* sp/maint-no-thin:
  Make --no-thin the default in git-push to save server resources
  fix doc for --compression argument to pack-objects
  git-tag -s must fail if gpg cannot sign the tag.
  • Loading branch information
Junio C Hamano committed Sep 10, 2007
2 parents 57543a2 + a4503a1 commit 9784c5c
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 11 deletions.
8 changes: 2 additions & 6 deletions Documentation/git-pack-objects.txt
Original file line number Diff line number Diff line change
Expand Up @@ -155,12 +155,8 @@ base-name::
generated pack. If not specified, pack compression level is
determined first by pack.compression, then by core.compression,
and defaults to -1, the zlib default, if neither is set.
Data copied from loose objects will be recompressed
if core.legacyheaders was true when they were created or if
the loose compression level (see core.loosecompression and
core.compression) is now a different value than the pack
compression level. Add --no-reuse-object if you want to force
a uniform compression level on all data no matter the source.
Add \--no-reuse-object if you want to force a uniform compression
level on all data no matter the source.

--delta-base-offset::
A packed archive can express base object of a delta as
Expand Down
2 changes: 1 addition & 1 deletion builtin-push.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

static const char push_usage[] = "git-push [--all] [--tags] [--receive-pack=<git-receive-pack>] [--repo=all] [-f | --force] [-v] [<repository> <refspec>...]";

static int all, force, thin = 1, verbose;
static int all, force, thin, verbose;
static const char *receivepack;

static const char **refspec;
Expand Down
18 changes: 14 additions & 4 deletions builtin-tag.c
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,10 @@ static ssize_t do_sign(char *buffer, size_t size, size_t max)
bracket[1] = '\0';
}

/* When the username signingkey is bad, program could be terminated
* because gpg exits without reading and then write gets SIGPIPE. */
signal(SIGPIPE, SIG_IGN);

memset(&gpg, 0, sizeof(gpg));
gpg.argv = args;
gpg.in = -1;
Expand All @@ -212,12 +216,17 @@ static ssize_t do_sign(char *buffer, size_t size, size_t max)
if (start_command(&gpg))
return error("could not run gpg.");

write_or_die(gpg.in, buffer, size);
if (write_in_full(gpg.in, buffer, size) != size) {
close(gpg.in);
finish_command(&gpg);
return error("gpg did not accept the tag data");
}
close(gpg.in);
gpg.close_in = 0;
len = read_in_full(gpg.out, buffer + size, max - size);

finish_command(&gpg);
if (finish_command(&gpg) || !len || len < 0)
return error("gpg failed to sign the tag");

if (len == max - size)
return error("could not read the entire signature from gpg.");
Expand Down Expand Up @@ -310,9 +319,10 @@ static void create_tag(const unsigned char *object, const char *tag,
size += header_len;

if (sign) {
size = do_sign(buffer, size, max_size);
if (size < 0)
ssize_t r = do_sign(buffer, size, max_size);
if (r < 0)
die("unable to sign the tag");
size = r;
}

if (write_sha1_file(buffer, size, tag_type, result) < 0)
Expand Down
7 changes: 7 additions & 0 deletions t/t7004-tag.sh
Original file line number Diff line number Diff line change
Expand Up @@ -990,6 +990,13 @@ test_expect_success \
git diff expect actual
'

# try to sign with bad user.signingkey
git config user.signingkey BobTheMouse
test_expect_failure \
'git-tag -s fails if gpg is misconfigured' \
'git tag -s -m tail tag-gpg-failure'
git config --unset user.signingkey

# try to verify without gpg:

rm -rf gpghome
Expand Down

0 comments on commit 9784c5c

Please sign in to comment.