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

Re: [PATCH v3] git-credential-store: skip empty lines and comments from store

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 27, 2020, 20:43 UTC
Message-ID
<xmqqv9lk7j7p.fsf@gitster.c.googlers.com>
In-Reply-To
<20200427191858.GB1728884@coredump.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 16 quoted lines
> On Mon, Apr 27, 2020 at 11:09:34AM -0700, Junio C Hamano wrote:
>
>> > modified store files which might have empty lines or even comments
>> > were reported[1] failing to parse as valid credentials.
>> 
>> These files are not supposed to be viewed or edited without the help
>> of the credential helpers.  Do these blank lines and comments even
>> survive when a new credential is approved, or do we just overwrite
>> and lose them?
>
> That's a good question. In the older code we do save them, because
> credential-store passes through lines which don't match the credential
> we're operating on.
>
> But in Carlo's patch, the immediate "continue" means we wouldn't ever
> call "other_cb", which is what does that pass-through.

So, does that mean the patch that started this thread will still help users who wrote custom comments and blank lines in their credential store by letting git-credential-store start up, but leaves a ticking bomb for them to lose these precious comments and blanks once they add a new site, change password, etc., at which point the user realizes that comments and blanks are not supported after all?

Show 12 quoted lines
>> I'd rather not to do either, if we did not have to, but if it were
>> necessary for us to do something, I am OK to ignore empty lines.
>> But I'd prefer not to mix the new "# comment" feature in, if we did
>> not have to.
>> 
>> Also, triming the lines that are not empty is unwarranted.  IIUC,
>> what the "store" action writes encodes whitespaces, so as soon as
>> you see whitespace on either end, (or anywhere on the line for that
>> matter), it is a hand-edited cruft in the file.  If you ignore
>> comments, you probably should ignore those lines, too.
>
> Yeah, all of that seems quite sensible.

I think the first patch we need is a (belated) documentation patch, that adds to the existing "STORAGE FORMAT". We already say "Each credential is stored on its own line as a URL", but we do not say anything about allowing other cruft in the file. We probably should. Adding a "comment" feature, if anybody feels like it, is OK and we can loosen the paragraph when that happens.

-- >8 --
Subject: credential-store: document the file format a bit more

Reading a malformed credential URL line and silently ignoring it does not mean that we promise to torelate and/or keep empty lines and "# commented" lines forever.

Some people seem to take anything that is not explicitly forbidden as allowed, but the world does not work that way.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 Documentation/git-credential-store.txt | 4 ++++
 1 file changed, 4 insertions(+)
diff --git a/Documentation/git-credential-store.txt b/Documentation/git-credential-store.txt
index 693dd9d9d7..76b0798856 100644
--- a/Documentation/git-credential-store.txt
+++ b/Documentation/git-credential-store.txt
@@ -94,6 +94,10 @@ stored on its own line as a URL like:
 https://user:pass@example.com
 ------------------------------
 
+No other kinds of lines (e.g. empty lines or comment lines) are
+allowed in the file, even though some may be silently ignored. Do
+not view or edit the file with editors.
+
 When Git needs authentication for a particular URL context,
 credential-store will consider that context a pattern to match against
 each entry in the credentials file.  If the protocol, hostname, and
Previous: Jeff KingNext: Jeff King
Message 17 of 79 in “git-credential-store: skip empty lines and comments from store”
  1. git-credential-store: skip empty lines and comments from storeCarlo Marcelo Arenas Belón, Apr 26, 2020
  2. Eric SunshineApr 27, 2020
  3. Carlo Marcelo Arenas BelónApr 27, 2020
  4. git-credential-store: skip empty lines and comments from storeCarlo Marcelo Arenas Belón, Apr 27, 2020
  5. Jeff KingApr 27, 2020
  6. Carlo Marcelo Arenas BelónApr 27, 2020
  7. Eric SunshineApr 27, 2020
  8. Junio C HamanoApr 27, 2020
  9. Jeff KingApr 27, 2020
  10. git-credential-store: skip empty lines and comments from storeCarlo Marcelo Arenas Belón, Apr 27, 2020
  11. Philip OakleyApr 27, 2020
  12. Carlo Marcelo Arenas BelónApr 28, 2020
  13. Philip OakleyApr 29, 2020
  14. DirkApr 27, 2020
  15. Junio C HamanoApr 27, 2020
  16. Jeff KingApr 27, 2020
  17. Junio C HamanoApr 27, 2020
  18. Jeff KingApr 27, 2020
  19. Carlo Marcelo Arenas BelónApr 28, 2020
  20. Carlo Marcelo Arenas BelónApr 27, 2020
  21. Jonathan NiederApr 28, 2020
  22. Jeff KingApr 28, 2020
  23. Carlo Marcelo Arenas BelónApr 28, 2020
  24. Jeff KingApr 28, 2020
  25. Carlo Marcelo Arenas BelónApr 28, 2020
  26. Stefan TaunerApr 28, 2020
  27. Junio C HamanoApr 28, 2020
  28. Carlo Marcelo Arenas BelónApr 28, 2020
  29. Junio C HamanoApr 28, 2020
  30. 0/4 credential-store: prevent fatal errorsCarlo Marcelo Arenas Belón, Apr 28, 2020
  31. 1/4 credential-store: document the file format a bit moreCarlo Marcelo Arenas Belón, Apr 28, 2020
  32. 2/4 git-credential-store: skip empty lines and comments from storeCarlo Marcelo Arenas Belón, Apr 28, 2020
  33. Eric SunshineApr 28, 2020
  34. Carlo Marcelo Arenas BelónApr 28, 2020
  35. 3/4 git-credential-store: fix (WIP)Carlo Marcelo Arenas Belón, Apr 28, 2020
  36. Eric SunshineApr 28, 2020
  37. Carlo Marcelo Arenas BelónApr 28, 2020
  38. 4/4 credential-store: make sure there is no regression with missing schemeCarlo Marcelo Arenas Belón, Apr 28, 2020
  39. Eric SunshineApr 28, 2020
  40. Junio C HamanoApr 28, 2020
  41. Junio C HamanoApr 28, 2020
  42. credential-store: warn instead of fatal for bogus lines from storeCarlo Marcelo Arenas Belón, Apr 29, 2020
  43. Junio C HamanoApr 29, 2020
  44. Carlo Marcelo Arenas BelónApr 29, 2020
  45. Junio C HamanoApr 29, 2020
  46. 0/2 credential-store: prevent fatal errorsCarlo Marcelo Arenas Belón, Apr 29, 2020
  47. 1/2 credential-store: warn instead of fatal for bogus lines from storeCarlo Marcelo Arenas Belón, Apr 29, 2020
  48. Junio C HamanoApr 29, 2020
  49. Junio C HamanoApr 29, 2020
  50. 2/2 credential-store: warn for any incomplete credentials instead of usingCarlo Marcelo Arenas Belón, Apr 29, 2020
  51. Junio C HamanoApr 29, 2020
  52. Carlo Marcelo Arenas BelónApr 29, 2020
  53. Junio C HamanoApr 29, 2020
  54. credential-store: warn instead of fatal for bogus lines from storeCarlo Marcelo Arenas Belón, Apr 29, 2020
  55. Junio C HamanoApr 29, 2020
  56. Junio C HamanoApr 29, 2020
  57. Carlo Marcelo Arenas BelónApr 30, 2020
  58. credential-store: warn instead of fatal for bogus lines from storeCarlo Marcelo Arenas Belón, Apr 30, 2020
  59. credential-store: warn instead of fatal for bogus lines from storeCarlo Marcelo Arenas Belón, Apr 30, 2020
  60. credential-store: warn instead of fatal for bogus lines from storeCarlo Marcelo Arenas Belón, Apr 30, 2020
  61. Junio C HamanoApr 30, 2020
  62. Junio C HamanoApr 30, 2020
  63. Carlo Marcelo Arenas BelónMay 1, 2020
  64. Junio C HamanoMay 1, 2020
  65. Carlo ArenasMay 1, 2020
  66. Junio C HamanoMay 1, 2020
  67. Carlo Marcelo Arenas BelónMay 1, 2020
  68. Junio C HamanoMay 1, 2020
  69. credential-store: warn/ignore for bogus lines from store fileCarlo Marcelo Arenas Belón, May 1, 2020
  70. 2/1 credential-store: warn also for store and eraseCarlo Marcelo Arenas Belón, May 1, 2020
  71. Junio C HamanoMay 1, 2020
  72. credential-store: ignore bogus lines from store fileCarlo Marcelo Arenas Belón, May 2, 2020
  73. Junio C HamanoMay 2, 2020
  74. Carlo Marcelo Arenas BelónMay 2, 2020
  75. Carlo Marcelo Arenas BelónMay 2, 2020
  76. Junio C HamanoMay 3, 2020
  77. Jeff KingMay 3, 2020
  78. Carlo Marcelo Arenas BelónMay 2, 2020
  79. credential-store: ignore bogus lines from store fileCarlo Marcelo Arenas Belón, May 2, 2020

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.