Re: [PATCH v2 1/6] transport-helper: clarify *:* refspec

2013-04-18 Thread John Keeping
On Wed, Apr 17, 2013 at 11:14:28PM -0500, Felipe Contreras wrote:
 The *:* refspec doesn't work, and never has, clarify the code and
 documentation to reflect that. This in effect reverts commit 9e7673e
 (gitremote-helpers(1): clarify refspec behaviour).

In what way doesn't it work?  If I specify that refspec then I do get
output that appears sensible.

 Signed-off-by: Felipe Contreras felipe.contre...@gmail.com
 ---
  Documentation/gitremote-helpers.txt |  4 ++--
  t/t5801-remote-helpers.sh   | 15 ---
  transport-helper.c  |  2 +-
  3 files changed, 3 insertions(+), 18 deletions(-)
 
 diff --git a/Documentation/gitremote-helpers.txt 
 b/Documentation/gitremote-helpers.txt
 index f506031..0c91aba 100644
 --- a/Documentation/gitremote-helpers.txt
 +++ b/Documentation/gitremote-helpers.txt
 @@ -174,8 +174,8 @@ ref.
  This capability can be advertised multiple times.  The first
  applicable refspec takes precedence.  The left-hand of refspecs
  advertised with this capability must cover all refs reported by
 -the list command.  If a helper does not need a specific 'refspec'
 -capability then it should advertise `refspec *:*`.
 +the list command.  If no 'refspec' capability is advertised,
 +there is an implied `refspec *:*`.

This is wrong.  As your later patch makes clearer, there is no implied
refspec for push - it only works for fetch.  I found the wording you've
reverted to extremely misleading.  How about something like this:

For historical reasons, 'import' treats the absence of a 'refspec'
line as equivalent to `refspec *:*`; remote helpers should always
specify an explicit refspec.

?

  'bidi-import'::
   This modifies the 'import' capability.
 diff --git a/t/t5801-remote-helpers.sh b/t/t5801-remote-helpers.sh
 index f387027..cd1873c 100755
 --- a/t/t5801-remote-helpers.sh
 +++ b/t/t5801-remote-helpers.sh
 @@ -120,21 +120,6 @@ test_expect_failure 'pushing without refspecs' '
   compare_refs local2 HEAD server HEAD
  '
  
 -test_expect_success 'pulling with straight refspec' '
 - (cd local2 
 - GIT_REMOTE_TESTGIT_REFSPEC=*:* git pull) 
 - compare_refs local2 HEAD server HEAD
 -'
 -
 -test_expect_failure 'pushing with straight refspec' '
 - test_when_finished (cd local2  git reset --hard origin) 
 - (cd local2 
 - echo content file 
 - git commit -a -m eleven 
 - GIT_REMOTE_TESTGIT_REFSPEC=*:* git push) 
 - compare_refs local2 HEAD server HEAD
 -'
 -
  test_expect_success 'pulling without marks' '
   (cd local2 
   GIT_REMOTE_TESTGIT_NO_MARKS=1 git pull) 
 diff --git a/transport-helper.c b/transport-helper.c
 index dcd8d97..cea787c 100644
 --- a/transport-helper.c
 +++ b/transport-helper.c
 @@ -469,7 +469,7 @@ static int fetch_with_import(struct transport *transport,
* were fetching.
*
* (If no refspec capability was specified, for historical
 -  * reasons we default to *:*.)
 +  * reasons we default to the equivalent of *:*.)
*
* Store the result in to_fetch[i].old_sha1.  Callers such
* as git fetch can use the value to write feedback to the
 -- 
 1.8.2.1.679.g509521a
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 1/6] transport-helper: clarify *:* refspec

2013-04-18 Thread Felipe Contreras
On Thu, Apr 18, 2013 at 3:24 AM, John Keeping j...@keeping.me.uk wrote:
 On Wed, Apr 17, 2013 at 11:14:28PM -0500, Felipe Contreras wrote:
 The *:* refspec doesn't work, and never has, clarify the code and
 documentation to reflect that. This in effect reverts commit 9e7673e
 (gitremote-helpers(1): clarify refspec behaviour).

 In what way doesn't it work?  If I specify that refspec then I do get
 output that appears sensible.

% git checkout origin/master
% make -C t t5801-remote-helpers.sh

not ok 15 - pushing with straight refspec # TODO known breakage

It fails for me here.


  Documentation/gitremote-helpers.txt |  4 ++--
  t/t5801-remote-helpers.sh   | 15 ---
  transport-helper.c  |  2 +-
  3 files changed, 3 insertions(+), 18 deletions(-)

 diff --git a/Documentation/gitremote-helpers.txt 
 b/Documentation/gitremote-helpers.txt
 index f506031..0c91aba 100644
 --- a/Documentation/gitremote-helpers.txt
 +++ b/Documentation/gitremote-helpers.txt
 @@ -174,8 +174,8 @@ ref.
  This capability can be advertised multiple times.  The first
  applicable refspec takes precedence.  The left-hand of refspecs
  advertised with this capability must cover all refs reported by
 -the list command.  If a helper does not need a specific 'refspec'
 -capability then it should advertise `refspec *:*`.
 +the list command.  If no 'refspec' capability is advertised,
 +there is an implied `refspec *:*`.

 This is wrong.

It has been like that since v1.7.0.

 As your later patch makes clearer, there is no implied
 refspec for push - it only works for fetch.  I found the wording you've
 reverted to extremely misleading.  How about something like this:

 For historical reasons, 'import' treats the absence of a 'refspec'
 line as equivalent to `refspec *:*`; remote helpers should always
 specify an explicit refspec.

Maybe my version was misleading because it didn't mention it was for
historical reasons, but yours is plain wrong; remote helpers might not
be using 'import' or 'export' at all, so not all remote helpers should
always specify an explicit refspec. And if the previous text It is
recommended that all importers providing the 'import' capability use
this. It's mandatory for 'export'. does not convey the idea these
remote helpers should always specify an explicit refspec, I don't know
what it does.

-- 
Felipe Contreras
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 1/6] transport-helper: clarify *:* refspec

2013-04-18 Thread John Keeping
On Thu, Apr 18, 2013 at 04:27:57AM -0500, Felipe Contreras wrote:
 On Thu, Apr 18, 2013 at 3:24 AM, John Keeping j...@keeping.me.uk wrote:
  On Wed, Apr 17, 2013 at 11:14:28PM -0500, Felipe Contreras wrote:
  diff --git a/Documentation/gitremote-helpers.txt 
  b/Documentation/gitremote-helpers.txt
  index f506031..0c91aba 100644
  --- a/Documentation/gitremote-helpers.txt
  +++ b/Documentation/gitremote-helpers.txt
  @@ -174,8 +174,8 @@ ref.
   This capability can be advertised multiple times.  The first
   applicable refspec takes precedence.  The left-hand of refspecs
   advertised with this capability must cover all refs reported by
  -the list command.  If a helper does not need a specific 'refspec'
  -capability then it should advertise `refspec *:*`.
  +the list command.  If no 'refspec' capability is advertised,
  +there is an implied `refspec *:*`.
 
  This is wrong.
 
 It has been like that since v1.7.0.

That doesn't mean it's right.  I suspect that it was originally correct,
but then 'export' was added at which point this became stale.

  As your later patch makes clearer, there is no implied
  refspec for push - it only works for fetch.  I found the wording you've
  reverted to extremely misleading.  How about something like this:
 
  For historical reasons, 'import' treats the absence of a 'refspec'
  line as equivalent to `refspec *:*`; remote helpers should always
  specify an explicit refspec.
 
 Maybe my version was misleading because it didn't mention it was for
 historical reasons, but yours is plain wrong; remote helpers might not
 be using 'import' or 'export' at all, so not all remote helpers should
 always specify an explicit refspec. And if the previous text It is
 recommended that all importers providing the 'import' capability use
 this. It's mandatory for 'export'. does not convey the idea these
 remote helpers should always specify an explicit refspec, I don't know
 what it does.

I didn't say mine was correct, but there was a reason that I wanted to
change the existing text.  Just going back to what was there before is
not a good way to make things better.

In my copy of pu I don't see the text It's mandatory for 'export', it
just stops after It is recommended that all importers providing the
'import' capability use this.  That paragraph also starts with This
modifies the 'import' capability making no mention of export.

Perhaps we need a slightly more extensive re-write of the documentation
for refspec to make it very clear where it applies and when it is
needed.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 1/6] transport-helper: clarify *:* refspec

2013-04-18 Thread Felipe Contreras
On Thu, Apr 18, 2013 at 4:45 AM, John Keeping j...@keeping.me.uk wrote:
 On Thu, Apr 18, 2013 at 04:27:57AM -0500, Felipe Contreras wrote:

 Maybe my version was misleading because it didn't mention it was for
 historical reasons, but yours is plain wrong; remote helpers might not
 be using 'import' or 'export' at all, so not all remote helpers should
 always specify an explicit refspec. And if the previous text It is
 recommended that all importers providing the 'import' capability use
 this. It's mandatory for 'export'. does not convey the idea these
 remote helpers should always specify an explicit refspec, I don't know
 what it does.

 I didn't say mine was correct, but there was a reason that I wanted to
 change the existing text.  Just going back to what was there before is
 not a good way to make things better.

And just because it was that way before doesn't mean it was worst.
Your patch essentially switched from it is implied, to it should be
explicit, which is wrong. Going back to the previous text is the
simplest change that restores a reasonable explanation. The next
patches in this series deal with the rest of the issues in this text.

 In my copy of pu I don't see the text It's mandatory for 'export', it
 just stops after It is recommended that all importers providing the
 'import' capability use this.  That paragraph also starts with This
 modifies the 'import' capability making no mention of export.

This is patch 1 of 6, keep going.

-- 
Felipe Contreras
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 1/6] transport-helper: clarify *:* refspec

2013-04-18 Thread John Keeping
On Thu, Apr 18, 2013 at 05:02:11AM -0500, Felipe Contreras wrote:
 On Thu, Apr 18, 2013 at 4:45 AM, John Keeping j...@keeping.me.uk wrote:
  In my copy of pu I don't see the text It's mandatory for 'export', it
  just stops after It is recommended that all importers providing the
  'import' capability use this.  That paragraph also starts with This
  modifies the 'import' capability making no mention of export.
 
 This is patch 1 of 6, keep going.

Ah, I see now.  I had read all of the patches initially, but then
focused on this one for discussion.

The end result after this series does look good, but I find it slightly
strange to take a step backwards on the way.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 1/6] transport-helper: clarify *:* refspec

2013-04-18 Thread Junio C Hamano
Felipe Contreras felipe.contre...@gmail.com writes:

 The *:* refspec doesn't work, and never has, clarify the code and
 documentation to reflect that. This in effect reverts commit 9e7673e
 (gitremote-helpers(1): clarify refspec behaviour).
 ...
  applicable refspec takes precedence.  The left-hand of refspecs
  advertised with this capability must cover all refs reported by
 -the list command.  If a helper does not need a specific 'refspec'
 -capability then it should advertise `refspec *:*`.
 +the list command.  If no 'refspec' capability is advertised,
 +there is an implied `refspec *:*`.

I presume

s/.$/, but `*:*` does not work so do not use it./

is implied?

 diff --git a/t/t5801-remote-helpers.sh b/t/t5801-remote-helpers.sh
 index f387027..cd1873c 100755
 --- a/t/t5801-remote-helpers.sh
 +++ b/t/t5801-remote-helpers.sh
 @@ -120,21 +120,6 @@ test_expect_failure 'pushing without refspecs' '
   compare_refs local2 HEAD server HEAD
  '
  
 -test_expect_success 'pulling with straight refspec' '
 - (cd local2 
 - GIT_REMOTE_TESTGIT_REFSPEC=*:* git pull) 
 - compare_refs local2 HEAD server HEAD
 -'

This one made me raise my eyebrows, first.

The only reason this test passes is because this particular
pull, due to what local2 and server happens to have before this
test runs, is an Already up-to-date and a no-op.  You are removing
this because it is not really testing anything useful, and if you
change it to test something real, e.g. by rewinding local2, it will
reveal the breakage.

Am I reading you correctly?

 diff --git a/transport-helper.c b/transport-helper.c
 index dcd8d97..cea787c 100644
 --- a/transport-helper.c
 +++ b/transport-helper.c
 @@ -469,7 +469,7 @@ static int fetch_with_import(struct transport *transport,
* were fetching.
*
* (If no refspec capability was specified, for historical
 -  * reasons we default to *:*.)
 +  * reasons we default to the equivalent of *:*.)
*
* Store the result in to_fetch[i].old_sha1.  Callers such
* as git fetch can use the value to write feedback to the
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html