On Wed, Apr 1, 2026 at 12:48 AM Branko Čibej <[email protected]> wrote:

> On 31. 3. 26 20:33, Nathan Hartman wrote:
>
> On Tue, Mar 31, 2026 at 2:02 PM Timofei Zhakov <[email protected]> wrote:
>
>> On Tue, Mar 31, 2026 at 7:12 PM Daniel Sahlberg <
>> [email protected]> wrote:
>>
>>> Den tis 31 mars 2026 kl 18:03 skrev Timofei Zhakov <[email protected]>:
>>>
>>>> On Tue, Mar 31, 2026 at 5:47 PM Branko Čibej <[email protected]> wrote:
>>>> >
>>>> > On 31. 3. 26 17:44, Timofei Zhakov wrote:
>>>> >
>>>> > On Tue, Mar 31, 2026 at 5:40 PM Branko Čibej <[email protected]>
>>>> wrote:
>>>> >
>>>> > On 30. 3. 26 21:59, Timofei Zhakov wrote:
>>>> >
>>>> > Hello all,
>>>> >
>>>> > The problem I would like to address is that actions like picking the
>>>> right
>>>> > branch in a repository are sometimes annoying with the current UI of
>>>> the
>>>> > command-line. Although all operations are really well-designed, the
>>>> user still
>>>> > needs to manually input the whole URL of a branch/or use the relative
>>>> path
>>>> > syntax.
>>>> >
>>>> > There is not enough user feedback. When interacting with a repository
>>>> through
>>>> > the CLI it feels like some abstract thing that exists somewhere on
>>>> the remote
>>>> > target - not a file-system tree. The current way we usually do that
>>>> is one of
>>>> > the following:
>>>> >
>>>> > 1. Imagine what we have on the server in our minds. It's often not
>>>> that big of
>>>> >    a deal to type 30 characters when switching/merging stuff.
>>>> >
>>>> > 2. Use the web interface (if any).
>>>> >
>>>> > 3. Use third-party tools like TortoiseSVN Repository Browser (and the
>>>> whole
>>>> >    ecosystem including branch picker in switch/merge which I believe
>>>> is almost
>>>> >    the same thing).
>>>> >
>>>> > 4. Borrow the right command with the exact path from another resource
>>>> (like
>>>> >    when first time checking out a new project).
>>>> >
>>>> > The 2 and 3 are not always possible as the standard web interface is
>>>> very
>>>> > limited in terms of functionality and not always do we have the
>>>> pleasure to use
>>>> > the GUI apps.
>>>> >
>>>> > What I believe we need to improve overall workflow with Subversion is
>>>> a way to
>>>> > browse repositories (without checking it out) directly in a terminal.
>>>> Luckily
>>>> > because of the way accessing remote targets is designed in
>>>> Subversion, it's
>>>> > possible to retrieve information of any arbitrary node without a need
>>>> to fetch
>>>> > it entirely.
>>>> >
>>>> > I would like to propose introducing a tool for browsing remote
>>>> repositories
>>>> > (svnbrowse). It will be a TUI (terminal user interface) like-ish
>>>> application
>>>> > where a user could navigate the repository like in a web browser.
>>>> >
>>>> > I have tried to implement it. A patch is attached below. I generally
>>>> liked the
>>>> > user experience it brings.
>>>> >
>>>> > There are also a few issues we might face when implementing this
>>>> feature;
>>>> >
>>>> > 1. It currently loads items pretty slowly; Initially I used the
>>>> svn_client API.
>>>> >    However, it creates a new ra_session per each call. I believe it
>>>> would
>>>> >    be better to switch to using svn_ra directly.
>>>> >
>>>> > 2. We might load the tree recursively for faster navigation between
>>>> >    directories. This would also allow fuzzy searching. But it makes
>>>> the
>>>> >    operation unbounded.
>>>> >
>>>> > 3. Should it work over a working copy or it's a web browser
>>>> replacement? Using
>>>> >    URL from a working copy makes it much more convenient to use as a
>>>> user only
>>>> >    needs to type 'svnbrowse' to get into it.
>>>> >
>>>> > 4. The revision issue; What revision do we use? If implementing it
>>>> like in the
>>>> >    rest of the commands (with --revision that defaults to HEAD), how
>>>> often
>>>> >    should we resolve it? The RA API (and the protocol) also allows
>>>> fetching the
>>>> >    contents of the HEAD directory (using svn_ra_get_dir2 with
>>>> >    SVN_INVALID_REVNUM revision). However, there is no way to get the
>>>> revnum
>>>> >    back (without making an extra request).
>>>> >
>>>> > 5. Should it be a separate program or something like an option in
>>>> >    'svn list --please-let-me-browse-it'. I personally think that it
>>>> should not
>>>> >    be in 'svn' command. By conceptual conventions of 'svn' there are
>>>> minimal
>>>> >    interactions and it can be used for scripting as well. I believe
>>>> it would be
>>>> >    much better to separate it into a different program.
>>>> >
>>>> > 6. I suggest limiting the scope to directory browsing as it's the
>>>> simplest to
>>>> >    implement but it improves the experience by a lot. Later on,
>>>> adding file
>>>> >    content browsing and log would be natural. Also it may act as an
>>>> >    alternative to svnmucc if a commit operation was implemented.
>>>> >
>>>> > 7. Do we use ncurses (library that the majority of TUI apps use) or
>>>> figure out
>>>> >    something else?
>>>> >
>>>> > This list is not complete and I may have missed something; To
>>>> conclude, there
>>>> > are plenty of things to be done and many problems with on obvious
>>>> solution.
>>>> > Better we try something out and get some feedback and vision of what
>>>> is to be
>>>> > improved. The prototype represents the general wireframe of what it
>>>> should
>>>> > like. I made it in like an hour to get an overall impression.
>>>> >
>>>> > Please feel free to express your opinion about this idea. Dear
>>>> svndev, it's
>>>> > time to discuss some UI things >-<
>>>> >
>>>> >
>>>> > So, if I'm reading this correctly, you're basically proposing a nicer
>>>> interface for svnmucc? Or just the read-only part of it?
>>>> >
>>>> > I'm suggesting to start with a read-only browser with an opportunity
>>>> > to implement a nicer interface for svnmucc in future.
>>>> >
>>>> > But I think the primary focus of the minimal-working prototype is the
>>>> > read-only part.
>>>> >
>>>> >
>>>> > Ack. Sounds nice. In return, I propose not doing this in C but in
>>>> Python, preferably 3.10+. We have the bindings, and this is what Python is
>>>> really good at if used correctly.
>>>>
>>>> I personally think that using anything besides C could potentially be
>>>> bad for cross-platformability (is this a word?). It's not guaranteed
>>>> that the platform that we are being run on has a Python interpreter
>>>> which is especially common on Windows.
>>>>
>>>
>>> Cross-platformability works for me!
>>>
>>> I can't remember if I added Python manually on my main computer but at
>>> least it wasn't a big effort (possibly it is a Windows Store app). I don't
>>> think Python would be a major blocker for any reasonably modern Windows
>>> machine.
>>>
>>>
>>
>> I think we should ask ourselves "how do people usually install svn
>> tools?". I think the most common way it's done on Windows is by checking
>> the relevant option in TortoiseSVN installer. Is it really gonna include a
>> Python interpreter into distribution? I assume it's generally a bad idea.
>>
>> If it doesn't, then the tools in Python would not work out of the box.
>>
>> It also requires something like an extra batch file to enable invocations
>> by typing a direct command (like svnbrowse[.exe|bat]) in a terminal.
>>
>> I don't think it's worth it.
>>
>>
>>>
>>>> The rest of the command-line tools don't use Python so why should
>>>> svnbrowse.
>>>>
>>>
>>> I don't think this is a good argument. If a certain solution makes more
>>> sense for a particular tool, we should go that way.
>>>
>>>
>>>>
>>>> Generally, with a good framework, it's not so hard to make such
>>>> applications in C.
>>>>
>>>
>>> Wasn't the a joke about 10 types of people, those who like C and those
>>> who don't? Or maybe that was about something else?
>>>
>>> That said - I firmly believe that if this is a scratch for you to itch,
>>> you should select the tool that makes the most sense to you. If you think C
>>> makes the most sense - go for it!
>>>
>>>
>> That's a good point, thanks! And not for me only, but for the rest of us
>> that care also.
>>
>>
>> --
>> Timofei Zhakov
>>
>
>
> I'm also +1 for a svnbrowse utility!
>
> I'm okay with it being implemented in C for reasons that were already
> spelled out: consistency with the other svn* binaries, less friction for
> developers, packagers, and end users, etc.
>
> The 1.14.x release notes explain [1] that Python isn't required for
> Subversion unless someone wants to build Subversion from sources, run the
> test suite, or use something that requires the SWIG Python bindings.
> Staying consistent with that as it affects our core tools is a good thing
> IMHO.
>
>
>
> I don't see this as a core tool. *shrug*
>
>
>
Why not? Could you please elaborate that?

It's still a tool that people might want to use just like svn or svnadmin.

-- 
Timofei Zhakov

Reply via email to