提问的智慧SVN版 - 提问者必读
 84 12345
发新话题
打印

[原创] windows上安装apache2.0.59+SVN+自动邮件通知(完整版)[2008-9-5更新]

windows上安装apache2.0.59+SVN+自动邮件通知(完整版)[2008-9-5更新]

前几天写了linux版的,受广大论友的邀请,特写此windows的版本,希望大家能够共同为此论坛作出贡献,也希望越来越多的人能够更加方便地使用SVN。
× 最近许多SVN友谈到下载地址失效,故传上安装包,Active Perl除外因为太大。

OS: Windows XP SP2
1) 安装Apache Server
2) 安装SVN
3) 配置邮件通知

1. 安装apache2.0.59,从这里可以下载到http://apache.justdn.org/httpd/b ... in32-x86-no_ssl.msi
安装过程中设置以下参数:
Network Domain: localhost
Server name: localhost
Administrator's Emai Address: windymax@126.com
安装到默认路径为C:\Program Files\Apache Group\Apache2

2. 安装subversion1.4.0,从这里下载http://www.iusesvn.com/bbs/download/svn-win32-1.4.0.zip
安装到默认路径为C:\Program Files\Subversion
默认安装后,在apache的配置文件中会自动加入以下两行。
LoadModule dav_svn_module "C:/Program Files/Subversion/bin/mod_dav_svn.so"
LoadModule authz_svn_module "C:/Program Files/Subversion/bin/mod_authz_svn.so"
把这行的注释去掉
LoadModule dav_fs_module modules/mod_dav_fs.so

注:
安装zip版的subversion中,由于只是解压到某目录下,故解完后在apache的配置文件中自动添加文中的两行,另外还需加上Subversion的系统环境变量,如何设置,请参考下文Perl的环境变量配置。
但当安装“exe”版本subversion时,可自动添加,并成功安装。

拷贝C:\Program Files\Subversion\bin下的libdb44.dll到这个目录下C:\Program Files\Apache Group\Apache2\bin
打开apache的配置文件在末尾处加入以下参数:
<Location /svn>
DAV svn
SVNPath d:\svndata\test
AuthType Basic
AuthName "Windy SVN"
AuthUserFile d:\svndata\test\passwd
Require valid-user
</Location>
保存。(在这里权限文件我不多讲了,大家多做实验就明白了)

建立仓库
打开CMD命令行界面,"开始" -> "运行" -> "cmd" -> "回车"
C:\Documents and Settings\windy> d:   //进入D盘(因为我们要在D盘下创建仓库)
D:\> md svndata   //创建一个名叫svndata的目录
D:\> c:   //进入C盘
C:\Documents and Settings\windy> cd\   //退到C盘根目录
C:\Documents and Settings\windy> cd C:\Program Files\Subversion\bin  //进入subversion/bin目录
C:\Program Files\Subversion\bin> svnadmin create d:\svndata\test   //用svnadmin命令创建名为test的仓库(这条命令成功后,在test下会出现很多文件夹和文件)
C:\Program Files\Subversion\bin> cd C:\Program Files\Apache Group\Apache2\bin   //进入apache\bin目录
C:\Program Files\Apache Group\Apache2\bin> htpasswd -cm d:\svndata\test\passwd user1   //用htpasswd命令创建第一个用户(user1),同时生成密码认证文件,c参数为create,m参数为MD5加密方式
New password: ******
Re-type new password: ******
Adding password for user user1   //加入用户成功
C:\Program Files\Apache Group\Apache2\bin> htpasswd -m d:\svndata\test\passwd user2   //用htpasswd命令创建第二个用户(user2),注意如果在这时加入c参数会覆盖掉之前创建的用户及文件。
New password: ******
Re-type new password: ******
Adding password for user user2   //加入用户成功

重新启动apache,进行测试。
用IE打开http://localhost/svn,这时应该可以看到
Revision 0: /
--------------------------------------------------------------------------------
Powered by Subversion version 1.4.0 (r21228).    //说明我们已经配置成功了

3. 配置邮件通知
下载所需要的软件包
--在这里下载http://downloads.activestate.com ... in32-x86-267479.msi到D盘根目录下。
--下载http://download.microsoft.com/do ... 5/en-us/nmake15.exe到D盘根目录下。
--下载http://search.cpan.org/CPAN/auth ... Build-0.2805.tar.gz到D盘根目录下,将Module-Build-0.2805.tar.gz解压到D盘。
--下载http://search.cpan.org/CPAN/auth ... en-SASL-2.10.tar.gz到D盘根目录下,将Authen-SASL-2.10.tar.gz解压到D盘。
--下载http://search.cpan.org/CPAN/auth ... TP_auth-0.08.tar.gz到D盘根目录下,将Net-SMTP_auth-0.08.tar.gz解压到D盘。
--下载http://search.cpan.org/CPAN/auth ... -Notify-2.64.tar.gz到D盘根目录下,将SVN-Notify-2.64.tar.gz解压到D盘。

开始安装Perl以及模块
--安装Active Perl,一路默认安装,默认路径为C:\Perl
--测试perl是否正常工作(这步很关键)
  打开CMD命令行界面,"开始" -> "运行" -> "cmd" -> "回车"
   C:\Documents and Settings\windy> perl   //如果没有报错,说明已经正常工作,因为安装perl时,安装程序会自动设置好环境perl(如果在系统环境变量中没有自动添加,需手动添加perl变量环境),具体做法是:
  "回到桌面" -> "鼠标右键我的电脑" -> "属性" -> "高级" -> "环境变量" -> "系统变量中Path最前面中添加C:\Perl\bin\;" ->"完成"。   //测试,如果报错,请重新启动电脑后进行测试。
--将nmake15.exe改名为nmake.exe后拷贝到c:\windows\system32目录下。
--测试nmake是否是否正常工作(这步很关键)
  打开CMD命令行界面,"开始" -> "运行" -> "cmd" -> "回车"
   C:\Documents and Settings\windy> nmake   
  Microsoft (R) Program Maintenance Utility   Version 1.50
  Copyright (c) Microsoft Corp 1988-94. All rights reserved.   //说明nmake已经正常工作
--安装Module-Build模块
  打开CMD命令行界面,"开始" -> "运行" -> "cmd" -> "回车"
  C:\Documents and Settings\windy> d:
  D:\> cd Module-Build-0.2805
  D:\Module-Build-0.2805> perl Build.PL   //收集系统环境变量
  D:\Module-Build-0.2805> Build   //进行编译
  D:\Module-Build-0.2805> Build test   //测试
  D:\Module-Build-0.2805> Build install   //编译后安装  
--安装Perl模块Authen::SASL,进入Authen-SASL-2.10目录,首先开打Makefile.PL
  打开CMD命令行界面,"开始" -> "运行" -> "cmd" -> "回车"
  C:\Documents and Settings\windy> d:
  D:\> cd Authen-SASL-2.10
  D:\Authen-SASL-2.10> perl Makefile.PL   //收集系统环境变量
  出现选择安装提示,y和n先后安装一次
  D:\Authen-SASL-2.10> nmake   //进行编译
  D:\Authen-SASL-2.10> nmake test  //进行测试
  D:\Authen-SASL-2.10> nmake install   //编译后安装
--安装Perl模块Net::SMTP_auth
  打开CMD命令行界面,"开始" -> "运行" -> "cmd" -> "回车"
  C:\Documents and Settings\windy> d:
  D:\> cd Net-SMTP_auth-0.08
  D:\Net-SMTP_auth-0.08> perl Makefile.PL   //收集系统环境变量
  D:\Net-SMTP_auth-0.08> nmake   //进行编译
  D:\Net-SMTP_auth-0.08> nmake test   //测试
  D:\Net-SMTP_auth-0.08> nmake install   //编译后安装
--安装Perl模块SVN::Notify
  打开CMD命令行界面,"开始" -> "运行" -> "cmd" -> "回车"
  C:\Documents and Settings\windy> d:
  D:\> cd SVN-Notify-2.64
  D:\SVN-Notify-2.64> perl Build.PL   //收集系统环境变量
  D:\SVN-Notify-2.64> Build   //进行编译
  D:\SVN-Notify-2.64> Build test   //测试
  D:\SVN-Notify-2.64> Build installl   //编译后安装  
--安装完毕。

设置邮件通知
--拷贝post-commit.tmpl为post-commit.bat
--删除末尾参数,增加下面参数:
set REPOS=%1
set REV=%2
SET PATH=C:\PERL\BIN;
SET OS=Windows_NT
SET SystemRoot=C:\WINDOWS
svnnotify --repos-path %REPOS% -r %REV% --to windy@xxx.com --smtp smtp.xxx.com -H HTML::ColorDiff -d --subject-prefix [Windy SVN]
//--to windy@xxx.com为要通知的邮件地址,我们一般会做个邮件组,这个组内包含了这个项目的所有人,--smtp mail.xxx.com为你的内部邮件服务器地址,必须使用域名,要内部DNS能够解析到,可能需要在内部DNS服务器上手动添加主机记录,[Windy SVN]必须有SVN字段,否则将收不到邮件,注重格式,此脚本有bugzilla和JIRA系统进行整合的参数。

关于详细参数解释:
svnnotify 邮件通知的命令
--repos-path %REPOS% 后跟仓库的路径
-r %REV% 后跟版本号
--to 后跟邮件地址
--smtp 后跟邮件服务器的地址
--H HTML::ColorDiff 用颜色区分开修改过的代码
--subject-prefix [Windy SVN] 邮件标题前缀,可以把Windy自段定义成自已项目的名称

完成所有设置。

[ 本帖最后由 windymax 于 2008-9-5 16:21 编辑 ]

附件

SVN-Apache-SVNNotify-HowTo-En.pdf (64.47 KB)

07-2-14 09:58, 下载次数: 1214

参考文献

email-notify.jpg (72.77 KB)

07-7-27 11:39

email-notify.jpg

SVN-Notify-2.64.tar.gz (52.9 KB)

08-9-5 16:19, 下载次数: 231

SVN-Mirror-0.73.tar.gz (121.97 KB)

08-9-5 16:19, 下载次数: 106

Net-SMTP_auth-0.08.tar.gz (5.24 KB)

08-9-5 16:19, 下载次数: 82

Module-Build-0.2805.tar.gz (181.4 KB)

08-9-5 16:19, 下载次数: 229

Authen-SASL-2.10.tar.gz (41.78 KB)

08-9-5 16:19, 下载次数: 75

nmake15.rar (50.7 KB)

08-9-5 16:20, 下载次数: 68

本帖最近评分记录
  • 小宇 威望 +3 又看了一次 觉得上次加得太少了!做为管理员 ... 07-6-26 09:09
  • 小宇 金币 +6 又看了一次 觉得上次加得太少了!做为管理员 ... 07-6-26 09:09
  • 小宇 威望 +1 06-12-2 10:16

TOP

反馈:

反馈一:
--安装Perl模块SVN::Notify
  打开CMD命令行界面,"开始" -> "运行" -> "cmd" -> "回车"
  C:\Documents and Settings\windy> d:
  D:\> cd SVN-Notify-2.64
  D:\SVN-Notify-2.64> perl Build.PL   //收集系统环境变量
  D:\SVN-Notify-2.64> Build   //进行编译
  D:\SVN-Notify-2.64> Build test   //测试
  D:\SVN-Notify-2.64> Build installl   //编译后安装  
————这些命令运行不下去啊,报错:'build'不是内部或外部命令,也不是可运行的程序或批处理文件!!!
反馈二:
--拷贝post-commit.tmpl为post-commot.bat
————应该是必为post-commit.bat
反馈三:
设置log可以修改
--拷贝post-commit.tmpl为post-commot.bat
————应该是改 pre-revprop-change.tmp为pre-revprop-change.bat
本帖最近评分记录
  • 三少 金币 +2 精品文章 07-8-9 18:11
  • 小宇 金币 +2 哟~大家多交流哦~~ 06-12-4 23:50

TOP

引用:
原帖由 vivian 于 2006-12-2 11:03 发表
反馈一:
--安装Perl模块SVN::Notify
  打开CMD命令行界面,"开始" -> "运行" -> "cmd" -> "回车"
  C:\Documents and Settings\windy> d:
  D:\> ...
perl Build.PL 你执行成功了吗?

D:\SVN-Notify-2.64>perl Build.pl
Deleting _build
Creating custom builder _build\lib\My\Builder.pm in _build\lib\My
Checking whether your kit is complete...
Looks good

Checking prerequisites...
* Optional prerequisite Test:od::Coverage is not installed
* Optional prerequisite Test:od is not installed

ERRORS/WARNINGS FOUND IN PREREQUISITES.  You may wish to install the versions
of the modules indicated above before proceeding with this installation

Creating new 'Build' script for 'SVN-Notify' version '2.64'

D:\SVN-Notify-2.64>Build
lib\SVN\Notify\HTML.pm -> blib\lib\SVN\Notify\HTML.pm
lib\SVN\Notify\HTML\ColorDiff.pm -> blib\lib\SVN\Notify\HTML\ColorDiff.pm
lib\SVN\Notify\Alternative.pm -> blib\lib\SVN\Notify\Alternative.pm
lib\SVN\Notify.pm -> blib\lib\SVN\Notify.pm
bin\svnnotify -> blib\script\svnnotify
Manifying blib\script/svnnotify -> blib\bindoc\svnnotify.1
Manifying blib\lib/SVN/Notify.pm -> blib\libdoc\SVN.Notify.3
Manifying blib\lib/SVN/Notify/HTML.pm -> blib\libdoc\SVN.Notify.HTML.3
Manifying blib\lib/SVN/Notify/HTML/ColorDiff.pm -> blib\libdoc\SVN.Notify.HTML
olorDiff.3
Manifying blib\lib/SVN/Notify/Alternative.pm -> blib\libdoc\SVN.Notify.Alterna
ve.3
HTMLifying blib\script\svnnotify -> blib\binhtml\bin\svnnotify.html
HTMLifying blib\lib\SVN\Notify.pm -> blib\libhtml\site\lib\SVN\Notify.html
Build: blib\lib\SVN\Notify.pm: cannot resolve L<perlio|perlio> in paragraph 87
HTMLifying blib\lib\SVN\Notify\HTML.pm -> blib\libhtml\site\lib\SVN\Notify\HTM
html
HTMLifying blib\lib\SVN\Notify\HTML\ColorDiff.pm -> blib\libhtml\site\lib\SVN\
tify\HTML\ColorDiff.html
Build: blib\lib\SVN\Notify\HTML\ColorDiff.pm: unknown pod directive 'head1' in
aragraph 56.  ignoring.
HTMLifying blib\lib\SVN\Notify\Alternative.pm -> blib\libhtml\site\lib\SVN\Not
y\Alternative.html
t\bin\testsvnlook -> t\scripts\testsvnlook
t\bin\testsendmail -> t\scripts\testsendmail

D:\SVN-Notify-2.64>Build test
t\alt..............ok
t\base.............ok
t\errors...........ok
t\html.............ok
t\htmlcolordiff....ok
t\options..........ok
t\pod-coverage.....skipped
        all skipped: Test:od::Coverage 1.06 required for testing POD covera
t\pod..............skipped
        all skipped: Test::Pod 1.20 required for testing POD
t\script...........ok
t\smtp.............ok
All tests successful, 2 tests skipped.
Files=10, Tests=714, 85 wallclock secs ( 0.00 cusr +  0.00 csys =  0.00 CPU)

D:\SVN-Notify-2.64>Build install
Skipping C:\Perl\man\man1\svnnotify.1
Skipping C:\Perl\html\bin\svnnotify.html
Skipping C:\Perl\site\lib\SVN\Notify.pm
Skipping C:\Perl\site\lib\SVN\Notify\HTML.pm
Skipping C:\Perl\site\lib\SVN\Notify\Alternative.pm
Skipping C:\Perl\site\lib\SVN\Notify\HTML\ColorDiff.pm
Skipping C:\Perl\man\man3\SVN.Notify.3
Skipping C:\Perl\man\man3\SVN.Notify.HTML.3
Skipping C:\Perl\man\man3\SVN.Notify.HTML.ColorDiff.3
Skipping C:\Perl\man\man3\SVN.Notify.Alternative.3
Skipping C:\Perl\html\site\lib\SVN\Notify.html
Skipping C:\Perl\html\site\lib\SVN\Notify\HTML.html
Skipping C:\Perl\html\site\lib\SVN\Notify\Alternative.html
Skipping C:\Perl\html\site\lib\SVN\Notify\HTML\ColorDiff.html
Skipping C:\Perl\bin\svnnotify
Skipping C:\Perl\bin\svnnotify.bat
Writing C:\Perl\site\lib\auto\SVN\Notify\.packlist

[ 本帖最后由 windymax 于 2006-12-2 11:48 编辑 ]

TOP

想配置个邮件通知还真不容易啊
有这念头,但......

TOP

修改形成的下面这两个文件无法运行,为什么?

post-commit.bat
post-revprop-change.bat

运行post-revprop-change.bat 提示信息如下

D:\svn\Repository-test\hooks># On a Unix system, the normal procedure is to have
'post-revprop-change'
'#' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

D:\svn\Repository-test\hooks># invoke other programs to do the real work, though
it may do the
'#' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

D:\svn\Repository-test\hooks># work itself too.
'#' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

D:\svn\Repository-test\hooks>#
'#' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

D:\svn\Repository-test\hooks># Note that 'post-revprop-change' must be executabl
e by the user(s) who will
'#' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

D:\svn\Repository-test\hooks># invoke it (typically the user httpd runs as), and
that user must
'#' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

D:\svn\Repository-test\hooks># have filesystem-level permission to access the re
pository.
'#' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

D:\svn\Repository-test\hooks>#
'#' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

D:\svn\Repository-test\hooks># On a Windows system, you should name the hook pro
gram
'#' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

D:\svn\Repository-test\hooks># 'post-revprop-change.bat' or 'post-revprop-change
.exe',
'#' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

D:\svn\Repository-test\hooks># but the basic idea is the same.
'#' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

[ 本帖最后由 piggyxxi 于 2006-12-6 20:17 编辑 ]
好好学习,天天向上!

TOP

这个是BAT里的注释文档。。脚本中用作说明的,当然不能执行,每句话钱用#注视掉的。

TOP

修改post-commit.tmpl为post-commit.bat的问题???

删除末尾参数,增加下面参数:
set REPOS=%1
set REV=%2
SET PATH=C:\PERL\BIN;
SET OS=Windows_NT
SET SystemRoot=C:\WINDOWS
svnnotify --repos-path %REPOS% -r %REV% --to windy@126.com --smtp smtp.126.com -H HTML::ColorDiff -d --subject-prefix [Windy SVN]


在smtp后跟你自已的邮件服务器地址IP,比如192.168.0.1 就收不到邮件,什么原因啊!
好好学习,天天向上!

TOP

这是svnnotify的参数解释
--smtp ADDRESS            Address for an SMTP server.   
没说IP Address,那请尽量用域名吧。

TOP

httpd.exe: Syntax error on line 115 of C:/Program Files/Apache Software Foundati
on/Apache2.2/conf/httpd.conf: Cannot load C:/Program Files/Subversion/bin/mod_da
v_svn.so into server: \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\x
bf\xe9\xa1\xa3
问一下这个是什么原因啊。按步骤配制好apache和svn,加入用户成功后重启apache就出现这个错

[ 本帖最后由 au909123456 于 2006-12-13 16:57 编辑 ]

TOP


回复 #9 au909123456 的帖子

windows上,目前apache2.2.x不能跟svn配合使用,只能用apache2.0.x

  • 提问前先用多种搜索方式、多种可能的关键字对论坛进行搜索
  • 提问时详细描述软件版本,自己要做什么,做了什么,遇到了什么
  • 最后的绝招:PM版主
  • 问题解决后,请自行将“求助”修改为“已解决”

TOP

post-commit.bat修改如下:

set REPOS=%1
set REV=%2
SET PATH=C:\PERL\BIN;
SET OS=Windows_NT
SET SystemRoot=C:\WINDOWS
svnnotify --repos-path %REPOS% -r %REV% --to ssy@mail.org  --smtp mail.baccy.net -H HTML::ColorDiff -d --subject-prefix [Windy SVN]


其中:
ssy@mail.org
mail.baccy.net
分别使用的是内网邮箱及内网的域名,为什么还是无法收到邮件通知呢?

如果使用公司的外部正式邮件就可以收到邮件通知,两者没有什么区别啊!
好好学习,天天向上!

TOP

可能你的SVN服务器的DNS解析不到内网的吧,内网的域名地址(是自已在DNS服务器上做的,供内部使用)在外网是解析不到的。

TOP

我换了2.0.59版本怎么还是报错啊
Syntax error on line 173 of C:/Program Files/Apache Group/Apache2/conf/httpd.con
f:
Cannot load C:/Program Files/Subversion/bin/mod_dav_svn.so into server: \xd5\xd2
\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3

TOP

回复 #13 au909123456 的帖子

将C:/Program Files/Subversion/bin/mod_dav_svn.so用双引号括起来

  • 提问前先用多种搜索方式、多种可能的关键字对论坛进行搜索
  • 提问时详细描述软件版本,自己要做什么,做了什么,遇到了什么
  • 最后的绝招:PM版主
  • 问题解决后,请自行将“求助”修改为“已解决”

TOP

有没有能使用内网DNS,或直接指定IP的方法啊!
好好学习,天天向上!

TOP

LoadModule dav_svn_module "C:/Program Files/Subversion/bin/mod_dav_svn.so"
LoadModule authz_svn_module "C:/Program Files/Subversion/bin/mod_authz_svn.so"
加到httpd.conf里了。还是一样的出错啊

TOP

引用:
原帖由 piggyxxi 于 2006-12-14 12:27 发表
有没有能使用内网DNS,或直接指定IP的方法啊!
不能用IP,必须要域名

--smtp 参数可能不认识数字的。

[ 本帖最后由 windymax 于 2006-12-14 15:22 编辑 ]

TOP

识别不了中文

谢谢楼主的帖子!
我安装成功了
美中不足的是识别不了中文
使用中文总是会出些问题

日志是中文的会出现不发邮件的情况
文件名或者文件内容是中文会出现乱码

[ 本帖最后由 wfox 于 2006-12-18 10:32 编辑 ]

TOP

引用:
原帖由 wfox 于 2006-12-18 09:57 发表
日志是中文的会出现不发邮件的情况
文件名或者文件内容是中文会出现乱码
如果安装在windows上的确会有点乱码的问题(可能中文系统的原因,建议在英文版系统上安装),在linux系统上安装是绝对没问题的。

TOP


感谢楼主提供这样好的文章。
我是一名学习SVN2天的新人,在学习您的
2. 安装subversion1.4.0,从这里下载http://www.iusesvn.com/bbs/download/svn-win32-1.4.0.zip
这一步的时候发现,下载的svn-win32-1.4.0.zip文件解压缩后与运行svn-1.4.2-setup.exe这样的文件有很大的不同,无法使它运行起来,不知道能否教教我如果使用svn-win32-1.4.0.zip进行安装?
谢谢。

TOP

 84 12345
发新话题
本功能由奇虎问答实现

相关主题

标题 作者 最后发表
关于提交后自动发送邮件通知项目成员功能如何实现! ymjkk 2009-06-02
windows SVN 自动发送邮件 Felix329 2008-06-04
用SVNNotify实现SVN自动邮件通知遇到的一个问题 coy68 2009-05-06
用TortoiseSVN提交时不能触发post-commit.bat脚本 Linuxunion 2009-04-21
扫描版本库中锁,并给锁的拥有者发邮件通知 go2cxg 2008-11-27
点击阅读更多关于的相关帖子  更多相关主题
订阅 我用Subversion - SVN中文论坛 邮件列表:iUseSVN@googlegroups.com
电子邮件:
网站重要事项将会在这个列表进行通知,点击这里浏览存于列表中的所有邮件