git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v4 05/12] Add a config option for remotes to specify a foreign vcs

From
Sverre Rabbelier <srabbelier@gmail.com>
Date
Nov 18, 2009, 01:42 UTC
Message-ID
<1258508552-20752-6-git-send-email-srabbelier@gmail.com>
In-Reply-To
<1258508552-20752-5-git-send-email-srabbelier@gmail.com>
From: Daniel Barkalow <barkalow@iabervon.org>

If this is set, the url is not required, and the transport always uses a helper named "git-remote-<value>".

It is a separate configuration option in order to allow a sensible configuration for foreign systems which either have no meaningful urls for repositories or which require urls that do not specify the system used by the repository at that location. However, this only affects how the name of the helper is determined, not anything about the interaction with the helper, and the contruction is such that, if the foreign scm does happen to use a co-named url method, a url with that method may be used directly.

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>
---
	Unchanged.
 Documentation/config.txt |    4 ++++
 remote.c                 |    4 +++-
 remote.h                 |    2 ++
 transport.c              |    5 +++++
 4 files changed, 14 insertions(+), 1 deletions(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index cb73d75..dd57a8d 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -1408,6 +1408,10 @@ remote.<name>.tagopt::
 	Setting this value to \--no-tags disables automatic tag following when
 	fetching from remote <name>
 
+remote.<name>.vcs::
+	Setting this to a value <vcs> will cause git to interact with
+	the remote with the git-remote-<vcs> helper.
+
 remotes.<group>::
 	The list of remotes which are fetched by "git remote update
 	<group>".  See linkgit:git-remote[1].
diff --git a/remote.c b/remote.c
index 15c9cec..09bb79c 100644
--- a/remote.c
+++ b/remote.c
@@ -54,7 +54,7 @@ static char buffer[BUF_SIZE];
 
 static int valid_remote(const struct remote *remote)
 {
-	return !!remote->url;
+	return (!!remote->url) || (!!remote->foreign_vcs);
 }
 
 static const char *alias_url(const char *url, struct rewrites *r)
@@ -444,6 +444,8 @@ static int handle_config(const char *key, const char *value, void *cb)
 	} else if (!strcmp(subkey, ".proxy")) {
 		return git_config_string((const char **)&remote->http_proxy,
 					 key, value);
+	} else if (!strcmp(subkey, ".vcs")) {
+		return git_config_string(&remote->foreign_vcs, key, value);
 	}
 	return 0;
 }
diff --git a/remote.h b/remote.h
index 5db8420..ac0ce2f 100644
--- a/remote.h
+++ b/remote.h
@@ -11,6 +11,8 @@ struct remote {
 	const char *name;
 	int origin;
 
+	const char *foreign_vcs;
+
 	const char **url;
 	int url_nr;
 	int url_alloc;
diff --git a/transport.c b/transport.c
index e882991..aa90648 100644
--- a/transport.c
+++ b/transport.c
@@ -821,6 +821,11 @@ struct transport *transport_get(struct remote *remote, const char *url)
 		url = remote->url[0];
 	ret->url = url;
 
+	if (remote && remote->foreign_vcs) {
+		transport_helper_init(ret, remote->foreign_vcs);
+		return ret;
+	}
+
 	if (!prefixcmp(url, "rsync:")) {
 		ret->get_refs_list = get_refs_via_rsync;
 		ret->fetch = fetch_objs_via_rsync;
-- 
1.6.5.3.164.g07b0c
Previous: Sverre RabbelierNext: Sverre Rabbelier
Message 6 of 13 in “Reroll of the remote-vcs-helper series”
  1. 00/12 Reroll of the remote-vcs-helper seriesSverre Rabbelier, Nov 18, 2009
  2. 01/12 Fix memory leak in helper method for disconnectSverre Rabbelier, Nov 18, 2009
  3. 02/12 Allow programs to not depend on remotes having urlsSverre Rabbelier, Nov 18, 2009
  4. 03/12 Use a function to determine whether a remote is validSverre Rabbelier, Nov 18, 2009
  5. 04/12 Allow fetch to modify refsSverre Rabbelier, Nov 18, 2009
  6. 05/12 Add a config option for remotes to specify a foreign vcsSverre Rabbelier, Nov 18, 2009
  7. 06/12 Allow specifying the remote helper in the urlSverre Rabbelier, Nov 18, 2009
  8. 07/12 Add support for "import" helper commandSverre Rabbelier, Nov 18, 2009
  9. 08/12 Allow helper to map private ref names into normal namesSverre Rabbelier, Nov 18, 2009
  10. 09/12 Fix various memory leaks in transport-helper.cSverre Rabbelier, Nov 18, 2009
  11. 10/12 Allow helpers to report in "list" command that the ref is unchangedSverre Rabbelier, Nov 18, 2009
  12. 11/12 Basic build infrastructure for Python scriptsSverre Rabbelier, Nov 18, 2009
  13. 12/12 Add Python support library for remote helpersSverre Rabbelier, Nov 18, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.