Subversion

Subversion "SVN" is a version control system, see http://subversion.apache.org/ and http://en.wikipedia.org/wiki/Subversion_(software )

Currently (2022-04) at version 1.14.2

See also: http://tortoisesvn.tigris.org - Subversion client


TkRev (formerly tkcvs) as of version 8.0 now supports Subversion in addition to CVS.


CrowTDE has subversion integration in version 0.5.


RLH 2018-02-06 - Since you can use any language to make subversion hook scripts, I wonder if any Tcl'ers have done so and would share.


SEH 20220309 -- Subversion has the (I think) unique property that arbitrary subsets of files and directories can be imported into and exported out of arbitrary locations in a Subversion repository file tree. This contrasts with e.g. git and fossil where you typically have to download, check out and sync the entire project in order to do work.

Subversion also allows you to dump arbitrary subsets of a repository containing arbitrary ranges of commits. You can use such a dump to create a new repository, use the new repository for arbitrary development tasks, then dump all or part of the repository and re-integrate the dump to an arbitrary location in the original repository.

Because of these features (among others), I've been using Subversion not as a SCM tool but as a backup/archive/versioned file store utility. I've always wanted a tool that would allow me to craft a lifetime personal archive (see the FILTR), that was independent of computer architecture or operating system, that could accommodate the many computing devices I've used in work and personal environments without being tied to any of them. Something that would allow me both to deploy and retrieve work to/from heterogeneous systems, and to collate, organize, annotate and introspect my work over long time scales. Subversion is the tool that comes closest to letting me do that. Other tools I've tried have been too inflexible/unportable/buggy/immature.

The one thing Subversion doesn't do more or less out of the box, is automatically merge an arbitrary directory into an arbitrary Subversion repository location, taking into account all edits, file deletes and new files. So I wrote a script to do just that. Subversion comes with a perl script that purports to do the job, but it's old, thousands of lines long, and has crufted into virtual uselessness. New Subversion features added in the past decade or so have allowed me to make short work of the task.

svnsync.tcl