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 Subversion
I 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.
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.
I’m also curious to know why. I’ve used SVN for years, and I got the biggest relief when git or Mercurial appeared.
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 @vvv@programming.dev).
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.What you’re looking for is git-annex
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…
Doesn’t it store deduplicated chunks?
Also for externals see: https://stackoverflow.com/questions/571232/svnexternals-equivalent-in-git/18088319#18088319
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).
Sounds like your problem could easily be solved with a symlink…
which breaks if you checkout on windows
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.
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.
You mean like
git sparse-checkout
? Admittedly experimental but usefulYeah. SVN’s ability to do that is not experimental. I’m hoping that they make that feature much easier
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.
I’m already using Git, thus my experience with Gitea. I am well versed with
svndumpfilter
andgit-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.
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?