Re: [PATCH v4 00/35] protocol version 2

2018-03-01 Thread Junio C Hamano
Brandon Williams  writes:

> I've tried to keep building on the same base that I started with when
> sending out a new version of series, mostly because I thought it was
> easier to see what was different between rounds.

Yes.  It indeed is easier to see the evolution if the series does
not get rebased needlessly.

> I can, in the future, try to remember to put the commit its based on.
> Do we have any sort of guidance about the best practice here?

I recall we taught a new "--base" option to "format-patch" not too
long ago, so one way to do so may be:

$ git format-patch --cover-letter --base=v2.16.0-rc0 master..bw/protocol-v2
$ tail -4 -cover*.txt
base-commit: 1eaabe34fc6f486367a176207420378f587d3b48
--
2.16.2-345-g7e31236f65

perhaps?


Re: [PATCH v4 00/35] protocol version 2

2018-03-01 Thread Brandon Williams
On 03/01, Junio C Hamano wrote:
> Brandon Williams  writes:
> 
> > Lots of changes since v3 (well more than between v2 and v3).  Thanks for
> > all of the reviews on the last round, the series is getting more
> > polished.
> >
> >  * Eliminated the "# service" line from the response from an HTTP
> >server.  This means that the response to a v2 request is exactly the
> >same regardless of which transport you use!  Docs for this have been
> >added as well.
> >  * Changed how ref-patterns work with the `ls-refs` command.  Instead of
> >using wildmatch all patterns must either match exactly or they can
> >contain a single '*' character at the end to mean that the prefix
> >must match.  Docs for this have also been added.
> >  * Lots of updates to the docs.  Including documenting the
> >`stateless-connect` remote-helper command used by remote-curl to
> >handle the http transport.
> >  * Fixed a number of bugs with the `fetch` command, one of which didn't
> >use objects from configured alternates.
> 
> I noticed that this round is built on top of v2.16.0-rc0.  It
> certainly makes it easier to compare against the previous round
> which was built on top of that old commit and it is very much
> appreciated that a reroll does not involve pointless rebases.
> 
> For those who are helping from sidelines, it may be ehlpful to
> mention where in the history this was developed on, though, as
> applying these on the current 'master' has a handful of small
> conflicts.
> 
> Thanks, will replace and will comment on individual patches as
> needed.

I've tried to keep building on the same base that I started with when
sending out a new version of series, mostly because I thought it was
easier to see what was different between rounds.

I can, in the future, try to remember to put the commit its based on.
Do we have any sort of guidance about the best practice here?

-- 
Brandon Williams


Re: [PATCH v4 00/35] protocol version 2

2018-03-01 Thread Junio C Hamano
Brandon Williams  writes:

> Lots of changes since v3 (well more than between v2 and v3).  Thanks for
> all of the reviews on the last round, the series is getting more
> polished.
>
>  * Eliminated the "# service" line from the response from an HTTP
>server.  This means that the response to a v2 request is exactly the
>same regardless of which transport you use!  Docs for this have been
>added as well.
>  * Changed how ref-patterns work with the `ls-refs` command.  Instead of
>using wildmatch all patterns must either match exactly or they can
>contain a single '*' character at the end to mean that the prefix
>must match.  Docs for this have also been added.
>  * Lots of updates to the docs.  Including documenting the
>`stateless-connect` remote-helper command used by remote-curl to
>handle the http transport.
>  * Fixed a number of bugs with the `fetch` command, one of which didn't
>use objects from configured alternates.

I noticed that this round is built on top of v2.16.0-rc0.  It
certainly makes it easier to compare against the previous round
which was built on top of that old commit and it is very much
appreciated that a reroll does not involve pointless rebases.

For those who are helping from sidelines, it may be ehlpful to
mention where in the history this was developed on, though, as
applying these on the current 'master' has a handful of small
conflicts.

Thanks, will replace and will comment on individual patches as
needed.


[PATCH v4 00/35] protocol version 2

2018-02-28 Thread Brandon Williams
Lots of changes since v3 (well more than between v2 and v3).  Thanks for
all of the reviews on the last round, the series is getting more
polished.

 * Eliminated the "# service" line from the response from an HTTP
   server.  This means that the response to a v2 request is exactly the
   same regardless of which transport you use!  Docs for this have been
   added as well.
 * Changed how ref-patterns work with the `ls-refs` command.  Instead of
   using wildmatch all patterns must either match exactly or they can
   contain a single '*' character at the end to mean that the prefix
   must match.  Docs for this have also been added.
 * Lots of updates to the docs.  Including documenting the
   `stateless-connect` remote-helper command used by remote-curl to
   handle the http transport.
 * Fixed a number of bugs with the `fetch` command, one of which didn't
   use objects from configured alternates.

Brandon Williams (35):
  pkt-line: introduce packet_read_with_status
  pkt-line: allow peeking a packet line without consuming it
  pkt-line: add delim packet support
  upload-pack: convert to a builtin
  upload-pack: factor out processing lines
  transport: use get_refs_via_connect to get refs
  connect: convert get_remote_heads to use struct packet_reader
  connect: discover protocol version outside of get_remote_heads
  transport: store protocol version
  protocol: introduce enum protocol_version value protocol_v2
  test-pkt-line: introduce a packet-line test helper
  serve: introduce git-serve
  ls-refs: introduce ls-refs server command
  connect: request remote refs using v2
  transport: convert get_refs_list to take a list of ref patterns
  transport: convert transport_get_remote_refs to take a list of ref
patterns
  ls-remote: pass ref patterns when requesting a remote's refs
  fetch: pass ref patterns when fetching
  push: pass ref patterns when pushing
  upload-pack: introduce fetch server command
  fetch-pack: perform a fetch using v2
  fetch-pack: support shallow requests
  connect: refactor git_connect to only get the protocol version once
  connect: don't request v2 when pushing
  transport-helper: remove name parameter
  transport-helper: refactor process_connect_service
  transport-helper: introduce stateless-connect
  pkt-line: add packet_buf_write_len function
  remote-curl: create copy of the service name
  remote-curl: store the protocol version the server responded with
  http: allow providing extra headers for http requests
  http: don't always add Git-Protocol header
  http: eliminate "# service" line when using protocol v2
  remote-curl: implement stateless-connect command
  remote-curl: don't request v2 when pushing

 .gitignore  |   1 +
 Documentation/gitremote-helpers.txt |  32 ++
 Documentation/technical/protocol-v2.txt | 401 +++
 Makefile|   7 +-
 builtin.h   |   2 +
 builtin/clone.c |   2 +-
 builtin/fetch-pack.c|  20 +-
 builtin/fetch.c |  18 +-
 builtin/ls-remote.c |  12 +-
 builtin/receive-pack.c  |   6 +
 builtin/remote.c|   2 +-
 builtin/send-pack.c |  20 +-
 builtin/serve.c |  30 ++
 builtin/upload-pack.c   |  74 +++
 connect.c   | 364 ++
 connect.h   |   7 +
 fetch-pack.c| 339 -
 fetch-pack.h|   4 +-
 git.c   |   2 +
 http-backend.c  |   8 +-
 http.c  |  25 +-
 http.h  |   7 +
 ls-refs.c   | 144 ++
 ls-refs.h   |   9 +
 pkt-line.c  | 147 +-
 pkt-line.h  |  78 +++
 protocol.c  |   2 +
 protocol.h  |   1 +
 refs.c  |  14 +
 refs.h  |   7 +
 remote-curl.c   | 278 ++-
 remote.h|  11 +-
 serve.c | 260 ++
 serve.h |  15 +
 t/helper/test-pkt-line.c|  64 +++
 t/t5701-git-serve.sh| 176 +++
 t/t5702-protocol-v2.sh  | 273 +++
 transport-helper.c  |  87 ++--
 transport-internal.h|   9 +-
 transport.c | 125 +++--
 transport.h |  18 +-
 upload-pack.c   | 616 ++--
 upload-pack.h   |  21 +
 43 files changed, 3370 insertions(+), 368 deletions(-)
 create