# svn madness



## dougs (Sep 20, 2012)

Hello-

Recently I had the experience of using svn and frankly I need to understand how svn works compared to cvsup.

When I compile kernels using cvsup I use a custom script that calls upon the various sup files. In this case, I used the stable-supfile to retrieve the desired sources. When the stable-supfile uses *tag=RELENG9*, I end up with the uname -a output of:


```
[11]root@test:/root # uname -a
FreeBSD test.dawnsign.com 9.0-STABLE FreeBSD 9.0-STABLE #6: Tue Jun 12 16:51:10 PDT 2012     
root@test.dawnsign.com:/usr/obj/usr/src/sys/GENERIC  i386
[11]root@test:/root #
```

However when I use svn as follows:


```
# svn checkout svn://svn0.us-west.FreeBSD.org/base/releng/9.0 /usr/src
```

I end up with this:

```
aries# uname -a
FreeBSD aries.dawnsign.com 9.0-RELEASE-p4 FreeBSD 9.0-RELEASE-p4 #0 r240684: Wed Sep 19 11:28:26 PDT 2012     
root@aries.dawnsign.com:/usr/obj/usr/src/sys/ARIES  i386
aries#
```

Why do I get STABLE when using cvsup and get RELEASE when using svn with the 'same' tag?

When I attempt to:


```
# svn checkout svn://svn0.us-west.FreeBSD.org/base/stable/9 /usr/src
```

I end up with FreeBSD 9.1-PRERELEASE! (Sorry I didn't capture the uname -a output at the time).

Why?!?

I actually want to retrieve the 9.0 stable version and not the 9.0 release version using svn. And certainly not the 9.1 prerelease version!

~Doug


----------



## phoenix (Sep 20, 2012)

Because you are using two separate tags, one for -STABLE, one for -RELEASE.    svn is doing exactly what you tell it to.  You are just telling it the wrong info.  

The correct svn source for 9-STABLE is: svn://svn0.us-west.freebsd.org/base/stable/9

You can update to that via the following commands:

```
# cd /usr/src
# svn switch svn://svn0.us-west.freebsd.org/base/stable/9
```

Note:  atm, 9-STABLE == 9.1-PRERELEASE


----------



## kpa (Sep 20, 2012)

Maybe my ascii drawing from this post clears things up for you?

http://forums.freebsd.org/showpost.php?p=187519&postcount=4

9-STABLE (stable/9 in svn) is now internally 9.1-PRERELEASE because it was called that before the 9.1-RELEASE branch RELENG_9_1 (releng/9.1 in svn) was split off from it. It will be 9.2-STABLE once 9.1-RELEASE gets released. 

There is really only one RELENG_9 branch regardless of what it's called internally.


----------



## funky (Sep 20, 2012)

dougs said:
			
		

> When I compile kernels using cvsup I use a custom script that calls upon the various sup files. In this case, I used the stable-supfile to retrieve the desired sources. When the stable-supfile uses *tag=RELENG9*, I end up with the uname -a output of:
> 
> ```
> [11]root@test:/root # uname -a
> ...


The date of the build is Jun 12, so it was actually not correctly updated. Correctly updated you should end up with the same result as with the svn source.


----------



## dougs (Sep 20, 2012)

Okay, suppose I want 9.0-STABLE and not 9-STABLE which apparently gives me 9.1-PRERELEASE, how do I do that? Do this?


```
# svn switch svn://svn0.us-west.freebsd.org/base/stable/9.0
```

There isn't a 9.0 folder in the svn site... For example, when I used cvsup on a 8.x system, I was able to stick to 8.2-STABLE simply by using tag=RELENG_8_2 in the standard-supfile and using that file as part of the cvsup process. Even if 8.3 came out, by using that tag, I was able to stay with the 8.2-STABLE version.


----------



## je33 (Sep 20, 2012)

@kpa: lol, reading the third line of your last post aloud brings back memories of the Abbott and Costello routine, "Who's on first?"!

FreeBSD repositories have been a mystery to me for ages. Your diagram helps (some).


----------



## funky (Sep 20, 2012)

dougs said:
			
		

> Okay, suppose I want 9.0-STABLE and not 9-STABLE which apparently gives me 9.1-PRERELEASE, how do I do that? Do this?
> 
> 
> ```
> ...


There is no 9.0-STABLE. There is a 9.0-RELEASE and a 9-STABLE and as phoenix stated, it is currently equal to 9.1-PRERELEASE. Soon there will be a 9.1-RELEASE and 9-STABLE will move on.


----------



## kpa (Sep 20, 2012)

I don't even know what I'm talking about!

:e


----------



## funky (Sep 20, 2012)

In addition to my previous post a translation table might help :

```
| FreeBSD Version                | CSup tag             | svn            |
==========================================================================
| 9-Stable                       | RELENG_9             | stable/9       |
| 9.1-Release + security updates | RELENG_9_1           | releng/9.1     |
| 9.1-Release, no updates        | RELENG_9_1_0_RELEASE | release/9.1.0  |
| 9.0-Release + security updates | RELENG_9_0           | releng/9.0     |
| 9.0-Release, no updates        | RELENG_9_0_0_RELEASE | release/9.0.0  |
```


----------



## kpa (Sep 20, 2012)

Mostly right but there's no RELENG_9_0_0 or RELENG_9_1_0, they are RELENG_9_0_0_RELEASE and RELENG_9_1_0_RELEASE (to be added when 9.1 is released). The RELENG_ tags are for branches of separate development lines and RELENG_*_RELEASE tags are "snapshot" tags for marking a fixed point in time in a branch.

Edit: Wops, remembered wrong, the release tags are of form RELENG_*_RELEASE
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/cvs-tags.html


----------



## dougs (Sep 20, 2012)

funky-

That table does help clarify things in my mind! It does look like I'll stick with using releng/9.0 as my tag when using svn.

In retrospect, I guess that I was thrown by the fact when I asked for 9-STABLE I ended up with a 9.0-PRERELEASE. I would have expected a version that was considered "stable". Which begs this question: is 9.0-PRERELEASE considered stable in that sense? I mean, a prerelease implies in my little mind that it's not ready for prime time. Or is it?

~Doug


----------



## kpa (Sep 20, 2012)

http://www.wonkity.com/~wblock/docs/html/stable.html#_that_word_does_not_mean_what_you_think_it_means


----------

