`

svn同步web服务器端

 
阅读更多
使用svnadmin create 创建一个版本库:
svnadmin create REPO

每个版本库的目录下有一个hooks目录:

root@SVN:/home/svn/repo# ls /home/svn/repo/
conf  dav  db  format  hooks  locks  README.txt

在每个版本库下有hooks文件夹,里面有很多钩子程序:

root@SVN:/home/svn/repo# ls -l hooks/
total 40
-rwxr-xr-x 1 www-data www-data  332 2010-05-30 16:47 post-commit
-rw-r--r-- 1 www-data www-data 2000 2010-05-30 15:22 post-commit.tmpl
-rw-r--r-- 1 www-data www-data 1663 2010-05-29 23:28 post-lock.tmpl
-rw-r--r-- 1 www-data www-data 2322 2010-05-29 23:28 post-revprop-change.tmpl
-rw-r--r-- 1 www-data www-data 1592 2010-05-29 23:28 post-unlock.tmpl
-rw-r--r-- 1 www-data www-data 3488 2010-05-29 23:28 pre-commit.tmpl
-rw-r--r-- 1 www-data www-data 2410 2010-05-29 23:28 pre-lock.tmpl
-rw-r--r-- 1 www-data www-data 2796 2010-05-29 23:28 pre-revprop-change.tmpl
-rw-r--r-- 1 www-data www-data 2100 2010-05-29 23:28 pre-unlock.tmpl
-rw-r--r-- 1 www-data www-data 2830 2010-05-29 23:28 start-commit.tmpl

在执行commit操作之后会自动执行post-commit这个钩子程序。
因此可以设置post-commit来自动更新:


操作步骤如下:

1. 使用checkout建立一个工作复本

mkdir /home/web

root@SVN:/home# chown www-data:www-data web

ls -l web
drwxr-xr-x 2 www-data www-data 4096 2010-05-30 16:15 web

必须使用apache的所属用户和组(在ubuntu下面的是www-data)来执行:check out

root@SVN:/home/web# sudo su www-data
$ cd /home/web
$ svn checkout http://svn.love.com/svn/repo/www/

Authentication realm: <http://svn.love.com:80> Repo Auth
Password for 'www-data':
Authentication realm: <http://svn.love.com:80> Repo Auth
Username: jack
Password for 'jack':

-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:

   <http://svn.love.com:80> Repo Auth

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/var/www/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes

连续输入2次 "yes"

root@SVN:/home/web# ls -al www/
drwxr-xr-x 6 www-data www-data   4096 2010-05-30 16:18 .svn
可以看到.svn的权限,userown、goupown都是www-data



2,使用svn update测试,看www-data用户是否有权限更新。

$ svn update /home/web/www --username svnuser --password svnpasswd
在连续输入2次"yes"或者"no"之后、可以看到已经更新成功:
Store password unencrypted (yes/no)? At revision 37.

3,在hooks目录下面的添加一个post-commit脚本文件

#!/bin/sh

REPOS="$1"
REV="$2"
export LANG=en_US.UTF-8
svn update /home/web/www --username svnuser --password svnpasswd

在客户端commit后报错
sudo su www-data
$ cd /home/svn/repo/hooks
$ ./post-commit

提示:
Store password unencrypted (yes/no)?

在svn update --help中找到了 --no-auth-cache 这个参数:

--no-auth-cache          : do not cache authentication tokens

加上这个参数后终于可以了:

root@SVN:/home/svn/repo/hooks# cat post-commit

#!/bin/sh

REPOS="$1"
REV="$2"
export LANG=en_US.UTF-8
svn update /home/web/www --username svnuser --password svnpasswd --no-auth-cache




参考资料来自:

http://blog.sina.com.cn/s/blog_4c5fc6950100h18b.html


为了便于排错,可以将脚本的错误输出、以及版本信息、执行用户的名称保存到日志里面。
#!/bin/sh

REPOS="$1"
REV="$2"
export LANG=en_US.UTF-8
echo `whoami`,$REPOS,$REV >> /tmp/svn_hooks.log
svn update /home/web/www --username svnuser --password svnpasswd --no-auth-cache 2> /home/web/svn_hook.log
分享到:
评论

相关推荐

    windows环境下svn同步web文件.docx

    在描述中提到的"svn同步web文件"是指通过SVN的hook机制,实现在每次提交(commit)到SVN服务器后,自动将更新的数据发布到Web服务器上,简化项目开发和测试流程。 实现这一功能的关键在于使用SVN的hook脚本,特别是...

    svn同步数据

    本文主要介绍如何在Windows和Linux环境下配置Subversion(简称svn)进行数据同步,特别是将svn的提交操作同步到Web服务器的根目录,实现版本控制系统与Web服务的实时联动。 一、Windows下的svn同步配置 1. **安装*...

    SVN客户端、服务器端

    总的来说,SVN客户端如TortoiseSVN和服务器端如VisualSVN Server是开发团队不可或缺的工具,它们提供了高效、可靠的版本控制服务,有助于确保项目在多人协作环境下的稳定性和一致性。正确使用这两个工具,可以帮助...

    SVN服务器端和客户端 window64

    此外,还有一些基于Web的SVN服务,如Assembla、Beanstalk等,它们提供托管的SVN仓库,简化了服务器端的维护。 总之,“SVN服务器端和客户端 window64”这个压缩包为Windows 64位用户提供了完整的SVN解决方案,无论...

    svn自动同步至服务器web目录

    所以就有了一种同步的方式,将其自动同步到服务器下的web目录,实现实时预览 首先在linux服务器下搭建svn,创建版本库并运行,这里就不提供教程啦 1.实现同步的很关键一步代码 svn co –username –password 例子...

    SVN 服务器端

    在“SVN 服务器端”场景下,我们通常指的是搭建一个SVN服务,使得团队可以在该服务器上存储、版本控制他们的代码和其他项目资源。 64位Windows系统是目前大多数企业的工作环境,因此“SVN 服务器端”针对64位...

    SVN服务器端软件

    VisualSVN Server是针对Windows平台的一个强大且易用的SVN服务器端软件,尤其适合小型到大型企业进行源代码管理和版本控制。 **1. SVN的基本概念** - **版本库(Repository)**:SVN的核心是版本库,存储所有项目...

    svn客户端、服务器和myeclipse的svn插件

    而在集中式模式下,如使用Apache HTTP Server + mod_dav_svn模块,可以将SVN服务集成到现有的Web服务器中。服务器端配置包括创建仓库、设置用户权限、备份和恢复等。 3. MyEclipse的SVN插件: MyEclipse是一款强大...

    可视化方式构建自己的SVN服务器端[归纳].pdf

    而借助Apache运行SVN则可以利用其强大的Web服务器功能,提供更灵活的配置和更高的性能,但设置相对复杂。根据项目需求和个人技术水平,可以选择适合的部署方式。 首先,你需要在本地安装SVN客户端。这可以通过访问...

    SubVersionSVN 服务器端(VisualSVN-Server-1.5)

    安装完成后,管理员可以通过Web界面(即VisualSVN Server Manager)轻松管理仓库和用户权限,而开发人员则可以在本地工作副本上进行日常开发工作,通过SVN客户端(如TortoiseSVN)与服务器保持同步。 总的来说,...

    IIS+SVN实现本地上传服务器自动更新

    此外,还在服务器上初始化了一个工作副本以便接收更新,并在客户端提交更新后,实现了服务器端的自动同步。 这种方式不仅简化了部署过程,还提高了开发效率和可靠性。开发者只需专注于编写代码并在本地进行测试,...

    svn客户端与服务端

    在SVN系统中,分为客户端(Client)和服务器端(Server)两个主要部分,它们协同工作以实现代码的版本控制。 **1. SVN服务器端** SVN服务器端是整个版本控制系统的核心,它存储所有版本的文件和目录,并处理客户端...

    SVN目录下.svn文件批量删除

    PHP是一种服务器端脚本语言,通常用于Web开发,但也可以用作命令行工具,这使得它适合于执行这种批处理任务。使用SVN_Deleter,用户可以快速、方便地移除不再需要的SVN元数据,而无需手动逐个删除大量的`.svn`子目录...

    svn工具+文档

    2. **服务器端安装**:在服务器上部署SVN仓库需要先安装Subversion服务器软件,如Apache HTTP Server或VisualSVN Server。然后配置仓库目录,设置访问权限,并根据需求决定是否启用SSL加密通信以保证数据安全。 3. ...

    svnclient.rar

    9. **版本库管理**:SVN服务器端通常包含一个版本库,存储所有项目文件和历史记录。管理员可以通过Web界面或命令行工具管理版本库,如创建、删除、重命名项目。 10. **备份与恢复**:为了防止数据丢失,定期备份SVN...

    SVN安装包以及汉化包

    Apache HTTP Server是开源的Web服务器,可以免费使用,并且与SVN有良好的集成。VisualSVN Server则是一款专为Windows设计的SVN服务器,安装简单,管理方便,适合企业级应用。 汉化包的目的是将SVN的英文界面转换为...

    SVN不同版本及配置说明

    - 始终保持SVN客户端与服务器端的版本兼容,以避免潜在问题。 - 使用明确的提交消息,帮助团队成员理解每次更改的目的。 - 定期清理工作副本,以避免不必要的冲突和错误。 通过以上配置和使用,你可以充分利用...

    SVN客户端和服务端软件

    在本压缩包中,包含了SVN的两个关键组件:客户端和服务器端。 1. **TortoiseSVN_x64客户端**: TortoiseSVN是基于Windows操作系统的SVN客户端,因其图标和右键菜单集成而广受欢迎。它提供了一个直观的图形用户界面...

    SVN服务器加客户端.7z

    综上所述,这个压缩包提供了在Windows环境下搭建和使用SVN环境的全套工具,无论是服务器端的管理和维护,还是客户端的日常开发,都能得到很好的支持。使用这些工具,开发者可以高效地进行团队协作,确保代码的安全和...

    ASP.NET SVN开发工具包

    2. **ASP.NET**:ASP.NET是由微软开发的服务器端Web应用程序框架,用于构建动态网站、Web应用和Web服务。它支持多种编程语言,如C#、VB.NET等,并提供了丰富的控件、自动状态管理、事件驱动模型等功能,简化了Web...

Global site tag (gtag.js) - Google Analytics