显示标签为“svn”的博文。显示所有博文
显示标签为“svn”的博文。显示所有博文

2009年4月6日星期一

svn merge

把分支merge到trunk,一般有几种方法,这里假设分支(my-branch)的创建的版本为100,最后修订的版本为200:

在trunk的工作copy目录下
1. 把分支合并到主干
svn merge -r 100:HEAD http://服务器/repos/branches/my-branch

svn merge -r 100:200 http://服务器/repos/branches/my-branch

2.分支的部分修改合并到主干
svn merge -r 100:150 http://服务器/repos/branches/my-branch
但要注意在下次再合并时,是从151开始
svn merge -r 151:HEAD http://服务器/repos/branches/my-branch

svn merge -r 151:200 http://服务器/repos/branches/my-branch

3.只合并指定版本,一般用于错误修订。在修改了某个错误时,产生一个版本号,这里假设为190,把该版本合并到trunk
svn merge -c 190 http://服务器/repos/branches/my-branch

merge还有个功能,就是回到某个版本,merge还可以倒着来,很不常用。
svn merge -r 200:150 http://服务器/repos/branches/my-branch
其实就是使用150这个修订版本,当然可以使用svn update -r 150是一样的。

2009年1月7日星期三

解决svn通过https访问资源服务,方法诡异

在一次使用中出现以下信息:
$ svn commit -m ''
svn: 提交失败(细节如下): svn: 无法识别的URL方案(一般需要svn://,http://,file://等开头)“https://xxx/svn/trunk”

说明我的svn客户端不能通过https访问资源服务,缺少什么?再看下其它信息:

$ svn --version
svn,版本 1.5.5 (r34862) 编译于 Jan 5 2009,23:57:18 Copyright (C) 2000-2008 CollabNet. Subversion is open source software, see http://subversion.tigris.org/ This product includes software developed by CollabNet (http://www.Collab.Net/). 可使用以下的版本库访问模块: * ra_svn : 使用 svn 网络协议访问版本库的模块。 - 处理“svn”方案 * ra_local : 访问本地磁盘的版本库模块。 - 处理“file”方案

原来通过http访问是没问题的,说明这个svn缺少ssl支持。

回想前面安装svn1.5.5是没有把ssl编译进去,可能这里出了问题。
$sudo apt-get install libssl-dev

重新安装subversion1.5.5
$ ./configure --with-ssl
这里没有问题,但是后面死活安装不上(make就不通过)。


既然我没安装成,这时我想卸载以前安装的subversion,再重新安装,于是就
$sudo apt-get remove subversion
完成后,看看还存在不?奇迹发生:
$svn --version
svn,版本 1.5.5 (r34862)
编译于 Jan 7 2009,23:26:00

Copyright (C) 2000-2008 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

可使用以下的版本库访问模块:

* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
- 处理“http”方案
- 处理“https”方案
* ra_svn : 使用 svn 网络协议访问版本库的模块。
- 处理“svn”方案
* ra_local : 访问本地磁盘的版本库模块。
- 处理“file”方案
* ra_serf : Module for accessing a repository via WebDAV protocol using serf.
- 处理“http”方案
- 处理“https”方案

看到和上面的版本信息不同的地方,就是已经有处理https的方案,这么说已经支持了https。试了一下以前不能checkout的https资源,现在可以了。无意中解决这个问题。在安装libssl-dev时提示要重启机器,我没重启,后来临睡前重启了一下机器,再做了remove subversion的操作,就这样了。

总之原因比较诡异,现在想想可能有:重启机器、删除以前版本(以前是1.4.6),那个呢?

还是洗洗睡去!

2009年1月5日星期一

subversion升级

在本机的ubuntu下搭建了svn服务器,从服务器上checkout工程(subversion是1.4.6),一直使用很好,某天给eclipse装上svn插件后(是1.5.x),使用后就不能使用cmd操作svn,总是报出版本太旧的信息。于是想到升级。

1.下载expat-2.0.1.tar.gz
地址为:http://downloads.sourceforge.net/expat/expat-2.0.1.tar.gz
$ tar xvfz expat-2.0.1.tar.gz
$ cd expat-2.0.1
$ ./configure
$ make
$sudo make install

2.到此页面:
http://subversion.tigris.org/servlets/ProjectDocumentList?expandFolder=254&folderID=260
下载subversion-1.5.5.tar.gz和subversion-deps-1.5.5.tar.gz

3.放入同一个目录下,解开:
$tar zxvf 这2个包
$cd subversion-1.5.5
$./configure
看到有人使用,可以试试:
./configure --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr/ --with-swig=/usr/local/bin/swig PYTHON=usr/bin/python2.5 PERL=/usr/bin/perl5.8.8 --with-ssl
$make
$sudo make install
$svn --version
可以看到是1.5.5。

2009年1月4日星期日

svn忽略某些文件

1.在资源管理器里的svn以及eclipse的svn插件下和容易操作,选择要忽略的文件和文件名,右键添加至svn:ignore即可。

2.但在cmd下却没这么好使,需要费点事。
在checkout的工程下创建.svnignore文件,把你想要忽略的文件名,可以使用通配符写入文件。svn propset svn:ignore -F .svnignore .以后使用svn status就不会有任何。

3. 修改全局配置
修改~/.subversion/config,去掉global-ignore的注释信息
$ vi ~/.subversion/config

[miscellany]
### Set global-ignores to a set of whitespace-delimited globs
### which Subversion will ignore in its 'status' output, and
### while importing or adding files and directories.
global-ignores = *.plt *.dat *.mod *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store

要忽略的加在后面即可,空格分割。

2008年12月7日星期日

svn server配置记录

前面安装了apache2,现在就用上了。
请参看:http://zhuxuezheng.blogspot.com/2008/12/apache2.html

1.安装subversion(ubuntu一般自带就安装好了)
sudo apt-get install subversion

2.使用套件
sudo apt-get install libapache2-svn

3.建立svn仓库(svn server端)
sudo svnadmin create /work/svnrepos/shamrock
这里在目录/work/svnrepos/下创建一个svn库shamrock。以后可以在svnrepos下创建更多的库,所有的都集中在svnrepos下,好管理。对一个公司来说规划版本库也是一项小的工作,非常有必要。

4.设置权限
这里的对版本库的权限要和apache2的用户权限一样(是文件/etc/apache2/envvars里配置的),要不然会报权限错误。apache2是www-data:www-data,
所以在svnrepos目录下执行sudo chown -R www-data:www-data shamrock

5.配置apache2
编辑/etc/apache2/下的httpd.conf(其实修改apache2.conf是一样的,但这样作更好点),这个文件默认是空的。添加的内容如下:


这里最好使用SVNParentPath,指向/work/svnrepos,以后访问库时,可统一使用url为:http://ip/svn/库名,不用每个库都配置一个url。
例如访问shamrock库:http://ip/svn/shamrock。

6.访问svn用户
上图你可能已经注意到
AuthUserFile /etc/subversion/passwd

这个文件是没有的,创建passwd文件,用来存放访问svn的用户名和密码。
执行命令sudo /usr/local/apache2/htpasswd /etc/subversion/passwd [在此输入用户名]
回车后输入密码。多次使用创建多个帐号。

7.启动apache2
sudo /etc/init.d/apache2 restart

访问
http://localhost/svn/shamrock

8.结构化库
在某一目录(如home)下执行svn co http://localhost/svn/shamrock
发现server上的shamrock被checkout(上面的co就是checkout)到本地。
到shamerock下,执行
svn mkdir trunk
svn mkdir branches
svn mkdir tags

再刷新http://localhost/svn/shamrock页面,是不是已经看到这个结构。
操作完home下的shamrock就可以删除了。其余的事情就是开发了。