All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6] Improve remote-helpers documentation
@ 2010-03-23  7:45 Ramkumar Ramachandra
  2010-03-23  9:38 ` Ramkumar Ramachandra
  0 siblings, 1 reply; 6+ messages in thread
From: Ramkumar Ramachandra @ 2010-03-23  7:45 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Git Mailing List

Rewrote the description section to describe what exactly remote
helpers are and the need for them. Mentioned the curl family of remote
helpers as an example. Fixed minor typos in the rest of the document.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
---
    Complete rewrite since last revision, inspired by Junio's detailed review.

 Documentation/git-remote-helpers.txt |   89 ++++++++++++++++++++--------------
 1 files changed, 52 insertions(+), 37 deletions(-)

diff --git a/Documentation/git-remote-helpers.txt
b/Documentation/git-remote-helpers.txt
index 1b5f61a..2382fb4 100644
--- a/Documentation/git-remote-helpers.txt
+++ b/Documentation/git-remote-helpers.txt
@@ -3,7 +3,7 @@ git-remote-helpers(1)

 NAME
 ----
-git-remote-helpers - Helper programs for interoperation with remote git
+git-remote-helpers - Helper programs to interact with remote repositories

 SYNOPSIS
 --------
@@ -12,11 +12,31 @@ SYNOPSIS
 DESCRIPTION
 -----------

-These programs are normally not used directly by end users, but are
-invoked by various git programs that interact with remote repositories
-when the repository they would operate on will be accessed using
-transport code not linked into the main git binary. Various particular
-helper programs will behave as documented here.
+Remote helper programs are normally not used directly by end users,
+but are invoked by git when it needs to interact with remote
+repositories. They implement a subset of the capabilities documented
+here, and conform to the "remote helper protocol". When git needs
+needs to interact with a repository served by a remote helper, it
+spawns the helper as an independent process and interacts with it over
+the specified protocol. Essentially, git sends commands to the helper
+over standard input, and receives the result written to standard
+output by the helper over a pipe. Also, since remote helpers often
+need to link to the libraries required to interact with the remote
+repository, they avoid linking to the main git programs to evade
+licensing issues.
+
+All the capabilities of remote helpers have to do with discovering and
+updating remote refs, transporting objects between local and remote,
+and updating the local object store. Using the 'fetch' capability,
+they can discover refs on the remote, transfer objects from the remote
+reachable via those refs to local, and update the local object
+store. Using the 'push' capability, they can transfer objects from
+local to remote, and update the corresponding refs as necessary.
+
+Git comes with a "curl" family of remote helpers, specifically
+'git-remote-http', 'git-remote-https', 'git-remote-ftp' and
+'git-remote-ftps'. They implement the capabilities 'fetch', 'option',
+and 'push'.

 COMMANDS
 --------
@@ -25,8 +45,8 @@ Commands are given by the caller on the helper's
standard input, one per line.

 'capabilities'::
 	Lists the capabilities of the helper, one per line, ending
-	with a blank line. Each capability may be preceded with '*'.
-	This marks them mandatory for git version using the remote
+	with a blank line. Each capability may be preceded with '*',
+	which marks them mandatory for git version using the remote
 	helper to understand (unknown mandatory capability is fatal
 	error).

@@ -35,27 +55,27 @@ Commands are given by the caller on the helper's
standard input, one per line.
 	[<attr> ...]". The value may be a hex sha1 hash, "@<dest>" for
 	a symref, or "?" to indicate that the helper could not get the
 	value of the ref. A space-separated list of attributes follows
-	the name; unrecognized attributes are ignored. After the
-	complete list, outputs a blank line.
+	the name; unrecognized attributes are ignored. The list ends
+	with a blank line.
 +
 If 'push' is supported this may be called as 'list for-push'
 to obtain the current refs prior to sending one or more 'push'
 commands to the helper.

 'option' <name> <value>::
-	Set the transport helper option <name> to <value>.  Outputs a
+	Sets the transport helper option <name> to <value>.  Outputs a
 	single line containing one of 'ok' (option successfully set),
 	'unsupported' (option not recognized) or 'error <msg>'
-	(option <name> is supported but <value> is not correct
+	(option <name> is supported but <value> is not valid
 	for it).  Options should be set before other commands,
-	and may how those commands behave.
+	and may influence the behavior of those commands.
 +
 Supported if the helper has the "option" capability.

 'fetch' <sha1> <name>::
 	Fetches the given object, writing the necessary objects
 	to the database.  Fetch commands are sent in a batch, one
-	per line, and the batch is terminated with a blank line.
+	per line, terminated with a blank line.
 	Outputs a single blank line when all fetch commands in the
 	same batch are complete. Only objects which were reported
 	in the ref list with a sha1 may be fetched this way.
@@ -67,7 +87,7 @@ suitably updated.
 Supported if the helper has the "fetch" capability.

 'push' +<src>:<dst>::
-	Pushes the given <src> commit or branch locally to the
+	Pushes the given local <src> commit or branch to the
 	remote branch described by <dst>.  A batch sequence of
 	one or more push commands is terminated with a blank line.
 +
@@ -91,6 +111,9 @@ Supported if the helper has the "push" capability.
 	by applying the refspecs from the "refspec" capability to the
 	name of the ref.
 +
+Especially useful for interoperability with a foreign versioning
+system.
++
 Supported if the helper has the "import" capability.

 'connect' <service>::
@@ -108,9 +131,9 @@ Supported if the helper has the "import" capability.
 Supported if the helper has the "connect" capability.

 If a fatal error occurs, the program writes the error message to
-stderr and exits. The caller should expect that a suitable error
-message has been printed if the child closes the connection without
-completing a valid response for the current command.
+stderr and exits. The caller should expect a suitable error
+if the child closes the connection without
+giving a valid response for the current command.

 Additional commands may be supported, as may be determined from
 capabilities reported by the helper.
@@ -119,16 +142,11 @@ CAPABILITIES
 ------------

 'fetch'::
-	This helper supports the 'fetch' command.
-
 'option'::
-	This helper supports the option command.
-
 'push'::
-	This helper supports the 'push' command.
-
 'import'::
-	This helper supports the 'import' command.
+'connect'::
+	This helper supports the corresponding command with the same name.

 'refspec' 'spec'::
 	When using the import command, expect the source ref to have
@@ -140,9 +158,6 @@ CAPABILITIES
 	all, it must cover all refs reported by the list command; if
 	it is not used, it is effectively "*:*"

-'connect'::
-	This helper supports the 'connect' command.
-
 REF LIST ATTRIBUTES
 -------------------

@@ -158,19 +173,19 @@ REF LIST ATTRIBUTES
 OPTIONS
 -------
 'option verbosity' <N>::
-	Change the level of messages displayed by the helper.
-	When N is 0 the end-user has asked the process to be
-	quiet, and the helper should produce only error output.
-	N of 1 is the default level of verbosity, higher values
+	Changes the verbosity of messages displayed by the helper.
+	A value of 0 for N means that processes operate
+	quietly, and the helper produces only error output.
+	1 is the default level of verbosity, and higher values
 	of N correspond to the number of -v flags passed on the
 	command line.

 'option progress' \{'true'|'false'\}::
-	Enable (or disable) progress messages displayed by the
+	Enables (or disables) progress messages displayed by the
 	transport helper during a command.

 'option depth' <depth>::
-	Deepen the history of a shallow repository.
+	Deepens the history of a shallow repository.

 'option followtags' \{'true'|'false'\}::
 	If enabled the helper should automatically fetch annotated
@@ -186,9 +201,9 @@ OPTIONS
 	helpers this only applies to the 'push', if supported.

 'option servpath <c-style-quoted-path>'::
-	Set service path (--upload-pack, --receive-pack etc.) for
-	next connect. Remote helper MAY support this option. Remote
-	helper MUST NOT rely on this option being set before
+	Sets service path (--upload-pack, --receive-pack etc.) for
+	next connect. Remote helper may support this option, but
+	must not rely on this option being set before
 	connect request occurs.

 Documentation
-- 
1.7.0.2

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v6] Improve remote-helpers documentation
  2010-03-23  7:45 [PATCH v6] Improve remote-helpers documentation Ramkumar Ramachandra
@ 2010-03-23  9:38 ` Ramkumar Ramachandra
  2010-03-28 16:32   ` Ramkumar Ramachandra
  0 siblings, 1 reply; 6+ messages in thread
From: Ramkumar Ramachandra @ 2010-03-23  9:38 UTC (permalink / raw)
  To: Git Mailing List
  Cc: Sverre Rabbelier, Michael J Gruber, Jonathan Nieder, Daniel Barkalow

Rewrote the description section to describe what exactly remote
helpers are and the need for them. Mentioned the curl family of remote
helpers as an example. Fixed minor typos in the rest of the document.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
---
   Complete rewrite since last revision, inspired by Junio's detailed review.

 Documentation/git-remote-helpers.txt |   89 ++++++++++++++++++++--------------
 1 files changed, 52 insertions(+), 37 deletions(-)

diff --git a/Documentation/git-remote-helpers.txt
b/Documentation/git-remote-helpers.txt
index 1b5f61a..2382fb4 100644
--- a/Documentation/git-remote-helpers.txt
+++ b/Documentation/git-remote-helpers.txt
@@ -3,7 +3,7 @@ git-remote-helpers(1)

 NAME
 ----
-git-remote-helpers - Helper programs for interoperation with remote git
+git-remote-helpers - Helper programs to interact with remote repositories

 SYNOPSIS
 --------
@@ -12,11 +12,31 @@ SYNOPSIS
 DESCRIPTION
 -----------

-These programs are normally not used directly by end users, but are
-invoked by various git programs that interact with remote repositories
-when the repository they would operate on will be accessed using
-transport code not linked into the main git binary. Various particular
-helper programs will behave as documented here.
+Remote helper programs are normally not used directly by end users,
+but are invoked by git when it needs to interact with remote
+repositories. They implement a subset of the capabilities documented
+here, and conform to the "remote helper protocol". When git needs
+needs to interact with a repository served by a remote helper, it
+spawns the helper as an independent process and interacts with it over
+the specified protocol. Essentially, git sends commands to the helper
+over standard input, and receives the result written to standard
+output by the helper over a pipe. Also, since remote helpers often
+need to link to the libraries required to interact with the remote
+repository, they avoid linking to the main git programs to evade
+licensing issues.
+
+All the capabilities of remote helpers have to do with discovering and
+updating remote refs, transporting objects between local and remote,
+and updating the local object store. Using the 'fetch' capability,
+they can discover refs on the remote, transfer objects from the remote
+reachable via those refs to local, and update the local object
+store. Using the 'push' capability, they can transfer objects from
+local to remote, and update the corresponding refs as necessary.
+
+Git comes with a "curl" family of remote helpers, specifically
+'git-remote-http', 'git-remote-https', 'git-remote-ftp' and
+'git-remote-ftps'. They implement the capabilities 'fetch', 'option',
+and 'push'.

 COMMANDS
 --------
@@ -25,8 +45,8 @@ Commands are given by the caller on the helper's
standard input, one per line.

 'capabilities'::
       Lists the capabilities of the helper, one per line, ending
-       with a blank line. Each capability may be preceded with '*'.
-       This marks them mandatory for git version using the remote
+       with a blank line. Each capability may be preceded with '*',
+       which marks them mandatory for git version using the remote
       helper to understand (unknown mandatory capability is fatal
       error).

@@ -35,27 +55,27 @@ Commands are given by the caller on the helper's
standard input, one per line.
       [<attr> ...]". The value may be a hex sha1 hash, "@<dest>" for
       a symref, or "?" to indicate that the helper could not get the
       value of the ref. A space-separated list of attributes follows
-       the name; unrecognized attributes are ignored. After the
-       complete list, outputs a blank line.
+       the name; unrecognized attributes are ignored. The list ends
+       with a blank line.
 +
 If 'push' is supported this may be called as 'list for-push'
 to obtain the current refs prior to sending one or more 'push'
 commands to the helper.

 'option' <name> <value>::
-       Set the transport helper option <name> to <value>.  Outputs a
+       Sets the transport helper option <name> to <value>.  Outputs a
       single line containing one of 'ok' (option successfully set),
       'unsupported' (option not recognized) or 'error <msg>'
-       (option <name> is supported but <value> is not correct
+       (option <name> is supported but <value> is not valid
       for it).  Options should be set before other commands,
-       and may how those commands behave.
+       and may influence the behavior of those commands.
 +
 Supported if the helper has the "option" capability.

 'fetch' <sha1> <name>::
       Fetches the given object, writing the necessary objects
       to the database.  Fetch commands are sent in a batch, one
-       per line, and the batch is terminated with a blank line.
+       per line, terminated with a blank line.
       Outputs a single blank line when all fetch commands in the
       same batch are complete. Only objects which were reported
       in the ref list with a sha1 may be fetched this way.
@@ -67,7 +87,7 @@ suitably updated.
 Supported if the helper has the "fetch" capability.

 'push' +<src>:<dst>::
-       Pushes the given <src> commit or branch locally to the
+       Pushes the given local <src> commit or branch to the
       remote branch described by <dst>.  A batch sequence of
       one or more push commands is terminated with a blank line.
 +
@@ -91,6 +111,9 @@ Supported if the helper has the "push" capability.
       by applying the refspecs from the "refspec" capability to the
       name of the ref.
 +
+Especially useful for interoperability with a foreign versioning
+system.
++
 Supported if the helper has the "import" capability.

 'connect' <service>::
@@ -108,9 +131,9 @@ Supported if the helper has the "import" capability.
 Supported if the helper has the "connect" capability.

 If a fatal error occurs, the program writes the error message to
-stderr and exits. The caller should expect that a suitable error
-message has been printed if the child closes the connection without
-completing a valid response for the current command.
+stderr and exits. The caller should expect a suitable error
+if the child closes the connection without
+giving a valid response for the current command.

 Additional commands may be supported, as may be determined from
 capabilities reported by the helper.
@@ -119,16 +142,11 @@ CAPABILITIES
 ------------

 'fetch'::
-       This helper supports the 'fetch' command.
-
 'option'::
-       This helper supports the option command.
-
 'push'::
-       This helper supports the 'push' command.
-
 'import'::
-       This helper supports the 'import' command.
+'connect'::
+       This helper supports the corresponding command with the same name.

 'refspec' 'spec'::
       When using the import command, expect the source ref to have
@@ -140,9 +158,6 @@ CAPABILITIES
       all, it must cover all refs reported by the list command; if
       it is not used, it is effectively "*:*"

-'connect'::
-       This helper supports the 'connect' command.
-
 REF LIST ATTRIBUTES
 -------------------

@@ -158,19 +173,19 @@ REF LIST ATTRIBUTES
 OPTIONS
 -------
 'option verbosity' <N>::
-       Change the level of messages displayed by the helper.
-       When N is 0 the end-user has asked the process to be
-       quiet, and the helper should produce only error output.
-       N of 1 is the default level of verbosity, higher values
+       Changes the verbosity of messages displayed by the helper.
+       A value of 0 for N means that processes operate
+       quietly, and the helper produces only error output.
+       1 is the default level of verbosity, and higher values
       of N correspond to the number of -v flags passed on the
       command line.

 'option progress' \{'true'|'false'\}::
-       Enable (or disable) progress messages displayed by the
+       Enables (or disables) progress messages displayed by the
       transport helper during a command.

 'option depth' <depth>::
-       Deepen the history of a shallow repository.
+       Deepens the history of a shallow repository.

 'option followtags' \{'true'|'false'\}::
       If enabled the helper should automatically fetch annotated
@@ -186,9 +201,9 @@ OPTIONS
       helpers this only applies to the 'push', if supported.

 'option servpath <c-style-quoted-path>'::
-       Set service path (--upload-pack, --receive-pack etc.) for
-       next connect. Remote helper MAY support this option. Remote
-       helper MUST NOT rely on this option being set before
+       Sets service path (--upload-pack, --receive-pack etc.) for
+       next connect. Remote helper may support this option, but
+       must not rely on this option being set before
       connect request occurs.

 Documentation
--
1.7.0.2

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v6] Improve remote-helpers documentation
  2010-03-23  9:38 ` Ramkumar Ramachandra
@ 2010-03-28 16:32   ` Ramkumar Ramachandra
  2010-03-28 17:43     ` Junio C Hamano
  0 siblings, 1 reply; 6+ messages in thread
From: Ramkumar Ramachandra @ 2010-03-28 16:32 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Sverre Rabbelier, Michael J Gruber, Jonathan Nieder,
	Daniel Barkalow, Git Mailing List

On Tue, Mar 23, 2010 at 3:08 PM, Ramkumar Ramachandra
<artagnon@gmail.com> wrote:
> Rewrote the description section to describe what exactly remote
> helpers are and the need for them. Mentioned the curl family of remote
> helpers as an example. Fixed minor typos in the rest of the document.
>
> Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>

Junio: So is this patch alright?

-- Ram

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v6] Improve remote-helpers documentation
  2010-03-28 16:32   ` Ramkumar Ramachandra
@ 2010-03-28 17:43     ` Junio C Hamano
  2010-03-28 17:51       ` Junio C Hamano
  0 siblings, 1 reply; 6+ messages in thread
From: Junio C Hamano @ 2010-03-28 17:43 UTC (permalink / raw)
  To: Ramkumar Ramachandra
  Cc: Sverre Rabbelier, Michael J Gruber, Jonathan Nieder,
	Daniel Barkalow, Git Mailing List

Ramkumar Ramachandra <artagnon@gmail.com> writes:

> On Tue, Mar 23, 2010 at 3:08 PM, Ramkumar Ramachandra
> <artagnon@gmail.com> wrote:
>> Rewrote the description section to describe what exactly remote
>> helpers are and the need for them. Mentioned the curl family of remote
>> helpers as an example. Fixed minor typos in the rest of the document.
>>
>> Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
>
> Junio: So is this patch alright?

It looked good to me.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v6] Improve remote-helpers documentation
  2010-03-28 17:43     ` Junio C Hamano
@ 2010-03-28 17:51       ` Junio C Hamano
  2010-03-28 18:05         ` Ramkumar Ramachandra
  0 siblings, 1 reply; 6+ messages in thread
From: Junio C Hamano @ 2010-03-28 17:51 UTC (permalink / raw)
  To: Ramkumar Ramachandra
  Cc: Sverre Rabbelier, Michael J Gruber, Jonathan Nieder,
	Daniel Barkalow, Git Mailing List

Junio C Hamano <gitster@pobox.com> writes:

> Ramkumar Ramachandra <artagnon@gmail.com> writes:
>
>> On Tue, Mar 23, 2010 at 3:08 PM, Ramkumar Ramachandra
>> <artagnon@gmail.com> wrote:
>>> Rewrote the description section to describe what exactly remote
>>> helpers are and the need for them. Mentioned the curl family of remote
>>> helpers as an example. Fixed minor typos in the rest of the document.
>>>
>>> Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
>>
>> Junio: So is this patch alright?
>
> It looked good to me.

... except that the message is corrupt and does not apply.  Here is an
excerpt from it, before decoding MIME and quoted-printable.

    Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
    ---
    =A0 =A0Complete rewrite since last revision, inspired by Junio's detail=
    ed review.

    =A0Documentation/git-remote-helpers.txt | =A0 89 ++++++++++++++++++++--=
    ------------
    =A01 files changed, 52 insertions(+), 37 deletions(-)

    diff --git a/Documentation/git-remote-helpers.txt
    b/Documentation/git-remote-helpers.txt
    index 1b5f61a..2382fb4 100644
    --- a/Documentation/git-remote-helpers.txt
    +++ b/Documentation/git-remote-helpers.txt
    @@ -3,7 +3,7 @@ git-remote-helpers(1)

    =A0NAME
    =A0----

Who is replacing the SPs with A0???

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v6] Improve remote-helpers documentation
  2010-03-28 17:51       ` Junio C Hamano
@ 2010-03-28 18:05         ` Ramkumar Ramachandra
  0 siblings, 0 replies; 6+ messages in thread
From: Ramkumar Ramachandra @ 2010-03-28 18:05 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Sverre Rabbelier, Michael J Gruber, Jonathan Nieder,
	Daniel Barkalow, Git Mailing List

> ... except that the message is corrupt and does not apply.  Here is an
> excerpt from it, before decoding MIME and quoted-printable.

Ouch. I've just prepared a v7- I hope that applies cleanly. It's in
two parts now.

-- Ram

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2010-03-28 18:06 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-03-23  7:45 [PATCH v6] Improve remote-helpers documentation Ramkumar Ramachandra
2010-03-23  9:38 ` Ramkumar Ramachandra
2010-03-28 16:32   ` Ramkumar Ramachandra
2010-03-28 17:43     ` Junio C Hamano
2010-03-28 17:51       ` Junio C Hamano
2010-03-28 18:05         ` Ramkumar Ramachandra

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.