Lars Schneider [off-list ref] writes:
Git writes --> 4 byte filename length
Git writes --> filename string
Why limit to 32GB? Perhaps NUL termination is more appropriate
here?
Git writes --> 4 byte content length
Git writes --> content string
Git reads <-- 4 byte filtered content length
Git reads <-- filtered content
Do you really need to force the sender to know the length in
advance? Together with the sequential nature of the above exchange,
i.e. the filter is forbidden from producing even a single byte of
its output before reading everything Git feeds it, you are making it
impossible to use filters that perform streaming conversion.
Of course, with the "sequential" thing, you do not have to worry
about deadlocking hence no need for poll/select, but I am not sure
that is a good thing.