# svn checkout releng/9.1 rev vs. svnweb rev



## seanacais (Oct 1, 2013)

I am trying to check out the latest 9.1 branch with security patches which I thought I would get by using `svn checkout [url=svn://svn.freebsd.org/base/releng/9.1/]svn://svn.freebsd.org/base/releng/9.1/[/url] /usr/src`. The command works fine, populates the /usr/src and looks good until the very last line where it says 
	
	



```
Checked out revision 255960
```

Hmm. That's not what I expected. When I looked at the svnweb.freebsd.org web site the latest version for the RELENG_9_1 branch should have been 255448. 255960 looks like the very last thing checked in which means it's the STABLE-9 branch?

So I clear out the /usr/src/ directory and run `svn checkout [url=svn://svn.freebsd.org/base/stable/9/]svn://svn.freebsd.org/base/stable/9/[/url] /usr/src`. Sure enough, last line says:

```
Checked out revision 255960
```
.

I'm willing to think that the svnweb information might be a few hours out of date, but these two branches shouldn't lead me to the same revision on checkout. I checked both /etc/rc.conf and /etc/make.conf. Nothing in there that I didn't expect and nothing in my environment variables either. I'm not sure what I'm missing here, but if anyone can help me out of my confusion and suggest what I'm doing wrong I'd be grateful.

Thanks,
Kevin


----------



## kpa (Oct 1, 2013)

SVN revision numbers are global across the whole repository. A commit to HEAD branch will bump up the number as will a commit to stable/9. You need to look a the last changed revision instead of the revision of the checkout.


----------



## seanacais (Oct 1, 2013)

I get that the revisions are across the whole repository and now that I've looked closer at the output of `svn info` I do see that the "Last Changed Rev" is at 255448 as expected for releng/9.1

So thank you!

Now I go ahead and rebuild world/kernel/install and reboot.  No issues at all until I log back in and issue `uname -a` which replies with 
	
	



```
FreeBSD 9.1-RELEASE-p7 #6 r255960
```

That doesn't seem quite right. The sources I built from were rev 255448. 255960 just happened to be the latest revision in the repository the last time I ran `svn update` and really has nothing to do with the sources that were used. If the revision is going to be in the `uname` output shouldn't it be the actual revision that was built?  

Please let me know if I'm doing something wrong or if there is a way to correct this?

Thanks,

Kevin


----------



## kpa (Oct 1, 2013)

The `uname -a` output will have the revision of the checkout and not the revision of the last change for the branch. This is because the revision is deduced from svnversion(1) output for the source tree. There is no problem though because you can query a revision later than the last changed revision for a branch but since there are no commits to branch after the last change the end result is the same if you query for the revision of the last change.


----------



## seanacais (Oct 1, 2013)

OK.  I think I understand but just to make sure. You're saying that if I came back at a later date and executed `svn checkout -r 255960 [url=svn://svn.freebsd.org/releng/9.1/]svn://svn.freebsd.org/releng/9.1/[/url] /usr/src/` and then looked at the sources, I would effectively have revision 255448 because none of the revisions between 255448 and 255960 touched the releng/9.1 branch (or directory in the repository).

Further `svn info` should still have the Last revision as 255448 because the command constrained it to releng/9.1. Of course the purpose of this is to be able to rebuild the world/kernel if needed and that would allow me to recreate the build environment.

Sound about right?

Kevin


----------



## kpa (Oct 1, 2013)

Yes, if there was no commit to releng/9.1 between r255448 and r255960 the sources would be identical. Only the `uname -a` output would be different on the compiled kernel.


----------

