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

Re: [PATCH v2 05/10] split-index.c: dump "link" extension as json

From
Derrick Stolee <stolee@gmail.com>
Date
Jun 25, 2019, 12:40 UTC
Message-ID
<98afb501-ef57-9b64-7ffb-f13cea6fd58a@gmail.com>
In-Reply-To
<CACsJy8BjhQD-g69dr-yDCycgfrHZ8xJLgjD=LanRUBxAN6=Zrg@mail.gmail.com>
On 6/25/2019 6:29 AM, Duy Nguyen wrote:
Show 24 quoted lines
> On Tue, Jun 25, 2019 at 3:06 AM Jeff Hostetler <git@jeffhostetler.com> wrote:
>> I'm curious how big these EWAHs will be in practice and
>> how useful an array of integers will be (especially as the
>> pretty format will be one integer per line).  Perhaps it
>> would helpful to have an extended example in one of the
>> tests.
> 
> It's one integer per updated entry. So if you have a giant index and
> updated every single one of them, the EWAH bitmap contains that many
> integers.
> 
> If it was easy to just merge these bitmaps back to the entry (e.g. in
> this example, add "replaced": true to entry zero) I would have done
> it. But we dump as we stream and it's already too late to do it.
> 
>> Would it be better to have the caller of ewah_each_bit()
>> build a hex or bit string in a strbuf and then write it
>> as a single string?
> 
> I don't think the current EWAH representation is easy to read in the
> first place. You'll probably have to run through some script to update
> the main entries part and will have a much better view, but that's
> pretty quick. If it's for scripts, then it's probably best to keep as
> an array of integers, not a string. Less post processing.

I don't think the intent is to dump the EWAH directly, but instead to dump a string of the uncompressed bitmap. Something like:

	"delete_bitmap" : "01101101101"
instead of
	"delete_bitmap" : [ 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1 ]
Show 6 quoted lines
> Another reason for not merging to one string (might not be a very good
> argument though) is to help diff between two indexes.
> One-number-per-line works well with "git diff --no-index" while one
> long string is a bit harder. I did this kind of comparison when I made
> changes in read-cache.c and wanted to check if the new index file is
> completely broken, or just slighly broken.

You're right that the diff of the json output is an interesting use, and the "single string" output is not helpful. What about batches of 64-bit strings? For example:

	"delete_bitmap" : [
		"0101010101010101010101010101010101010101010101010101010101010101",
		"0101010101010101010101010101010101010101010101010101010101010101",
		"0101010101010101010101010101010101010101010101010101010101010101",
		"01010101010101"
	]

This could be a happy medium between the two options, but does require some extra work in the formatter.

Thanks, -Stolee

Previous: Duy NguyenNext: Duy Nguyen
Message 21 of 43 in “Add 'ls-files --debug-json' to dump the index in json”
  1. 00/10 Add 'ls-files --debug-json' to dump the index in jsonNguyễn Thái Ngọc Duy, Jun 24, 2019
  2. 01/10 ls-files: add --json to dump the indexNguyễn Thái Ngọc Duy, Jun 24, 2019
  3. Jeff HostetlerJun 24, 2019
  4. Junio C HamanoJun 24, 2019
  5. Johannes SchindelinJun 25, 2019
  6. Duy NguyenJun 25, 2019
  7. Jeff HostetlerJun 25, 2019
  8. Thomas GummererJun 25, 2019
  9. Johannes SchindelinJun 25, 2019
  10. Johannes SchindelinJun 25, 2019
  11. Johannes SchindelinJun 25, 2019
  12. Junio C HamanoJun 25, 2019
  13. Junio C HamanoJun 26, 2019
  14. 02/10 read-cache.c: dump common extension info in jsonNguyễn Thái Ngọc Duy, Jun 24, 2019
  15. 03/10 cache-tree.c: dump "TREE" extension as jsonNguyễn Thái Ngọc Duy, Jun 24, 2019
  16. 04/10 dir.c: dump "UNTR" extension as jsonNguyễn Thái Ngọc Duy, Jun 24, 2019
  17. Jeff HostetlerJun 24, 2019
  18. 05/10 split-index.c: dump "link" extension as jsonNguyễn Thái Ngọc Duy, Jun 24, 2019
  19. Jeff HostetlerJun 24, 2019
  20. Duy NguyenJun 25, 2019
  21. Derrick StoleeJun 25, 2019
  22. Duy NguyenJun 27, 2019
  23. Jeff HostetlerJun 27, 2019
  24. Derrick StoleeJun 27, 2019
  25. Duy NguyenJun 27, 2019
  26. SZEDER GáborJul 3, 2019
  27. SZEDER GáborJul 4, 2019
  28. Duy NguyenJul 4, 2019
  29. Junio C HamanoJul 8, 2019
  30. 06/10 fsmonitor.c: dump "FSMN" extension as jsonNguyễn Thái Ngọc Duy, Jun 24, 2019
  31. 07/10 resolve-undo.c: dump "REUC" extension as jsonNguyễn Thái Ngọc Duy, Jun 24, 2019
  32. 09/10 read-cache.c: dump "IEOT" extension as jsonNguyễn Thái Ngọc Duy, Jun 24, 2019
  33. 08/10 read-cache.c: dump "EOIE" extension as jsonNguyễn Thái Ngọc Duy, Jun 24, 2019
  34. 10/10 t3008: use the new SINGLE_CPU prereqNguyễn Thái Ngọc Duy, Jun 24, 2019
  35. Johannes SchindelinJun 24, 2019
  36. Jeff HostetlerJun 24, 2019
  37. Duy NguyenJun 25, 2019
  38. Thomas GummererJun 25, 2019
  39. Johannes SchindelinJun 25, 2019
  40. Duy NguyenJun 25, 2019
  41. Johannes SchindelinJun 25, 2019
  42. Ramsay JonesJun 25, 2019
  43. Johannes SchindelinJun 26, 2019

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.