<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/remote-curl.c, branch v2.2.3</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.2.3</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.2.3'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2014-10-08T20:05:25Z</updated>
<entry>
<title>Merge branch 'jc/push-cert'</title>
<updated>2014-10-08T20:05:25Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-10-08T20:05:15Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=fb06b5280ea05d75515fa780cf08d4ec9d6fe101'/>
<id>urn:sha1:fb06b5280ea05d75515fa780cf08d4ec9d6fe101</id>
<content type='text'>
Allow "git push" request to be signed, so that it can be verified and
audited, using the GPG signature of the person who pushed, that the
tips of branches at a public repository really point the commits
the pusher wanted to, without having to "trust" the server.

* jc/push-cert: (24 commits)
  receive-pack::hmac_sha1(): copy the entire SHA-1 hash out
  signed push: allow stale nonce in stateless mode
  signed push: teach smart-HTTP to pass "git push --signed" around
  signed push: fortify against replay attacks
  signed push: add "pushee" header to push certificate
  signed push: remove duplicated protocol info
  send-pack: send feature request on push-cert packet
  receive-pack: GPG-validate push certificates
  push: the beginning of "git push --signed"
  pack-protocol doc: typofix for PKT-LINE
  gpg-interface: move parse_signature() to where it should be
  gpg-interface: move parse_gpg_output() to where it should be
  send-pack: clarify that cmds_sent is a boolean
  send-pack: refactor inspecting and resetting status and sending commands
  send-pack: rename "new_refs" to "need_pack_data"
  receive-pack: factor out capability string generation
  send-pack: factor out capability string generation
  send-pack: always send capabilities
  send-pack: refactor decision to send update per ref
  send-pack: move REF_STATUS_REJECT_NODELETE logic a bit higher
  ...
</content>
</entry>
<entry>
<title>Merge branch 'da/styles'</title>
<updated>2014-09-19T18:38:35Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-09-19T18:38:35Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=83510ef3fda0df6acd6680410698a1762042a8af'/>
<id>urn:sha1:83510ef3fda0df6acd6680410698a1762042a8af</id>
<content type='text'>
* da/styles:
  stylefix: asterisks stick to the variable, not the type
</content>
</entry>
<entry>
<title>Merge branch 'jk/send-pack-many-refspecs'</title>
<updated>2014-09-19T18:38:31Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-09-19T18:38:31Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=d9dd4cebec3107545b4354a198ecbc5a141f3f46'/>
<id>urn:sha1:d9dd4cebec3107545b4354a198ecbc5a141f3f46</id>
<content type='text'>
The number of refs that can be pushed at once over smart HTTP was
limited by the command line length.  The limitation has been lifted
by passing these refs from the standard input of send-pack.

* jk/send-pack-many-refspecs:
  send-pack: take refspecs over stdin
</content>
</entry>
<entry>
<title>signed push: teach smart-HTTP to pass "git push --signed" around</title>
<updated>2014-09-17T21:58:04Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-09-15T21:59:00Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=0ea47f9d3307bdb1cd9364acd3e4a463b244bba2'/>
<id>urn:sha1:0ea47f9d3307bdb1cd9364acd3e4a463b244bba2</id>
<content type='text'>
The "--signed" option received by "git push" is first passed to the
transport layer, which the native transport directly uses to notice
that a push certificate needs to be sent.  When the transport-helper
is involved, however, the option needs to be told to the helper with
set_helper_option(), and the helper needs to take necessary action.
For the smart-HTTP helper, the "necessary action" involves spawning
the "git send-pack" subprocess with the "--signed" option.

Once the above all gets wired in, the smart-HTTP transport now can
use the push certificate mechanism to authenticate its pushes.

Add a test that is modeled after tests for the native transport in
t5534-push-signed.sh to t5541-http-push-smart.sh.  Update the test
Apache configuration to pass GNUPGHOME environment variable through.
As PassEnv would trigger warnings for an environment variable that
is not set, export it from test-lib.sh set to a harmless value when
GnuPG is not being used in the tests.

Note that the added test is deliberately loose and does not check
the nonce in this step.  This is because the stateless RPC mode is
inevitably flaky and a nonce that comes back in the actual push
processing is one issued by a different process; if the two
interactions with the server crossed a second boundary, the nonces
will not match and such a check will fail.  A later patch in the
series will work around this shortcoming.

Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>stylefix: asterisks stick to the variable, not the type</title>
<updated>2014-09-02T18:33:32Z</updated>
<author>
<name>David Aguilar</name>
<email>davvid@gmail.com</email>
</author>
<published>2014-08-31T20:11:31Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=24d36f1472794ba95ddc81ba8afb45fe30d1f35c'/>
<id>urn:sha1:24d36f1472794ba95ddc81ba8afb45fe30d1f35c</id>
<content type='text'>
Signed-off-by: David Aguilar &lt;davvid@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>send-pack: take refspecs over stdin</title>
<updated>2014-08-26T19:58:02Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2014-08-21T12:21:20Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=26be19ba8d8d2e7e3e288b395e7156d5b7af5140'/>
<id>urn:sha1:26be19ba8d8d2e7e3e288b395e7156d5b7af5140</id>
<content type='text'>
Pushing a large number of refs works over most transports,
because we implement send-pack as an internal function.
However, it can sometimes fail when pushing over http,
because we have to spawn "git send-pack --stateless-rpc" to
do the heavy lifting, and we pass each refspec on the
command line. This can cause us to overflow the OS limits on
the size of the command line for a large push.

We can solve this by giving send-pack a --stdin option and
using it from remote-curl.  We already dealt with this on
the fetch-pack side in 078b895 (fetch-pack: new --stdin
option to read refs from stdin, 2012-04-02). The stdin
option (and in particular, its use of packet-lines for
stateless-rpc input) is modeled after that solution.

Signed-off-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>run-command: introduce CHILD_PROCESS_INIT</title>
<updated>2014-08-20T16:53:37Z</updated>
<author>
<name>René Scharfe</name>
<email>l.s.r@web.de</email>
</author>
<published>2014-08-19T19:09:35Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=d3180279322c7450a47decf8833de47f444ca93f'/>
<id>urn:sha1:d3180279322c7450a47decf8833de47f444ca93f</id>
<content type='text'>
Most struct child_process variables are cleared using memset first after
declaration.  Provide a macro, CHILD_PROCESS_INIT, that can be used to
initialize them statically instead.  That's shorter, doesn't require a
function call and is slightly more readable (especially given that we
already have STRBUF_INIT, ARGV_ARRAY_INIT etc.).

Helped-by: Johannes Sixt &lt;j6t@kdbg.org&gt;
Signed-off-by: Rene Scharfe &lt;l.s.r@web.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'jk/remote-curl-squelch-extra-errors'</title>
<updated>2014-07-21T18:18:41Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-07-21T18:18:40Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=0ac744305f5885207bf96fc5488fcc59782ffa96'/>
<id>urn:sha1:0ac744305f5885207bf96fc5488fcc59782ffa96</id>
<content type='text'>
* jk/remote-curl-squelch-extra-errors:
  remote-curl: mark helper-protocol errors more clearly
  remote-curl: use error instead of fprintf(stderr)
  remote-curl: do not complain on EOF from parent git
</content>
</entry>
<entry>
<title>remote-curl: mark helper-protocol errors more clearly</title>
<updated>2014-07-10T17:54:22Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2014-07-09T21:47:20Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=cdaa4e98ca56586f78a455bd624457248347a56d'/>
<id>urn:sha1:cdaa4e98ca56586f78a455bd624457248347a56d</id>
<content type='text'>
When we encounter an error in remote-curl, we generally just
report it to stderr. There is no need for the user to care
that the "could not connect to server" error was generated
by git-remote-https rather than a function in the parent
git-fetch process.

However, when the error is in the protocol between git and
the helper, it makes sense to clearly identify which side is
complaining. These cases shouldn't ever happen, but when
they do, we can make them less confusing by being more
verbose.

Signed-off-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>remote-curl: use error instead of fprintf(stderr)</title>
<updated>2014-07-10T17:53:47Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2014-07-09T21:47:05Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=b725b270d1474819d46161909416ef73ba2170ff'/>
<id>urn:sha1:b725b270d1474819d46161909416ef73ba2170ff</id>
<content type='text'>
We usually prefix our error messages with "error: ", but
many error messages from remote-curl are simply printed with
fprintf. This can make the output a little harder to read
(especially because such message may be intermingled with
errors from the parent git process).

There is no reason to avoid error(), as we are already
calling it many places (in addition to libgit.a functions
which use it).

While we're adjusting the messages, we can also drop the
capitalization which makes them unlike other git error
messages.

Signed-off-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
