On Wed, Apr 29, 2026 at 5:32 PM Branko Čibej <[email protected]> wrote:

> On 29. 4. 26 17:09, Timofei Zhakov wrote:
>
> On Tue, Apr 21, 2026 at 7:02 AM Branko Čibej <[email protected]> wrote:
>
>> On 20. 4. 26 18:40, Timofei Zhakov wrote:
>>
>> Hello all,
>>
>> Thanks to everyone following svnbrowse.
>>
>> I believe this project has come to a state of a decently stable milestone. It
>> is capable for general browsing around in a tree and overall interactivity
>> feels good.
>>
>> However, there are a few things which need some further attention.
>>
>> 1. Opening a file would crash the entire application; I don't know what the
>>    best way to display them would be.
>>
>>
>>
>> You could do worse than take a page from Norton Commander for DOS.
>>
>> https://en.wikipedia.org/wiki/Norton_Commander
>>
>> It was THE file browsing/display/edit tool back in the day, and still a
>> good example of how a TUI should be designed.
>>
>> -- Brane
>>
>
> I believe it would show the file in an editor/viewer. It is a good user
> experience, but also requires downloading the file which might be
> complicated to implement. It also introduces an unbounded operation.
>
>
> "Unbounded" in the sense that it can take a long time, or take a lot of
> space? The file size is known in advance, and we have cancellation
> callbacks with which we can implement timouts. Other than that:
>

Both of them I wish we could avoid. The complication would be in a sense
that a whole text file viewer would need to be implemented. Also how does
it deal with binary files? I guess special handling for svn:mime-type.

It's doable though. We just need to decide how specifically those should be
handled.


>
> svn_error_t *
> svn_client_cat3(apr_hash_t **returned_props,
>                 svn_stream_t *out,
>                 const char *path_or_url,
>                 const svn_opt_revision_t *peg_revision,
>                 const svn_opt_revision_t *revision,
>                 svn_boolean_t expand_keywords,
>                 svn_client_ctx_t *ctx,
>                 apr_pool_t *result_pool,
>                 apr_pool_t *scratch_pool)
>
>
> does everything you need.
>
> -- Brane
>


-- 
Timofei Zhakov

Reply via email to