-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Martin Hejl wrote:
> Hi Charles,
> 
>> This might be one benefit to subversion.
> It might be (I don't know, I've not used subversion so far). But the
> problem I see for buildtool is not so much that it's too hard to fetch a
> file for a specific branch, but rather that buildtool currently isn't
> fetching anything other than HEAD. So, one would have to make pretty
> much the same changes to buildtool, wether we're using subversion or
> not. Wether the url created is
> <base-URL>/tags/something/filename
> (for subversion) or
> <base-URL>filename?rev=HEAD&only_with_tag=something
> (for viewcvs) seems to be an implementation detail to me.
> Actually, that could be something to try:
> * add a branch in CVS for each release
> * append "&only_with_tag=something" to each URL to fetch from viewcvs
> (based on wether the user supplied a branch tag or not). Of course, this
> would only work if the initial checkout of buildtool was done for the
> right branch too.
> 
> This _could_ work (basically, it's along the lines of what Erich
> suggested).

You don't understand how subversion works.  It's like a file-system and
making a tag or branch is like copying a directory.  Everything
underneath is copied too.

Sorry for the long e-mail...executive summary:
*HEAD* (latest version on this branch) is not the same as
*TRUNK* (main-line development branch), at least in subversion. :)

A brief example, start with a minimal subversion repository, accessed
via the following url:

https://my.svn.org/svn/

Now let's add a project (bering-uclibc) and the 'default' structure used
when importing stuff from CVS.  We now have the following URLs:

https://my.svn.org/svn/bering-uclibc/
https://my.svn.org/svn/bering-uclibc/branches/
https://my.svn.org/svn/bering-uclibc/tags/
https://my.svn.org/svn/bering-uclibc/trunk/

After adding lots of stuff to the repository (under trunk/), you've got
a major release ready:

https://my.svn.org/svn/bering-uclibc/trunk/dir1
https://my.svn.org/svn/bering-uclibc/trunk/file1
https://my.svn.org/svn/bering-uclibc/trunk/file2
https://my.svn.org/svn/bering-uclibc/trunk/<...>

You're now ready to make a branch, so you do a *COPY* within subersion:

Copy from:
https://my.svn.org/svn/bering-uclibc/trunk/

...to:
https://my.svn.org/svn/bering-uclibc/branches/Release_1.0

Now you have:
https://my.svn.org/svn/bering-uclibc/Release_1.0/dir1
https://my.svn.org/svn/bering-uclibc/Release_1.0/file1
https://my.svn.org/svn/bering-uclibc/Release_1.0/file2
https://my.svn.org/svn/bering-uclibc/Release_1.0/<...>

So...you can set the repository root in buildtool to either:
https://my.svn.org/svn/bering-uclibc/trunk/
...or...
https://my.svn.org/svn/bering-uclibc/Release_1.0/

...and *BOTH* will work just the same, without buildtool knowing
anything about revision numbers.  The caveat is that you will always get
the *HEAD* of the particular branch you're using, but you don't always
have to get the *TRUNK*.

NOTE:  The initial "copy" in subversion is fast and 'free' (doesn't take
any extra repository space).  Only changes to the resulting branches
increase the repository size, and it should go without saying (but I'll
say it anyway! :) that after copying, changes made to one branch (ie:
trunk/file1) will not affect another branch (ie: branches/Release_1.0)
unless you explicitly merge the changes (with the various merge commands
or by manually backporting).

- --
Charles Steinkuehler
[EMAIL PROTECTED]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFEW7HHLywbqEHdNFwRAhmQAKDwiBmaCdJ7/dk3a9tu/vjxPNknCgCeIsYS
n9/hPyqmxVTDinQ5h0SKsig=
=qOdf
-----END PGP SIGNATURE-----



_______________________________________________
leaf-devel mailing list
leaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/leaf-devel

Reply via email to