[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

subversion usage (was: Re: gEDA-user: Symbol submission)



On Dec 15, 2006, at 3:56 PM, DJ Delorie wrote:
There seems to be a way to deal with just sub directories of a tree,
after you have the whole tree.  If you move that subdir to a new
place, it still functions as a svn working copy of that much of the
tree, and you could then delete the rest with no impact on the
repository.

But if you do an update to a specific version (or date) after moving the subdir, it re-creates the subdir.

Which is as it should be, because you update to the specific state of the repository as of whatever revision you choose.


But if you update to HEAD, then assuming that subdirectory move was done properly (and if done from a working copy, committed back to the repo), the moved subdirectory vanishes from updated working copies.

The thing that svn can't do is check out a tree WITHOUT getting
specific subdirs.  For example, getting pcb without the documentation.

I have no idea what the tree looks like, but for argument's sake, assume it's like:


pcb/src
   /docs
   /foo
   /bar
   /whatever

One could certainly do:

$ svn checkout http://svn.pcb.org/svn/pcb ./pcb

and get the whole tree.

One could just as easily do:

$ svn checkout http://svn.pcb.org/svn/pcb/src ./pcbsrc

and get just the sources.

This is a big problem for binutils/gdb/newlib/cygwin because they
share a repository and a lot of common top-level files.

The usual subversion solution to this is to maintain the common, top- level files as their own "projects" within the repo (or even in a different repo), and include them using the svn:externals property. When using externals, a reasonable use case is to always use "tagged" versions of the external-ed modules. By subversion convention, tags are immutable, and the idea is that you always know which version of every external you use. If you were to simply use the trunk of each external-ed module, checking out your project always gives you the latest version of the submodules. When working on your project's trunk, that might be OK. But, as noted, a tag is immutable, so if someone has changed submodule foo's trunk, and someone else checks out and builds your project's release tag, they may not get what you think they should get.


(Does that make sense? Simply stated, submodules are projects unto themselves, with their own trunks, branches and tags.)

Anyways, regarding how binutils/etc are organized: if they wish to switch to svn, a repo reorganization might be in the future. That, of course, is up to the people who maintain it.

-a



_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user