2005年08月28日

一边和LD看大长今,一边上网。看见mikespook写的“PHP写的CVS文件夹清理工具”,自己现在已经很少使用CVS,大多使用SVN,想想这个可以程序可以使用在自己SVN,所以试着改写一下。很容易,
第一步,先到pear.php.net下载FILE模块里的find.php,程序里需要使用了的。
第二步,再将代码里所有的CVS替换成SVN,这个只要在编辑器里一个操作就可以了。
第三步,在代码里的88行if ($name === ‘SVN’) 修改成:if ($name === ‘.svn’) /*注意是小写*/
第四步,将文件另存为SVN_Clean.php。

运行的时候,php SVN_CLean.php <path> -nr。

结果在windows环境下运行的时候发现,存放SVN本地文件的.svn目录下有几个文件是只读属性,暂时不能删除。

2005年08月23日

WebCalendar在8月19日日更新到了1.01版本,解决了一些bug,就我个人看来,最大的就是不用依赖php.ini里关于register_globals的设置了。这在我以前的blog中已经提到了。这次在linux下,php5.0.4的默认安装,可以正常使用了。

2005年08月20日

在研究过程中,也和一些开发者有过交流,在此表示感谢。以下内容全部来自公开的互联网。在研究过程中,和部分开发者沟通过,得到的一些信息可能涉及到他们内部的情况,已经删除了。

PPT 1

PPT 2

全文完·非狐外传@2005年8月20日

最近工作特别忙,别说写blog了,就连GreatNews上订阅的200多条RSS,都没有时间来看。经常就是只能浏览一些摘要。强烈表扬在摘要中输出全文的blogger。

接手了一个部门的工作,开始写一些项目日志和部门工作心得,这些是否考虑放到blog上,一直在疑惑。

前一段时间因为别人的要求,对p2p的网络电视调研了一番,目前看来,这个项目cancel了,今天放出自己的以前写的两篇PPT,有兴趣的朋友还可以讨论讨论。如果需要ppt的正本,可以给我Email。

2005年08月11日

SVN和BugFree的结合第一步只解决了用户认证的问题,下面就是用户权限分配的问题了。SVN的权限设置非常灵活,即可以对单个Repository设置,也可以对同时对多个Repository相同的目录进行设置。既可以对目录进行设置,也可以对文件进行设置。还具有群组的概念。

在(一)的例子中,在httpd.conf文件行:SVNParentPath D:/svntest/parent 后加入“ AuthzSVNAccessFile D:/svntest/parent/accessfile ”

文件内容是:

[groups]
doc = tom, foo
[a1:/]
admin = r
guest = r
[a1:/1]
guest =
feihu = rw
[a1:/1/readme.txt]
guest = r
feihu = r
[a1:/2]
* =
admin = r
[a1:/2]
* = r
admin =
[test1:/]
* = r
[/doc]
@doc = rw



一行行来解释

[groups]  
doc = tom, foo  #定义了一个doc组
[a1:/]
admin = r   #对Repository的根目录/,admin,guest都有read的权限,如子目录没有特殊规定,继承父目录
guest = r
[a1:/1]
guest =     #取消guest对目录"1"的权限,admin还是有r权限,赋予feihu read&write的权限
feihu = rw
[a1:/1/readme.txt]
admin =     #admin 对 1/readme.txt没有任何权限,但guest却有了读权限,但guest对目录"1"却是无权限的
guest = r  
feihu = r
[a1:/2] 
* =        #所有人都没有权限了,但admin还是有r权限
admin = r
[a1:/2]    # 这是目前SVN设置权限的一个问题,admin还是对目录"2"具有读权限,也就是说对权限目前是或的算
* = r
admin =
[test1:/]
* = r     #对仓库 test1,所有人都有读权限
[/doc]
@doc = rw  #对所有仓库的 /doc 目录,doc组里的所有人都有r权限

目前来说,SVN的权限设置是非常灵活的,也非常强大,但只有文本设置,没有什么图形工具,也没有什么验证的手段。最好对每个项目的目录结构做好详细的设计和规划,但人员较多的时候,利用角色,组的概率来定义权限。不要象例子一样,设置过于复杂的权限。

全文完·非狐外传@2005年8月11日

2005年08月02日

本来想使用trac当做SVN的Issue Trace,但trac还是单项目模式,而且还是使用起来比较不习惯,所以暂时考虑SVN和BugFree的整合,目前两者只是用户名的整合,将来考虑是否整合进trac的形式,在BugFree的项目中直接看到Subversion库里的信息

使用的版本:
Windows SP1.5(sp1,后来打的几个补丁)
Subversion 1.2.0
BugFree 0.4
Apache 2.0.54
mod_auth_mysql.so 2.0.49(apache连接MySQL认证)
TortoiseSVN 1.2

SVN的用户管理其实有两个内容,一个是认证:检验用户名,密码是否正确,登录进SVN服务器;第二是权限:针对代码仓库Repository的读写权限分配。

一,首先按照SVN和Apache整合的文档,使用SVNParentPath方式,这样可以在这个目录下建立多个Repository。
我的所有操作全部是在本机进行的,有时会使用TortoiseSVN进行客户端的操作,其实完全可以使用SVN的命令行方式。

1,安装Subversion,apache,TortoiseSVN,建立D:\svntest\parent目录,这里将是SVN所有Repository的根目录,然后在parent目录下,创建a1目录,选中a1,右键菜单,选择TortoiseSVN中的“Create Repository here..”,创建一个基于FSFS的仓库。
2,修改httpd.conf,添加:

<Location /parentsvn>
 DAV svn
 SVNParentPath D:/svntest/parent
</Location>


3,在浏览器中浏览:http://127.0.0.1/parentsvn/a1/,可以看到正确的信息Revision 0。说明apache,SVN已经整合好了。

二,利用BugFree的用户认证

1,首先安装BugFree,保证BugFree能正常运行。其使用的数据库名是bugfree,存放u/p的字段是表buguser里的UserName,UserPassword字段。密码可以用多种方式加密,注意检查include\ConfigBug.inc.php里的$BugConfig["UserTable"]["EncryptType"]是否是md5。

2,解压mod_auth_mysql.so到apache/modules目录里。注意,mod_auth_mysql不是apache自带的,而是sf的一个项目,主页在http://modauthmysql.sourceforge.net/。目前版本已经到了3.0.0,下载下源码的话,自己需要编译,还需要apache的源码,比较麻烦。 不过已经有人编译好了相应的模块,在http://www.gknw.net/development/apache/httpd-2.0/win32/modules/下载。里面还有2.9.4版本的,但在我的安装中,始终不能正常。所以我只有使用了2.0.49,只是稍微有些设置不一样。

3,修改httpd.conf里的设置。

<Location /parentsvn>
 DAV svn
 SVNParentPath D:/svntest/parent
 
 AuthName "MySQL Testing"
 AuthType Basic
 Require valid-user

 AuthMySQLHost localhost
 AuthMySQLUser root
 AuthMySQLPassword xxxxxx

 AuthMySQLDB bugfree
 AuthMySQLUserTable buguser
 AuthMySQLNameField UserName
 AuthMySQLPasswordField UserPassword

 AuthMySQLMD5Passwords On
</Location>
</IfModule>


重启apache,你再次访问http://127.0.0.1/parentsvn/a1/,就弹出认证窗口了,输入用户名admin密码123456,就可以浏览了。

至此,SVN的用户已经和BugFree的用户整合在一起了。可以在BugFree系统中创建用户,修改密码了。

下一步需要做的是设置SVN中多用户,多Repository的访问权限控制。

全文完·非狐外传@2005年8月2日