3月
21
1月
26
2。简单管理。
建立svn,使用文件服务器来简单的管理单一项目。
版本截图:100

解决了状态1下的各种代码交流问题。现在的交流模式方式如下图所示:

程序员中存在的错误观点:但是在刚开始使用时,很多人没有意识到meger的作用,不敢update,生怕update之后自己所修改的代码就没有了。
问题:没办法维护两个不同的版本。
由于项目的发展,第一个beta版本放出,而我们开始进行下一个版本的开发,而我个人也希望对一些代码进行整理。我初始使用了建立大量的其他文件,比如index2.php作为新版,而保持原有的index.php不变。
1。新的不能改动原有文件,因为新版还不完整,将导致错误;
2。原有文件中的bug修正可能在新的版本中同样需要,而我常常忘记把改动复制到新版。
陷入文件和版本的混乱,增加了对文件控制的复杂度。
截图rep1530

3。subversion目录重新建构
开始使用分支:
个人分支:
我开始在建立rolelnc的个人分支,在自己的目录下进行新的开发,而不影响整个以前的版本。
而对主干只进行bug的修复
我可以随时使用meger命名来将主干的bug修复合并到我自己开发的分支上。
待我个人开发的新的功能完成时,我再使用meger命名把我的分支合并到主干上。
开发完毕之后,我可以再使用meger把我的修改合并到主干上。
流程:

截图1700

版本分支:
与个人分支相似,不过是多人对这一个分支进行开发,或者仅仅是一个版本的存档。不过后期我看到的资料显示,在tags目录下建立版本分支,如 http://192.168.0.2/svn/tags/version0.9/
4。目前的状态 截图head resp 3788

注:为了减少图片大小而展示更多的内容,以上部分图片经过了Fireworks处理。
Defined tags for this entry: subversion, 技术
1月
16
Subversion 1.2(最终版)
- 本书的单页HTML版本 (1.0MB)。
- 本书的多页HTML版本 。
- 本书的PDF版本 (1.5MB)。
- 本书的Docbook XML源文件。
来源:Subversion中文站
这个站有很多关于subversion的文章。建议大家去看看。
我很感谢这个站,subversion的手册翻译的很好。我的subversion第一堂课使用的就是这个。
Defined tags for this entry: subversion, 技术
1月
15
很多人开始使用subversion之后,就想着,要建立一个测试用的服务器,不需要把文件update到本地再进行测试。这个在我以前的一篇文章中写过,但当时理解也不深,也写得很含糊。现在连自己都看不懂了。
原理: 基于subversion的钩子,即hook。在subversion执行一个操作时,那会相应的首先去调用相关的钩子程序(如果存在的话)。那么实现一个同步的测试服务器,我们只需要在一个用户执行完毕一个commit操作之后,让钩子程序去自动更新测试服务器的文件即可。通过这个思路,我们需要作的就是建立一个post-commit的钩子。
钩子文件在你的svn源目录下,即存放subversion版本数据的文件夹。以前面我写的两篇文章中的情况为例,
文一(win)的钩子文件应该在 E:\svn2\hooks
文二(Linux)的钩子文件应该在 /var/svn/hooks
文件夹内已经存在有一些.tmpl文件,这些只是一些模板(TeMPLate)或者说是示例文件。它们不会被执行。
先以linux为例,来讲讲如何构建一个同步的测试服务器127.0.0.2(在Ubuntu 6.10, apache2.0.55,subversion1.3.1下调试通过。2007/1/18)
我们假设你已经建立好了一个apache+subversion的环境。
0.准备工作
为同步服务器建立访问subversion版本的权限,清参考以前的文章
sudo htpasswd2 /etc/apache2/dav_svn.passwd server
1. 使用checkout建立一个工作复本
说明:我们必须把/var/www/127.0.0.2目录的所有者设置成apache的运行者(www-data), 他必须对文件夹具有完全的可读写操作权限。我使用
这样的方式来避免把/var/www/127.0.0.2目录设置成777的权限。
另外可以执行下面的代码实现相同的功能:
cd /var/www
sudo mkdir /var/www/127.0.0.2 #建立测试服务器站点根目录
sudo svn checkout http://127.0.0.10/lab.rollenc.com/trunk 127.0.0.2 #取出subversion上的文件,可能需要密码
sudo chown -R www-data.www-data 127.0.0.2/ #把文件用户修改成apache的执行用户
之后使用
应该可以得到
2。设置apache,把你需要的域名指向这个文件夹。
输入以下文字
启用他
重启apache。
在浏览器上使用http://127.0.0.2可以浏览到你subversion上最新版本
3。建立钩子
现在是关键的一步,我们需要使我门的测试服务器127.0.0.2进行同步更新:
在/var/svn/hooks/目录下建立post-commit文件
输入以下内容
说明:REPOS即第一个变量$1是subversion数据库的地址,REV即第二的变量$2是commit之后的版本号。
编辑完毕后设置文件权限为可执行:
搞定。
下面来试一下,同步有没有成功。
再建立一个工作副本,然后添加或者修改一些东西,最后上传。
以下的操作是在客户端中进行了,不需要在服务器断进行。
在浏览器中你设定的同步服务器地址http://127.0.0.2/phpinfo.php,愿上帝保佑你的成果一切正常。可以看到phpinfo的信息。
如果不正常你可以稍微修改上面使用#注释掉的命名,使其输出的文件目录符合你的系统。
去掉#,重新运行,并通过查看上面设置的txt来获得一些信息。
第一句[#echo ...]是获取当前的执行用户(如果正常应该与apache的执行用户和测试服务器文件所有者相同),$REPOS,$REV是获得的两个参数
第二句[#svn...]是把update的获取update的结果,一般错误信息在这里可以得到。
在Windows下我使用同样的方法试图建立钩子,但没有成功。感谢水蓝色青蛙(QQ:565259)的帮助,windows下的钩子问题解决。
以下是方法和代码,在windows XP下测试成功。
1,2步很类似,不再重复了
经过1,2步的操作之后,DIR的值E:/htddocs/testserver.lab.rollenc.com 为测试服务器的根目录。如果是win2003,你可能还需要参照ubuntu的方法设置一些权限。
第三步的中的钩子程序名称需要改为:post-commit.bat写成如下:
-------------以下内容已删除-----------
按理说,和linux的执行是一样的,但就是出错。
如commit一个test文件,则显示错误信息为:
而此时,test.php已经commit成功,在subversion数据库中已经存在有本次记录,但E:\htdocs\testcopy工作复本还是显示为没有commit。需要同步的E:/htdocs/testserver.lab.rollenc.com也没有update。
我个人压根不懂windows下的编程,以上代码是边google边学来的。所以还是希望有达人帮忙,好让我完成这篇blog,我也好给大家一个完整的交待。
最终参考了一些文档,还是没能解决win下的问题,我把测试和输出结果放下面:
@echo off
echo "" > E:/hookLog.txt
echo "1" >> E:/hookLog.txt
SET REPOS=%1
echo "2" >> E:/hookLog.txt
SET USER=%2
echo "3" >> E:/hookLog.txt
echo %REPOS%, %USER% >> E:/hookLog.txt
SET SVN="D:/subversion/bin/svn.exe"
echo "4" >> E:/hookLog.txt
SET DIR="E:/htdocs/testserver.lab.rollenc.com"
echo "5" >> E:/hookLog.txt
REM call %SVN% update %DIR% >> E:/hookLog.txt
REM SET PATH=D:/subversion/bin/
REM svn update "E:/htdocs/testserver.lab.rollenc.com" >> E:/hookLog.txt
(call %SVN% update "E:/htdocs/testserver.lab.rollenc.com") >> E:/hookLog.txt
echo "6" >> E:/hookLog.txt
REM是注释,REM掉了我使用的很多种测试,切换REM可以运行其它的一些测试,但是全部无效。
以下是上面代码的输出:
""
"1"
"2"
"3"
E:/svn2, 54
"4"
"5"
"6"
1-6全部正常输出,惟一的是 svn update这一句没有输出任何东西。
完全放弃!等待达人。。。。
------------以上内容已删除-----------------
有问题也欢迎在下面贴出,乐意帮忙:)
原理: 基于subversion的钩子,即hook。在subversion执行一个操作时,那会相应的首先去调用相关的钩子程序(如果存在的话)。那么实现一个同步的测试服务器,我们只需要在一个用户执行完毕一个commit操作之后,让钩子程序去自动更新测试服务器的文件即可。通过这个思路,我们需要作的就是建立一个post-commit的钩子。
钩子文件在你的svn源目录下,即存放subversion版本数据的文件夹。以前面我写的两篇文章中的情况为例,
文一(win)的钩子文件应该在 E:\svn2\hooks
文二(Linux)的钩子文件应该在 /var/svn/hooks
文件夹内已经存在有一些.tmpl文件,这些只是一些模板(TeMPLate)或者说是示例文件。它们不会被执行。
先以linux为例,来讲讲如何构建一个同步的测试服务器127.0.0.2(在Ubuntu 6.10, apache2.0.55,subversion1.3.1下调试通过。2007/1/18)
我们假设你已经建立好了一个apache+subversion的环境。
0.准备工作
为同步服务器建立访问subversion版本的权限,清参考以前的文章
sudo htpasswd2 /etc/apache2/dav_svn.passwd server
1. 使用checkout建立一个工作复本
cd /var/www
sudo mkdir /var/www/127.0.0.2 #建立测试服务器站点根目录
sudo chown www-data.www-data 127.0.0.2 #更改用户所有者
sudo su www-data #切换到www-data,需要使用sudo,因为超级权限可以使用任何用户,而不需要密码,执行后会发现命令提示符可能会有变化
svn checkout http://127.0.0.10/lab.rollenc.com/trunk 127.0.0.2 #取出subversion上的文件,可能需要密码
# 请保证执行checkout语句的用户是www-data,否则在以后钩子调用update时会出现无法创建或修改文件的错误
exit #退出www-data用户
说明:我们必须把/var/www/127.0.0.2目录的所有者设置成apache的运行者(www-data), 他必须对文件夹具有完全的可读写操作权限。我使用
sudo chown www-data www
sudo su www-data
这样的方式来避免把/var/www/127.0.0.2目录设置成777的权限。
另外可以执行下面的代码实现相同的功能:
cd /var/www
sudo mkdir /var/www/127.0.0.2 #建立测试服务器站点根目录
sudo svn checkout http://127.0.0.10/lab.rollenc.com/trunk 127.0.0.2 #取出subversion上的文件,可能需要密码
sudo chown -R www-data.www-data 127.0.0.2/ #把文件用户修改成apache的执行用户
之后使用
ls -Al 127.0.0.2
应该可以得到
drwxr-xr-x 7 www-data www-data 4096 2007-01-17 10:21 .svn
...一些其他的文件
2。设置apache,把你需要的域名指向这个文件夹。
sudo gedit /etc/apache2/sites-available/127.0.0.2
输入以下文字
<VirtualHost 127.0.0.2>
ServerAdmin rollenc@localhost.com
ServerName localhost
DocumentRoot /var/www/127.0.0.2
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/127.0.0.2>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# Uncomment this directive is you want to see apache2's
# default start page (in /apache2-default) when you go to /
#RedirectMatch ^/$ /apache2-default/
</Directory>
ErrorLog /var/log/apache2/127.0.0.2_error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/127.0.0.2_access.log combined
ServerSignature On
</VirtualHost>
启用他
sudo ln -s /etc/apache2/sites-available/127.0.0.2 /etc/apache2/sites-enabled/127.0.0.2
重启apache。
sudo apache2 -k restart
在浏览器上使用http://127.0.0.2可以浏览到你subversion上最新版本
3。建立钩子
现在是关键的一步,我们需要使我门的测试服务器127.0.0.2进行同步更新:
在/var/svn/hooks/目录下建立post-commit文件
cd /var/svn/hooks/
sudo gedit post-commit
输入以下内容
#!/bin/sh
REPOS="$1"
REV="$2"
svn update /var/www/127.0.0.2 --username server --password serverpassword
#echo `whoami`,$REPOS,$REV >> /home/rollenc/svn_hook_var.txt
#svn update /var/www/127.0.0.2 --username server --password serverpassword 2>/home/rollenc/svn_hook_log.txt
说明:REPOS即第一个变量$1是subversion数据库的地址,REV即第二的变量$2是commit之后的版本号。
编辑完毕后设置文件权限为可执行:
sudo chmod 755 post-commit
搞定。
下面来试一下,同步有没有成功。
再建立一个工作副本,然后添加或者修改一些东西,最后上传。
以下的操作是在客户端中进行了,不需要在服务器断进行。
cd /var/www
svn checkout http://127.0.0.10/lab.rollenc.com/trunk 127.0.0.6 #取出subversion上的文件作为你的工作副本,你的工作以后就在这个文件夹内展开。
#所以,不需要sudo,但要保证有127.0.0.6文件夹存在,而且可写
echo '<?php phpinfo(); ?>' > phpinfo.php #建立一个phpinfo文件
svn add phpinfo.php #把phpinfo加入版本库
svn commit #提交
在浏览器中你设定的同步服务器地址http://127.0.0.2/phpinfo.php,愿上帝保佑你的成果一切正常。可以看到phpinfo的信息。
如果不正常你可以稍微修改上面使用#注释掉的命名,使其输出的文件目录符合你的系统。
去掉#,重新运行,并通过查看上面设置的txt来获得一些信息。
第一句[#echo ...]是获取当前的执行用户(如果正常应该与apache的执行用户和测试服务器文件所有者相同),$REPOS,$REV是获得的两个参数
第二句[#svn...]是把update的获取update的结果,一般错误信息在这里可以得到。
在Windows下我使用同样的方法试图建立钩子,
以下是方法和代码,在windows XP下测试成功。
1,2步很类似,不再重复了
经过1,2步的操作之后,DIR的值E:/htddocs/testserver.lab.rollenc.com 为测试服务器的根目录。如果是win2003,你可能还需要参照ubuntu的方法设置一些权限。
第三步的中的钩子程序名称需要改为:post-commit.bat写成如下:
@echo off
SET REPOS=%1
SET USER=%2
SET SVN="D:/subversion/bin/svn.exe"
SET DIR="E:/htddocs/testserver.lab.rollenc.com"
(call %SVN% update %DIR% --username server --password serverpassword --non-interactive)
SET REPOS=%1
SET REV=%2
SET svn="D:/subversion/bin/svn.exe"
SET DIR="E:/htdocs/testserver.lab.rollenc.com"
%svn% update %DIR%
按理说,和linux的执行是一样的,但就是出错。
如commit一个test文件,则显示错误信息为:
Modified: E:\htdocs\testcopy\test.php
Sending content: E:\htdocs\testcopy\test.php
Error: Commit failed (details follow):
Error: MERGE request failed on '/lab.rollenc.com/trunk'
Error: MERGE of '/lab.rollenc.com/trunk': 200 OK (http://127.0.0.10)
而此时,test.php已经commit成功,在subversion数据库中已经存在有本次记录,但E:\htdocs\testcopy工作复本还是显示为没有commit。需要同步的E:/htdocs/testserver.lab.rollenc.com也没有update。
我个人压根不懂windows下的编程,以上代码是边google边学来的。所以还是希望有达人帮忙,好让我完成这篇blog,我也好给大家一个完整的交待。
最终参考了一些文档,还是没能解决win下的问题,我把测试和输出结果放下面:
@echo off
echo "" > E:/hookLog.txt
echo "1" >> E:/hookLog.txt
SET REPOS=%1
echo "2" >> E:/hookLog.txt
SET USER=%2
echo "3" >> E:/hookLog.txt
echo %REPOS%, %USER% >> E:/hookLog.txt
SET SVN="D:/subversion/bin/svn.exe"
echo "4" >> E:/hookLog.txt
SET DIR="E:/htdocs/testserver.lab.rollenc.com"
echo "5" >> E:/hookLog.txt
REM call %SVN% update %DIR% >> E:/hookLog.txt
REM SET PATH=D:/subversion/bin/
REM svn update "E:/htdocs/testserver.lab.rollenc.com" >> E:/hookLog.txt
(call %SVN% update "E:/htdocs/testserver.lab.rollenc.com") >> E:/hookLog.txt
echo "6" >> E:/hookLog.txt
REM是注释,REM掉了我使用的很多种测试,切换REM可以运行其它的一些测试,但是全部无效。
以下是上面代码的输出:
""
"1"
"2"
"3"
E:/svn2, 54
"4"
"5"
"6"
1-6全部正常输出,惟一的是 svn update这一句没有输出任何东西。
完全放弃!等待达人。。。。
------------以上内容已删除-----------------
有问题也欢迎在下面贴出,乐意帮忙:)
Defined tags for this entry: subversion, 技术
1月
15
1。安装subversion和apache2的组件(已经认为您已经安装了apache2),
在/etc/apache2/mods-enabled中会多出来一下几个链接文件(实际文件在mods-available中,我们不需要去管,只需要关注enabled目录就成):
2。建立svn数据库
你将得到这样的结果,则说明建立成功
3。配置apache
按照提示去掉一些文件注释,最终的文件看起来如下
或者象这样来实现独立的域名情况:
4。建立密码文件
建立第一个用户需要加-c参数
输入两次密码
建立其他用户:
注意没有加-c,加-c的话会清除掉以前存在的密码。
如果username2为已存在用户,那这句命令的意义就是修改密码
5.重启apache
如果一切正常的话,使用浏览器打开http://127.0.0.1/svn 应该看到如下信息
OK,安装完成
你可以对他进行一些import,commit等操作了
导入版本的文件框架
mkdir -p tmp/lab.rollenc.com/trunk tmp/eemap/trunk #如果你有其他已经写好的需要一起导入的文件,cp过来让在相应的trunk目录下,然后下一步。
svn import tmp http://127.0.0.10/ #更具提示输入message信息和用户,密码。
我在实验时发现有权限问题,这是你可能需要修改/var/svn的权限为可读写
sudo chmod -R 777 /var/svn
然后再继续执行上面的import操作。
现在使用浏览器打开http://127.0.0.10,可以得到
sudo apt-get install subversion subversion-tools libapache2-svn
在/etc/apache2/mods-enabled中会多出来一下几个链接文件(实际文件在mods-available中,我们不需要去管,只需要关注enabled目录就成):
dav_fs.load dav_svn.conf dav_fs.conf dav.load dav_svn.load
2。建立svn数据库
sudo svnadmin create /var/svn
ls /var/svn
你将得到这样的结果,则说明建立成功
conf dav db format hooks locks README.txt
3。配置apache
cd /etc/apache2/mods-enabled
sudo vi dav_svn.conf
按照提示去掉一些文件注释,最终的文件看起来如下
# dav_svn.conf - Example Subversion/Apache configuration
#
# For details and further options see the Apache user manual and
# the Subversion book.
# <Location URL> ... </Location>
# URL controls how the repository appears to the outside world.
# In this example clients access the repository as http://hostname/svn/
<Location /svn>
# Uncomment this to enable the repository,
DAV svn
# Set this to the path to your repository
SVNPath /var/svn
# The following allows for basic http authentication. Basic authentication
# should not be considered secure for any particularly rigorous definition of
# secure.
# to create a passwd file
# # rm -f /etc/apache2/dav_svn.passwd
# # htpasswd2 -c /etc/apache2/dav_svn.passwd dwhedon
# New password:
# Re-type new password:
# Adding password for user dwhedon
# #
# Uncomment the following 3 lines to enable Basic Authentication
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
# Uncomment the following line to enable Authz Authentication
# AuthzSVNAccessFile /etc/apache2/dav_svn.authz
# The following three lines allow anonymous read, but make
# committers authenticate themselves.
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
或者象这样来实现独立的域名情况:
<VirtualHost 127.0.0.10>
ServerName svn.rollenc.com
DocumentRoot /var/svn
<Location />
DAV svn
SVNPath /var/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
</VirtualHost>
4。建立密码文件
建立第一个用户需要加-c参数
sudo htpasswd2 -c /etc/apache2/dav_svn.passwd username
输入两次密码
建立其他用户:
sudo htpasswd2 /etc/apache2/dav_svn.passwd username2
注意没有加-c,加-c的话会清除掉以前存在的密码。
如果username2为已存在用户,那这句命令的意义就是修改密码
5.重启apache
sudo apache2 -k restart
如果一切正常的话,使用浏览器打开http://127.0.0.1/svn 应该看到如下信息
Revision 0: /
Powered by Subversion version 1.3.1 (r19032).
OK,安装完成
你可以对他进行一些import,commit等操作了
导入版本的文件框架
mkdir -p tmp/lab.rollenc.com/trunk tmp/eemap/trunk #如果你有其他已经写好的需要一起导入的文件,cp过来让在相应的trunk目录下,然后下一步。
svn import tmp http://127.0.0.10/ #更具提示输入message信息和用户,密码。
我在实验时发现有权限问题,这是你可能需要修改/var/svn的权限为可读写
sudo chmod -R 777 /var/svn
然后再继续执行上面的import操作。
现在使用浏览器打开http://127.0.0.10,可以得到
Revision 1: /
* eemap/
* lab.rollenc.com/
继续checkout和commit吧,祝你有一个愉快的subversion。
1月
15
上次参加php上海策进会的聚会,去的早了点,被h058拉着狂捧,结果就被忽悠着答应下次聚会的一个subversion讲演。
聚会的日期有定下来了,本月的27号。现在也得好好准备一下了。
虽然blog上已经稍稍的写了点subversion的东西,但是很基础的。高级的东西自己也是仅在使用而已,没有进行很深入的研究。如果被追根寻底的一问,绝对玩完。
哎,到时真的要插根葱在鼻子上才敢登台了。
聚会的日期有定下来了,本月的27号。现在也得好好准备一下了。
虽然blog上已经稍稍的写了点subversion的东西,但是很基础的。高级的东西自己也是仅在使用而已,没有进行很深入的研究。如果被追根寻底的一问,绝对玩完。
哎,到时真的要插根葱在鼻子上才敢登台了。
1月
6
安装Subversion
1.安装Apache+Subversion
版本:
apache2.0.59: 我安装在D:/apache2
subversion 1.4.2: 我安装在D:/Subversion/
注意:subversion暂不能在apache2.2上运行
下载两个文件,先安装apache,在安装subversion,一路下一步就行,没什么好说的。惟一说明是在安装subversion时选择附加步骤时需要选中 install and configure apache(默认是选中的,没有注意到也没关系)。贴图如下:
图subversion_install.png

安装完成后,apache配置文件http.conf中自动加入了两行:
2.安装TortoiseSVN
版本:
TortoiseSVN-1.4.1.7992-win32-svn-1.4.2.msi我安装在D:/TortoiseSVN
一路下一步就成,安装完成时提示重启,重启只是影响外观,对使用不造成任何影响,所以暂时不管,选No。你也可以选择重新启动explorer.exe进程来完成。
3.建立repository
建立文件夹,我选择在E:/svn2,(因为现在是重新安装演示,E:/svn有我原有数据,所以,建立一个空的svn2)
右键,在E:/svn2建立一个repository
图subversion_createrepository.png,

这时弹出一个subversion存储类型的选择框,只是使用的话,两种类型可以随便选,选择FSFS。选择后安装完成。

4.配置apache
在第一步subversion安装时自动插入的两行一下插入:
Location 的值为访问svn时的url后缀,如127.0.0.1/svn,也可以使用二级域名
SVNPath的值为第三步建立的repository路径
AuthUserFile 为访问密码文件路径
LimitExcept 为权限控制。这里设定的是除了GET(获取)等操作外,都需要对用户验证, 更多权限配置管理参考svn_book
如果是域名绑定则使用:
5.建立密码文件

注意 -c
文件内容如下:
6.重启apache,察看127.0.0.1/svn
得到了:Revision 0: /
7.规划subversion结构
7.1:建立一个项目EEmap:
任意目录右键,TortoiseSVN->Repo-browser->输入地址http://127.0.0.1/svn
create Folder -> 输入name (EEmap)->输入 logmessage (EEmap Project)
这时就需要密码了。填入刚才的自己的用户名,密码,建立成功
7.2: 建立项目的内部结构:
按照这种方法。建立整个svn的结构,如下
如图:subversion_constructOK.png

7.建立工作复本
建立文件夹,checkout
如图subversion_checkout.png

建立成功之后,在EEmap目录下自动创建一个服务器上的备份,以及一个.svn的隐藏文件,EEmap文件夹上也会出现一个绿色的钩记
8.导入工作复本
由于lab.rollenc.com已经在我的文件中了,所以,我不需要建立,而需要导入
在lab.rollenc.com中导入
如图:subversion_import.png

但是import之后,这个还并不是你的工作复本,你需要check out才能建立你的工作复本,而直接在lab.rollenc.com文件中check out则会出错,因为该目录中已经存在它需要取出的文件。
解决方法:
由于这个工作复本已经在subversion服务器上了,所以,你完全可以放心直接删除lab.rollenc.com里面的所有文件,再checkout一次。
9.建立、修改文件,并提交
略去,参看svn_book
10. 建立版本号:
现在,如果我们建立了EEmap的原始模型,团队认为,可以发布0.1版本了,那么,简单的建立一个版本:
在repo中选择copy to
输入 http://127.0.0.1/EEmap/branch/versions/version0.1

ok,建立成功
在任何时候你都可以使用check来取出0.1版本,这个版本不收主干文件的干扰 http://127.0.0.1/EEmap/branch/versions/version0.1
完成之后,现在我的subversion内的文件如下:
subversion_basedone.png

基本的使用告一个段落
进阶使用
待续。。
[感谢samon对我上文中部分错误的指正]
1.安装Apache+Subversion
版本:
apache2.0.59: 我安装在D:/apache2
subversion 1.4.2: 我安装在D:/Subversion/
注意:subversion暂不能在apache2.2上运行
下载两个文件,先安装apache,在安装subversion,一路下一步就行,没什么好说的。惟一说明是在安装subversion时选择附加步骤时需要选中 install and configure apache(默认是选中的,没有注意到也没关系)。贴图如下:
图subversion_install.png

安装完成后,apache配置文件http.conf中自动加入了两行:
LoadModule dav_svn_module "D:/Subversion/bin/mod_dav_svn.so"
LoadModule authz_svn_module "D:/Subversion/bin/mod_authz_svn.so"
2.安装TortoiseSVN
版本:
TortoiseSVN-1.4.1.7992-win32-svn-1.4.2.msi我安装在D:/TortoiseSVN
一路下一步就成,安装完成时提示重启,重启只是影响外观,对使用不造成任何影响,所以暂时不管,选No。你也可以选择重新启动explorer.exe进程来完成。
3.建立repository
建立文件夹,我选择在E:/svn2,(因为现在是重新安装演示,E:/svn有我原有数据,所以,建立一个空的svn2)
右键,在E:/svn2建立一个repository
图subversion_createrepository.png,

这时弹出一个subversion存储类型的选择框,只是使用的话,两种类型可以随便选,选择FSFS。选择后安装完成。

4.配置apache
在第一步subversion安装时自动插入的两行一下插入:
Location 的值为访问svn时的url后缀,如127.0.0.1/svn,也可以使用二级域名
SVNPath的值为第三步建立的repository路径
AuthUserFile 为访问密码文件路径
LimitExcept 为权限控制。这里设定的是除了GET(获取)等操作外,都需要对用户验证, 更多权限配置管理参考svn_book
<Location /svn>
DAV svn
SVNPath "E:/svn2"
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile "D:/Apache2/svn.password"
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
如果是域名绑定则使用:
<VirtualHost 127.0.0.10>
ServerName svn.rollenc.com
DocumentRoot E:/svn2
<Location />
DAV svn
SVNPath "E:/svn2"
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile "D:/Apache2/svn.password"
<LimitExcept>
Require valid-user
</LimitExcept>
</Location>
</VirtualHost>
5.建立密码文件

注意 -c
文件内容如下:
rollenc:$apr1$ek/.....$esgXZzlr/JLPsnxkfQjss1
test:$apr1$qr/.....$b95NrDKp9mHU84of3KX8c1
6.重启apache,察看127.0.0.1/svn
得到了:Revision 0: /
7.规划subversion结构
7.1:建立一个项目EEmap:
任意目录右键,TortoiseSVN->Repo-browser->输入地址http://127.0.0.1/svn
create Folder -> 输入name (EEmap)->输入 logmessage (EEmap Project)
这时就需要密码了。填入刚才的自己的用户名,密码,建立成功
7.2: 建立项目的内部结构:
按照这种方法。建立整个svn的结构,如下
svn
|-EEmap
| |-trunk
| |-branch
|-lab.rollenc.com
| |-trunk
| |-branch
如图:subversion_constructOK.png

7.建立工作复本
建立文件夹,checkout
如图subversion_checkout.png

建立成功之后,在EEmap目录下自动创建一个服务器上的备份,以及一个.svn的隐藏文件,EEmap文件夹上也会出现一个绿色的钩记
8.导入工作复本
由于lab.rollenc.com已经在我的文件中了,所以,我不需要建立,而需要导入
在lab.rollenc.com中导入
如图:subversion_import.png

但是import之后,这个还并不是你的工作复本,你需要check out才能建立你的工作复本,而直接在lab.rollenc.com文件中check out则会出错,因为该目录中已经存在它需要取出的文件。
解决方法:
由于这个工作复本已经在subversion服务器上了,所以,你完全可以放心直接删除lab.rollenc.com里面的所有文件,再checkout一次。
9.建立、修改文件,并提交
略去,参看svn_book
10. 建立版本号:
现在,如果我们建立了EEmap的原始模型,团队认为,可以发布0.1版本了,那么,简单的建立一个版本:
在repo中选择copy to
输入 http://127.0.0.1/EEmap/branch/versions/version0.1

ok,建立成功
在任何时候你都可以使用check来取出0.1版本,这个版本不收主干文件的干扰 http://127.0.0.1/EEmap/branch/versions/version0.1
完成之后,现在我的subversion内的文件如下:
subversion_basedone.png

基本的使用告一个段落
进阶使用
待续。。
[感谢samon对我上文中部分错误的指正]
Defined tags for this entry: subversion, 技术
7月
21
服务器端安装:
Ubuntu下:
在synaptic中选择apache2,libapache2-svn,subversion,subverion-tool,libsvn0以及其他依赖的软件包,自动安装。
windows下:
下载安装包:svn-1.2.3-setup.exe,双击安装。
服务器端配置:
1.建立版本库
svnadmin create /var/svn (Ubuntu)
svnadmin create E:/svn (Win32)
或者使用服务端也成,具体可以参考其他相应文章.这些方式在 http://www.subversion.org.cn/content/view/18/1/ 文中写的很详细。你会发现在/var/svn(E:/svn)中有不少的文件夹。这说明版本库建立成功。
2.建立服务器进程:
1)可以使用svnserve,但我个人不推荐,这种方式在 http://www.subversion.org.cn/content/view/18/1/ 文中也详细有介绍,不再重复了。
2)使用apache当服务器:
Ubuntu:
$cd /etc/apache2/mods-enabled
$ls //你会发现有 dav.load,dav_fs.conf, dav_svn.conf ,dav_fs.load , dav_svn.load 这些文件。
$sudo kate dav_svn.conf
按照上面的英文提示操作,把dav_conf改为(去掉了注释,在实际中你只需要做相应修改。其实具体方法全部在注释里写明了。WINDOWS用户就没这么运气):
<Location /svn>
DAV svn
SVNPath /var/svn #你在上面建立版本库时的路径
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
保存,建立密码:
$rm -f /etc/apache2/dav_svn.passwd
$htpasswd2 -c /etc/apache2/dav_svn.passwd firstUser
$htpasswd2 /etc/apache2/dav_svn.passwd secondUser #请注意,加以后的用户时不要加 -c ,-c会将以前的所有用户全部删除.
$sudo apache2 -k restart #重启apache2.
这样你现在就可以通过http://yourhost/svn/访问你的版本库了。访问不需要密码,但存入等操作需要用户名和密码,具体权限问题可以参考官方说法,
Windows:
操作基本相同,只是Apache配置文件组织不同而已,相应乍改变。
3.创建钩子,自动更新测试服务器上文件:
$cd /var/
$sudo mkdir www #如果本来有文件,请备份后删除此文件夹
$sudo chown www-data www #改变这个文件夹为APACHE进程用户
$sudo su www-data #以apache进程的使用者登陆,具体为什么样的值可以在APACHE的CONF中找到
$svn checkout http://yourserver/svn www #取出一次,不管现在版本里面有没有东西
$exit #退出www-data用户
$cd /var/svn/hooks/
$sudo chmod 777 post-commit
$sudo kate post-commit
更改文件为:
REPOS="$1"
REV="$2"
E=(`svn update /var/www`)
#/var/www为你的测试服务器WEB根目录。
保存。测试服务器完成。
Windows下需要把文件保存为post.commit.bat或.com等可以被WINDOWS直接运行的文件后缀。svn运行目录也许要更改,具体我没有测试,抱歉了。
现在可以使用http://yourserver/svn进行版本控制,使用http://yourserver/进行测试。
参考:
用 Subversion 构建版本控制环境 http://www-128.ibm.com/developerworks/cn/opensource/os-subversion/
Subversion中文站 http://www.subversion.org.cn/
Ubuntu下:
在synaptic中选择apache2,libapache2-svn,subversion,subverion-tool,libsvn0以及其他依赖的软件包,自动安装。
windows下:
下载安装包:svn-1.2.3-setup.exe,双击安装。
服务器端配置:
1.建立版本库
svnadmin create /var/svn (Ubuntu)
svnadmin create E:/svn (Win32)
或者使用服务端也成,具体可以参考其他相应文章.这些方式在 http://www.subversion.org.cn/content/view/18/1/ 文中写的很详细。你会发现在/var/svn(E:/svn)中有不少的文件夹。这说明版本库建立成功。
2.建立服务器进程:
1)可以使用svnserve,但我个人不推荐,这种方式在 http://www.subversion.org.cn/content/view/18/1/ 文中也详细有介绍,不再重复了。
2)使用apache当服务器:
Ubuntu:
$cd /etc/apache2/mods-enabled
$ls //你会发现有 dav.load,dav_fs.conf, dav_svn.conf ,dav_fs.load , dav_svn.load 这些文件。
$sudo kate dav_svn.conf
按照上面的英文提示操作,把dav_conf改为(去掉了注释,在实际中你只需要做相应修改。其实具体方法全部在注释里写明了。WINDOWS用户就没这么运气):
<Location /svn>
DAV svn
SVNPath /var/svn #你在上面建立版本库时的路径
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
保存,建立密码:
$rm -f /etc/apache2/dav_svn.passwd
$htpasswd2 -c /etc/apache2/dav_svn.passwd firstUser
$htpasswd2 /etc/apache2/dav_svn.passwd secondUser #请注意,加以后的用户时不要加 -c ,-c会将以前的所有用户全部删除.
$sudo apache2 -k restart #重启apache2.
这样你现在就可以通过http://yourhost/svn/访问你的版本库了。访问不需要密码,但存入等操作需要用户名和密码,具体权限问题可以参考官方说法,
Windows:
操作基本相同,只是Apache配置文件组织不同而已,相应乍改变。
3.创建钩子,自动更新测试服务器上文件:
$cd /var/
$sudo mkdir www #如果本来有文件,请备份后删除此文件夹
$sudo chown www-data www #改变这个文件夹为APACHE进程用户
$sudo su www-data #以apache进程的使用者登陆,具体为什么样的值可以在APACHE的CONF中找到
$svn checkout http://yourserver/svn www #取出一次,不管现在版本里面有没有东西
$exit #退出www-data用户
$cd /var/svn/hooks/
$sudo chmod 777 post-commit
$sudo kate post-commit
更改文件为:
REPOS="$1"
REV="$2"
E=(`svn update /var/www`)
#/var/www为你的测试服务器WEB根目录。
保存。测试服务器完成。
Windows下需要把文件保存为post.commit.bat或.com等可以被WINDOWS直接运行的文件后缀。svn运行目录也许要更改,具体我没有测试,抱歉了。
现在可以使用http://yourserver/svn进行版本控制,使用http://yourserver/进行测试。
参考:
用 Subversion 构建版本控制环境 http://www-128.ibm.com/developerworks/cn/opensource/os-subversion/
Subversion中文站 http://www.subversion.org.cn/
Defined tags for this entry: subversion, 技术
