From: Junio C Hamano <gitster@pobox.com>
To: Amos King <amos.l.king@gmail.com>
Cc: git@vger.kernel.org, Daniel Barkalow <barkalow@iabervon.org>
Subject: Re: [PATCH][v2] http authentication via prompts (with correct line lengths)
Date: Mon, 16 Mar 2009 23:27:42 -0700 [thread overview]
Message-ID: <7v8wn4u0ip.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <d8c371a80903162215k4c27762cva650ea64d7850afa@mail.gmail.com> (Amos King's message of "Tue, 17 Mar 2009 00:15:12 -0500")
Amos King <amos.l.king@gmail.com> writes:
> Junio,
>
> I'm working with Mike on the http auth stuff, and I was testing out
> your patch. I can get it to work for fetch but push is giving me some
> grief. Looking through the code I noticed that online 219 of
> http-push.c that http_init is being called with NULL instead of a
> remote. If I pass in the remote then there is no remotre-url. I've
> been digging around and can't find where or when that is being set.
> It has been a while since I worked with C but I'd love to jump in and
> help out here. Can you point me in the right direction to get the
> remote->url[0] set for the http_auth_init to use?
Daniel is the primary culprit who introduced the transport abstraction,
and I think he muttered something about his work-in-progress that involves
in some change in the API. Perhaps he has some insights here?
Naah. I forgot that the transport abstraction on the fetch side is much
more integrated but curl_transport_push() simply launches http-push.c that
has a world on its own. Worse yet, "remote" in http-push.c is not even
the "struct remote"; it is something private to http-push.c called "struct
repo".
I am not sure how much work would be involved in converting (or if it is
even worth to convert) http-push.c to fit better into the transport API,
but if that is feasible, it might be a better longer-term solution.
Right now, builtin-push.c does all the remote inspection and when
http-push is called, the latter gets the information at the lowest level
only; the higher level information such as what nickname was used by the
user to initiate the "git push" process and whether the refspecs came from
the command line or from the config are all lost, which is quite sad.
But as a much lower impact interim solution, I suspect that you can fake a
minimally usable remote. The http_push() codepath only cares about
remote->http_proxy and remote->url settings as far as I can tell, so
perhaps you can start (with a big warning that the remote you are creating
is a fake one) by filling the absolute minimum?
That is, something along these lines (this comes on top of an obvious
patch that renames existing "remote" variable in http-push. to "repo").
diff --git a/http-push.c b/http-push.c
index dfbb247..f04ac74 100644
--- a/http-push.c
+++ b/http-push.c
@@ -2197,6 +2197,7 @@ int main(int argc, char **argv)
int new_refs;
struct ref *ref;
char *rewritten_url = NULL;
+ struct remote *remote;
git_extract_argv0_path(argv[0]);
@@ -2258,12 +2259,14 @@ int main(int argc, char **argv)
if (!repo->url)
usage(http_push_usage);
+ remote = remote_get(repo->url);
+
if (delete_branch && nr_refspec != 1)
die("You must specify only one branch name when deleting a remote branch");
memset(remote_dir_exists, -1, 256);
- http_init(NULL);
+ http_init(remote);
no_pragma_header = curl_slist_append(no_pragma_header, "Pragma:");
next prev parent reply other threads:[~2009-03-17 6:29 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-17 5:15 [PATCH][v2] http authentication via prompts (with correct line lengths) Amos King
2009-03-17 6:27 ` Junio C Hamano [this message]
2009-03-17 6:47 ` Junio C Hamano
2009-03-17 16:24 ` Daniel Barkalow
2009-03-18 22:41 ` Amos King
-- strict thread matches above, loose matches on Subject: below --
2009-03-10 0:08 Mike Gaffney
2009-03-10 0:37 ` Junio C Hamano
2009-03-10 0:45 ` Johannes Schindelin
2009-03-10 3:25 ` Mike Gaffney
2009-03-10 10:43 ` Johannes Schindelin
2009-03-10 15:33 ` Mike Gaffney
2009-03-10 4:46 ` Mike Gaffney
2009-03-10 6:34 ` Junio C Hamano
2009-03-10 8:08 ` Daniel Stenberg
2009-03-10 8:35 ` Junio C Hamano
2009-03-12 8:53 ` Mike Ralphson
2009-03-12 8:59 ` Daniel Stenberg
2009-03-12 9:12 ` Mike Ralphson
2009-03-12 9:24 ` Daniel Stenberg
2009-03-13 5:53 ` Junio C Hamano
2009-03-13 7:58 ` Daniel Stenberg
2009-03-13 10:53 ` Mike Ralphson
2009-03-14 5:55 ` Junio C Hamano
2009-03-13 12:47 ` Mike Gaffney
2009-03-14 6:43 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7v8wn4u0ip.fsf@gitster.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=amos.l.king@gmail.com \
--cc=barkalow@iabervon.org \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).