[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

[PATCH] Separated meta directories

From: Kumaran Santhanam <kumaran_at_tigris.org>
Date: 2003-08-30 04:49:56 CEST

Hi folks -

Attached is the promised patch that attempts to provide the
separated meta directory functionality. Please be advised that
this is a first cut, so it should not be used on production data.

First, I will describe the user-level interface, then go into the
technical details of how it works. Please read all of this
before trying the patch.

User-level interface
--------------------
There are two ways to access the feature: through the
~/.subversion/config file, or through command-line switches
passed to the 'svn checkout' command.

$ svn checkout -s URL PATH

This checks out the repository at URL into PATH, separating the
meta-data so that it does not appear under PATH.

$ svn checkout -e URL PATH

This is the same as the current checkout behavior, embedding
.svn/ directories under each directory in PATH.

The config file has the following option:

separate-meta-data = yes

This setting only affects 'svn checkout' when no switch is
provided. Setting it to 'yes' causes 'svn checkout -s' to be
default. Setting it to 'no' causes 'svn checkout -e' to be
default.

Once a working copy is checked out, it is manipulated just like
before. In fact, different working copies can have different
meta-data handling:

$ svn checkout -s http://url/repo1 /path/to/mercury
$ svn checkout -e http://url/repo2 /path/to/venus

Mercury has separated meta-data, while Venus has embedded .svn/
directories. SVN commands within each working copy directory
behave as expected.

Note: svn cp and svn mv are not yet implemented. I'll hopefully
get to those in a few days, but I wanted to at least get this
patch out to the list before the weekend.

Also, there are no working copy management commands. I'd like to
get the basic features working before implementing those.

Technical Details
-----------------
- Embedded .svn/ directories behaves as before. There is no
change in the handling of these, except for during log execution
when any references to .svn/ directories have absolute paths. Of
course, after log execution, the references are deleted, so there
shouldn't be any permanent absolute path references in the .svn/
directories.

- Upon checkout of a separated meta-data working copy, the file
~/.subversion/meta/index is updated. It contains a mapping
between working copy paths and meta data caches. The caches are
simply a unique number derived from the UTC time on the
particular workstation. I'm open to better suggestions, but for
now this works and has the benefit of being lexicographically
sorted.

- The cache directory trees are essentially mirrors of what's in
the working copy, minus the files themselves.

- There is no more complex handling than this: the next few
phases of this feature should be smarter about leaving dangling
cache directories and index entries.

Before I go much further on this, I would really appreciate it if
a branch could be created for this feature. It would make things
much easier going forward. Please let me know if this would be
possible.

Thanks,
Kumaran

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Received on Sat Aug 30 04:50:52 2003

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.