this post was submitted on 17 Apr 2024
11 points (86.7% liked)

Selfhosted

40664 readers
160 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 2 years ago
MODERATORS
11
submitted 8 months ago* (last edited 8 months ago) by cygon to c/selfhosted
 

I already fear that this may be a bit too specific since it's a bit of a niche need, but here goes:

I'm hosting several Subversion repositories for my indie projects. So far, I just did the plumbing by hand and wrote Apache configs (hosting via mod_dav_svn).

But if I look at all those shiny tools Git users can wield, I really wish for something with a sleek UI and the option to create repositories, manage users and display source and markdown that worked with Subversion.

I know (and have tried):

  • Gitea - What I want, except Gitea is for... Git and I do Subversion. Gitea manages users, created repositories and displays their contents in a clean, useful way.

  • VisualSVN Server - This would be what I'm looking for (WebUI), but it is Windows-only (I don't get it, who in their right mind hosts development stuff on a Windows clunker?)

  • Redmine - It's a Ruby on Rails project. With the Zenmine theme, it almost looks like GitHub, but Redmine shies away from repository management and focuses more on project/issue management.

  • Trac - A bug tracker with Subversion browser and timeline, written in Python. While aforementioned part is great, it can also (barely) manage users and permissions for a repository using an add-in.

As well as various abandoned PHP projects with grotesque UIs and which either never fully worked or broke somewhere along the road from PHP 5 to PHP 8.

Can anyone recommend a decent WebUI for Subversion that would let me create repositories, manage users and view repository contents in the browser? Eye candy preferred, as I'm already doing everything I need via CLI tools and WebSVN.


Gentlemen and -women, I have posted this in the hope that someone might know of a niche Subversion UI that I have missed so far. I know everyone means well, but up to here, zero people offered recommendations and all comments either have me to explain why I use Subversion or recommend Git outright

Why I use SubversionI am already using Git where it makes sense, but believe it or not, apart from being a distributed VCS with decent merging, Git plays a weak game, especially in terms of branching, versatility, binary files and external linking.

I have several use cases, including game development assets weighing in from tens to hundreds of megabytes each, to audio production with 5-channel float64 clips that I store uncompressed and edit / clean incrementally. And I link individual assets, deep in the directory tree, into my projects. Absolutely trivial in Subversion, a complete blocker in Git. Even if Git somehow suddenly could do what I need, I wouldn't want to tackle such a migration for at least a few more years.

all 18 comments
sorted by: hot top controversial new old
[–] [email protected] 24 points 8 months ago (3 children)

The clear answer is: don't use subversion. There's really no reason not to use git, since you can use git just like subversion if you want to.

[–] [email protected] 5 points 8 months ago

I’m also curious to know why. I’ve used SVN for years, and I got the biggest relief when git or Mercurial appeared.

[–] cygon 5 points 8 months ago* (last edited 8 months ago) (3 children)

I'm already using Git for source code related versioning, but some use cases involving large binary files with partial updates aren't well covered by Git (I've gone into some detail in my reply to @[email protected]).

There's also the lack of svn:externals in Git. Git submodules can only point to a whole different repository as far as I'm aware.

[–] [email protected] 4 points 8 months ago (1 children)

What you're looking for is git-annex

[–] cygon 6 points 8 months ago (1 children)

That would (just like Git LFS) store full, separate copies of every single version of the large files I manage. I really, really don't want to go there, nor do I have even a fraction of the hard drive space for that...

[–] [email protected] 1 points 8 months ago

Doesn't it store deduplicated chunks?

[–] [email protected] 2 points 8 months ago (1 children)
[–] cygon 2 points 8 months ago (1 children)

That's what I meant when I wrote "Git submodules can only point to a whole different repository" - they can't point to a path inside a repository, only to another repository root. That unfortunately renders them useless for me (I'd have to set up in the order of hundreds of small repositories for the sets of shared data I have).

[–] [email protected] 1 points 8 months ago (1 children)

Sounds like your problem could easily be solved with a symlink....

[–] DampCanary 1 points 8 months ago

which breaks if you checkout on windows

[–] MeanEYE 1 points 8 months ago

While true, Git also supports symlinks, so nothing is stopping you from having modules/ directory or something similar and then in link part of it elsewhere in your project.

[–] [email protected] 1 points 8 months ago (1 children)

One thing I like about SVN that, at least in the past, was not easy with Git is checking out sub directories.

One thing I do is check out svn+ssh://svn/home/svn/configs/server/etc and copy the .svn file over to /etc so that I can check in changes from the actual directory on my servers at home. I never found a good way to do that on Git. But, admittedly, I haven't looked in a couple years.

[–] [email protected] 3 points 8 months ago (1 children)

You mean like git sparse-checkout? Admittedly experimental but useful

[–] [email protected] 2 points 8 months ago

Yeah. SVN's ability to do that is not experimental. I'm hoping that they make that feature much easier

[–] [email protected] 9 points 8 months ago (1 children)

I don't get it, who in their right mind hosts development stuff on a Windows clunker?

Same question, but Subversion. Switch to git. Import your repos with git-svn.

[–] cygon 7 points 8 months ago (1 children)

I'm already using Git, thus my experience with Gitea. I am well versed with svndumpfilter and git-svn to extract and migrate individual Subversion repositories to Git.

I'm not only hosting code, but I have several projects involving large binary files with binary changes. Git's delta compression algorithm for binary files is so-so. Git LFS is just outsourcing the problem. Even cloning with --depth 1 --single-branch gives me abysmal performance compared to Subversion.

So I'm still looking for a nice WebUI to make my life with the Subversion repositories I have easier.

[–] [email protected] 3 points 8 months ago

That's interesting, okay. Is svn doing compression of those binaries for you?

Not to say "you're holding it wrong", but I'm curious about your workflow here. You clone these binaries every time you come back to a project?