* [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.