doc: update http.cookieFile with in-memory cookie processing
PATCH 1/1 doc: update http.cookieFile with in-memory cookie processing
From: Piotr Szlazak <[email protected]>
Information added how to enable in-memory cookies processing. Cookies from server will be accepted and send back in successive requests within same connection.
At the moment documentation only mentions how to read cookies from the given file and how to save them to the file using http.saveCookies.
curl / libcurl will process cookies in memory if file name is blank. Check curl manpage:
https://curl.se/docs/manpage.html#-b
This is described here in more details:
https://everything.curl.dev/http/cookies/engine.html
And also explained here:
https://www.youtube.com/watch?v=V5vZWHP-RqU&t=11459s
Git documentation was updated to include suggestion how to enable this by setting empty value for http.cookieFile.
---
Update http.cookieFile with in-memory cookie processing
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1733%2Fpszlazak%2Fdocumentation-cookieFile-in-memory-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1733/pszlazak/documentation-cookieFile-in-memory-v1
Pull-Request: https://github.com/git/git/pull/1733
Documentation/config/http.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
Documentation/config/http.txt +4 -4
@@ -78,10 +78,10 @@ http.extraHeader:: http.cookieFile:: The pathname of a file containing previously stored cookie lines, - which should be used - in the Git http session, if they match the server. The file format - of the file to read cookies from should be plain HTTP headers or - the Netscape/Mozilla cookie file format (see `curl(1)`). + which should be used in the Git http session, if they match the server. + The file format of the file to read cookies from should be plain HTTP + headers or the Netscape/Mozilla cookie file format (see `curl(1)`). + Set it to empty value, to enable in-memory cookies processing. NOTE that the file specified with http.cookieFile is used only as input unless http.saveCookies is set.
base-commit: 66ac6e4bcd111be3fa9c2a6b3fafea718d00678d
Signature · 1 line
gitgitgadget
Quoted 18 lines · Piotr Szlazak via GitGitGadget
From: Piotr Szlazak <[email protected]>
Information added how to enable in-memory cookies processing. Cookies from server will be accepted and send back in successive requests within same connection.
At the moment documentation only mentions how to read cookies from the given file and how to save them to the file using http.saveCookies.
curl / libcurl will process cookies in memory if file name is blank. Check curl manpage:
https://curl.se/docs/manpage.html#-b
This is described here in more details:
https://everything.curl.dev/http/cookies/engine.html
And also explained here:
https://www.youtube.com/watch?v=V5vZWHP-RqU&t=11459s
Quoted 4 lines
Git documentation was updated to include suggestion how to enable this by setting empty value for http.cookieFile.
Signed-off-by Piotr Szlazak <[email protected]>
Hello Junio!
Would you be able to take a look at my commit?
It's a small update in Documentation/config/http.txt, where I wanted to share how to enable in-memory HTTP cookies processing. It's more curl/libcurl related thing, but worth to be known by Git users.
Regards!
--
Piotr Szlazak
Quoted 4 lines
---
Update http.cookieFile with in-memory cookie processing Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1733%2Fpszlazak%2Fdocumentation-cookieFile-in-memory-v1Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1733/pszlazak/documentation-cookieFile-in-memory-v1 Pull-Request: https://github.com/git/git/pull/1733Documentation/config/http.txt| 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --gita/Documentation/config/http.txtb/Documentation/config/http.txtindex2d4e0c9b869..228bed32ec1100644 ---a/Documentation/config/http.txt
+++b/Documentation/config/http.txt@@ -78,10 +78,10 @@
http.extraHeader:: http.cookieFile:: The pathname of a file containing previously stored cookie lines, - which should be used - in the Git http session, if they match the server. The file format - of the file to read cookies from should be plain HTTP headers or - the Netscape/Mozilla cookie file format (seecurl(1)). + which should be used in the Git http session, if they match the server. + The file format of the file to read cookies from should be plain HTTP + headers or the Netscape/Mozilla cookie file format (seecurl(1)). + Set it to empty value, to enable in-memory cookies processing. NOTE that the file specified with http.cookieFile is used only as input unless http.saveCookies is set. base-commit:66ac6e4bcd111be3fa9c2a6b3fafea718d00678d
Quoted 2 lines · Piotr Szlazak
Hello Junio!
Would you be able to take a look at my commit?
Please do not specifically name me. If I did not respond, that was because I considered it was outside my area of expertise, so pinging me would not help all that much.
CC'ed folks who touched http.c (where the configuration is used) in the past 6 months to ask for their help.
Thanks.
Documentation/config/http.txt http.extraHeader:: · line 83
Quoted 9 lines · Piotr Szlazak via GitGitGadget
http.cookieFile::
Documentation/config/http.txt +3
-4The pathname of a file containing previously stored cookie lines, - which should be used - in the Git http session, if they match the server. The file format - of the file to read cookies from should be plain HTTP headers or - the Netscape/Mozilla cookie file format (see `curl(1)`). + which should be used in the Git http session, if they match the server. + The file format of the file to read cookies from should be plain HTTP + headers or the Netscape/Mozilla cookie file format (see `curl(1)`).
With line wrapping it is hard to see if there is any change above here, but I assume there is none?
Documentation/config/http.txt http.extraHeader:: · line 84
Quoted 1 line
Documentation/config/http.txt +1
-0+ Set it to empty value, to enable in-memory cookies processing.
Is it understandable what "in-memory cookies processing" means to expected audience of this manual page? I somehow doubt it (I certainly do not know what you wanted it to mean).
https://curl.se/libcurl/c/CURLOPT_COOKIEFILE.html has this to say:
By passing the empty string ("") to this option, you enable the cookie engine without reading any initial cookies.
But http.cookiefile is also used for CURLOPT_COOKIEJAR when http.savecookies is true. Its documentation page does not say what would happen if you give an empty string to it.
So, a casual one-line mention you added is a bit irresponsible. At least you should warn against setting http.savecookies if the user chooses to use "" for this, or better yet, fix the codepath to use http.savecookies to prevent us from writing to a file with an empty filename.
Also the libcURL documentation for CURLOPT_COOKIEFILE has another thing that is a bit worrysome:
If you tell libcurl the filename is "-" (just a single minus sign), libcurl instead reads from stdin.
So you can easily get your git get stuck by doing
git -c http.cookiefile=- fetch https://.....
as libcURL will want to read from your stdin, while you are waiting for the fetch to finish and are not typing anything?
PATCH v2 1/1 doc: update http.cookieFile with in-memory cookie processing
In reply to Piotr Szlazak via GitGitGadgetFrom: Piotr Szlazak <[email protected]>
Information added how to enable in-memory cookies processing. Cookies from server will be accepted and send back in successive requests within same connection.
At the moment documentation only mentions how to read cookies from the given file and how to save them to the file using http.saveCookies.
curl / libcurl will process cookies in memory if file name is blank. Check curl manpage:
https://curl.se/docs/manpage.html#-b
This is described here in more details:
https://everything.curl.dev/http/cookies/engine.html
And also explained here:
https://www.youtube.com/watch?v=V5vZWHP-RqU&t=11459s
Git documentation was updated to include suggestion how to enable this by setting empty value for http.cookieFile.
Changes since V1:
- better explanation what in-memory processing means
- added explanation that http.saveCookies does not work if http.cookieFile was set to empty value
---
Update http.cookieFile with in-memory cookie processing
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1733%2Fpszlazak%2Fdocumentation-cookieFile-in-memory-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1733/pszlazak/documentation-cookieFile-in-memory-v2
Pull-Request: https://github.com/git/git/pull/1733
Range-diff vs v1:
1: 5e9b3924224 ! 1: c4d41b5884d doc: update http.cookieFile with in-memory cookie processing
@@ Commit message
Git documentation was updated to include suggestion how to
enable this by setting empty value for http.cookieFile.
+ Changes since V1:
+ - better explanation what in-memory processing means
+ - added explanation that http.saveCookies does not work
+ if http.cookieFile was set to empty value
+
## Documentation/config/http.txt ##
@@ Documentation/config/http.txt: http.extraHeader::
- in the Git http session, if they match the server. The file format
- of the file to read cookies from should be plain HTTP headers or
- the Netscape/Mozilla cookie file format (see curl(1)).
+- NOTE that the file specified with http.cookieFile is used only as
+- input unless http.saveCookies is set.
+ which should be used in the Git http session, if they match the server.
+ The file format of the file to read cookies from should be plain HTTP
+ headers or the Netscape/Mozilla cookie file format (see curl(1)).
-+ Set it to empty value, to enable in-memory cookies processing.
- NOTE that the file specified with http.cookieFile is used only as
- input unless http.saveCookies is set.
++ Set it to empty value (''), to accept only new cookies from the server and
++ send them back in successive requests within same connection. NOTE that the
++ file specified with http.cookieFile is used only as input unless
++ http.saveCookies is set.
+
+ http.saveCookies::
+ If set, store cookies received during requests to the file specified by
+- http.cookieFile. Has no effect if http.cookieFile is unset.
++ http.cookieFile. Has no effect if http.cookieFile is not set or set to empty
++ value ('').
+ http.version::
+ Use the specified HTTP protocol version when communicating with a server.
Documentation/config/http.txt | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-)
Documentation/config/http.txt +9 -7
@@ -78,16 +78,18 @@ http.extraHeader:: http.cookieFile:: The pathname of a file containing previously stored cookie lines, - which should be used - in the Git http session, if they match the server. The file format - of the file to read cookies from should be plain HTTP headers or - the Netscape/Mozilla cookie file format (see `curl(1)`). - NOTE that the file specified with http.cookieFile is used only as - input unless http.saveCookies is set. + which should be used in the Git http session, if they match the server. + The file format of the file to read cookies from should be plain HTTP + headers or the Netscape/Mozilla cookie file format (see `curl(1)`). + Set it to empty value (''), to accept only new cookies from the server and + send them back in successive requests within same connection. NOTE that the + file specified with http.cookieFile is used only as input unless + http.saveCookies is set. http.saveCookies:: If set, store cookies received during requests to the file specified by - http.cookieFile. Has no effect if http.cookieFile is unset. + http.cookieFile. Has no effect if http.cookieFile is not set or set to empty + value (''). http.version:: Use the specified HTTP protocol version when communicating with a server.
base-commit: 66ac6e4bcd111be3fa9c2a6b3fafea718d00678d
Signature · 1 line
gitgitgadget
Quoted 13 lines · Junio C Hamano
Documentation/config/http.txt http.extraHeader:: · line 83
Quoted 9 lines · Piotr Szlazak via GitGitGadget
http.cookieFile::
The pathname of a file containing previously stored cookie lines,Documentation/config/http.txt +3
-4- which should be used - in the Git http session, if they match the server. The file format - of the file to read cookies from should be plain HTTP headers or - the Netscape/Mozilla cookie file format (see `curl(1)`). + which should be used in the Git http session, if they match the server. + The file format of the file to read cookies from should be plain HTTP + headers or the Netscape/Mozilla cookie file format (see `curl(1)`).With line wrapping it is hard to see if there is any change above here, but I assume there is none?
Sorry for bad formatting, I'm still learning.
Quoted 5 lines
Documentation/config/http.txt http.extraHeader:: · line 84
Quoted 2 lines
Documentation/config/http.txt +1
-0+ Set it to empty value, to enable in-memory cookies processing.Is it understandable what "in-memory cookies processing" means to expected audience of this manual page? I somehow doubt it (I certainly do not know what you wanted it to mean).
I pushed PATCH 2, this time without curl/libcurl terminology (i.e. without calling it in-memory cookie processing). Hope it helps. I also mentioned there that http.saveCookies has no effect if '' was used for http.cookieFile.
Regards!
Signature · 1 line
Piotr Szlazak
Quoted 29 lines
https://curl.se/libcurl/c/CURLOPT_COOKIEFILE.html has this to say:
By passing the empty string ("") to this option, you enable the cookie engine without reading any initial cookies.
But http.cookiefile is also used for
CURLOPT_COOKIEJARwhen http.savecookies is true. Its documentation page does not say what would happen if you give an empty string to it.So, a casual one-line mention you added is a bit irresponsible. At least you should warn against setting http.savecookies if the user chooses to use "" for this, or better yet, fix the codepath to use http.savecookies to prevent us from writing to a file with an empty filename.
Also the libcURL documentation for
CURLOPT_COOKIEFILEhas another thing that is a bit worrysome:If you tell libcurl the filename is "-" (just a single minus sign), libcurl instead reads from stdin.
So you can easily get your git get stuck by doing
git -c http.cookiefile=- fetch https://.....as libcURL will want to read from your stdin, while you are waiting for the fetch to finish and are not typing anything?
Quoted 1 line · Piotr Szlazak via GitGitGadget
From: Piotr Szlazak <[email protected]>
Thanks.
Quoted 19 lines
Information added how to enable in-memory cookies processing. Cookies from server will be accepted and send back in successive requests within same connection.
At the moment documentation only mentions how to read cookies from the given file and how to save them to the file using http.saveCookies.
curl / libcurl will process cookies in memory if file name is blank. Check curl manpage:
https://curl.se/docs/manpage.html#-b
This is described here in more details:
https://everything.curl.dev/http/cookies/engine.html
And also explained here:
https://www.youtube.com/watch?v=V5vZWHP-RqU&t=11459sGit documentation was updated to include suggestion how to enable this by setting empty value for http.cookieFile.
Quoted 7 lines
Changes since V1:
- better explanation what in-memory processing means
- added explanation that http.saveCookies does not work if http.cookieFile was set to empty valueSigned-off-by Piotr Szlazak <[email protected]>---
Here is how I amended the log message, FYI.
doc: update http.cookieFile with in-memory cookie processing
Documentation only mentions how to read cookies from the given file and how to save them to the file using http.saveCookies.
But underlying libcURL allows the HTTP cookies used only in memory; cookies from the server will be accepted and sent back in successive requests within same connection, by using an empty string as the filename. Document this.
A few points to note:
- It is our convention to start a proposed log message by describing the current status in present tense ("currently", "at the moment", etc., are not needed).
- The observation of the current status is followed by the description of a problem the patch tries to solve.
- And then finally we give an order to the codebase to "become like so".
- Changes between iterations do not belong to the log message, as the log messages are written for those who run "git log"; to them, our previous iterations do not exist. We describe changes below the "---" lines.
Quoted 17 lines
Documentation/config/http.txt +3
-6@@ -78,16 +78,18 @@ http.extraHeader:: http.cookieFile:: The pathname of a file containing previously stored cookie lines, - which should be used - in the Git http session, if they match the server. The file format - of the file to read cookies from should be plain HTTP headers or - the Netscape/Mozilla cookie file format (see `curl(1)`). - NOTE that the file specified with http.cookieFile is used only as - input unless http.saveCookies is set. + which should be used in the Git http session, if they match the server. + The file format of the file to read cookies from should be plain HTTP + headers or the Netscape/Mozilla cookie file format (see `curl(1)`).
Documentation/config/http.txt http.extraHeader:: · line 92
Quoted 10 lines
Documentation/config/http.txt +6
-1+ Set it to empty value (''), to accept only new cookies from the server and + send them back in successive requests within same connection. NOTE that the + file specified with http.cookieFile is used only as input unless + http.saveCookies is set. http.saveCookies:: If set, store cookies received during requests to the file specified by - http.cookieFile. Has no effect if http.cookieFile is unset. + http.cookieFile. Has no effect if http.cookieFile is not set or set to empty + value ('').
I reformatted the patch and added minor word-smithing. A few points:
- Avoid unnecessary line rewrapping. This file gets formatted into HTML or manpage and formatting tools will take care of filling paragraphs.
- Use "an empty string", which is used by other parts of this file and other documentation files under Documentaiton/config/ directory, instead of "empty value". We should fix other instances of "empty value" in the file for consistency but it should be left outside the scope of this patch as #leftoverbits material.
Thanks again.
Documentation/config/http.txt +5 -1
@@ -82,12 +82,16 @@ http.cookieFile:: in the Git http session, if they match the server. The file format of the file to read cookies from should be plain HTTP headers or the Netscape/Mozilla cookie file format (see `curl(1)`). + Set it to an empty string, to accept only new cookies from + the server and send them back in successive requests within same + connection. NOTE that the file specified with http.cookieFile is used only as input unless http.saveCookies is set. http.saveCookies:: If set, store cookies received during requests to the file specified by - http.cookieFile. Has no effect if http.cookieFile is unset. + http.cookieFile. Has no effect if http.cookieFile is unset, or set to + an empty string. http.version:: Use the specified HTTP protocol version when communicating with a server.