> It is not possible to do this today. It would be a major rewrite of
> the client libraries to do this.
I didn't realized it would required so much work. I was thinking about
a patch that would simply change behaviour of svn command like this :
Pseudo Code
1. when an svn operation is fired
2. if .svn folder is present in folder the operation is bound to
3. # look inside this .svn folder and see if there's
4. # a "mark" indicating that the mode of this
5. # repository is in "single .svn folder"
6. if .svn folder is "marked" as "single .svn mode"
7. # we are in the root of a "single .svn" repository
8. set some variable state for further patching
9. else
10. # we are in a standard (not single .svn) repository
11. set some variable state for further patching
12. end if
13. else
14. while i can access to a parent directory
15. if a .svn folder is found in current loop directory
AND .svn folder is "marked" as "single .svn mode"
16. we found the .svn root
17. end if
18. end while
19. if .svn root was found
20. set some variable state for further patching
21. else
22. no working copy found. end
23. end if
24. end if
25. end when
The single .svn folder in the root of the repository would have a
"replication" of the project's directory structure.
Eg:
|- [Dir] Mydir1
| |- [Dir] Mysubdir 1
| |- [Dir] Mysubdir 2
| |- File 1
| |- File 2
|- [Dir] Mydir2
|- [Dir] .svn
| |- [Dir] Mydir1
| | |- [Dir] .svn (Usual .svn stuff : prop-base, ...) FOR Mydir1
| | |- [Dir] Mysubdir 1
| | | |- [Dir] .svn (Usual .svn stuff : prop-base,
...) FOR Mysubdir1
| | |- [Dir] Mysubdir 2
| | | |- [Dir] .svn (Usual .svn stuff : prop-base,
...) FOR Mysubdir2
| |- [Dir] Mydir2
| | |- [Dir] .svn (Usual .svn stuff : prop-base, ...) FOR Mydir2
| |- [Dir] .svn (Usual .svn stuff : prop-base, ...) FOR repository root
The variable states kept in the here-before pseudo code will help to
patch svn logic for places in the code where we need the svn data for
a particular folder.
So, instead of searching in ./.svn/* (when action is done on folder
"Mydir1") it will search svn data in
"<repository_root_previously_found>/.svn/Mydir1/.svn/*"
same for svn move, svn add, svn delete, ...
Never looked at the svn source, but if the .svn folder to be used for
a given operation is computed at a unique place, then the second part
of the patch would go there.
As the implementation would be added as an option to "svn checkout",
it won't break anything. And third party projects could decide to
implement the new feature or not.
Bonus: convertion between a normal repository and a "single .svn"
repository (and vice versa) is very easy as it just imply
moving/create folders from one place to another.
So, as always, I guess that I forgot something very important that
would make my idea not doable. Do you have something in mind about
this ? Cause if nothing makes this patch silly, I guess it could be
quickly done, without needing a major rewrite of client libs.
--
Fabien Meghazi
Website: http://www.amigrave.com
Email: agr@amigrave.com
IM: amigrave@gmail.com
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Tue Nov 27 17:41:09 2007