导航:首页 > IDC知识 > svn同步到服务器

svn同步到服务器

发布时间:2020-12-29 21:01:01

1、svn服务器的代码可以同步到服务器吗

开发过程中,需要经常将SVN服务器上的代码同步到测试服务器上,一般做法,需要人工手工更新,这样很浪费工夫。下面的脚本为svn server的钩子程序,放在svn服务器上,只要代码更新,就会自动提交的测试服务器上。

使用条件:

1、SVN主机是WIN系统,如果要在LINUX的SVN主机上用,需要修改下面的代码为sh脚本,道理类似,代码不同。有需要的自行更改吧。

2、SVN主机上需要安装完整版的PUTTY安装包,而不是一个EXE.

3、测试服务器可以用putty登录

@echo off

setlocal enableDelayedExpansion

rem 本脚本实现将SVN服务器A(win环境)上提交的代码,自动上传(通过pscp)到测试环境的服务器B(linux)上,如果SVN在LINUX环境下,根据本代码自行调整。


rem svn服务器上版本库地址

set reposLoc=%1

set REV=%2


rem ---------------------------------------------------------------------- 配置开始

rem svn服务器上putty的路径

set puttyPath="D:Program Files (x86)PuTTY"


rem 测试环境putty登录的用户名

set username=root


rem 测试环境putty登录的密码

set password=password


rem 测试环境IP

set host=10.1.1.1


rem 测试环境代码根地址

set remoteRootPath=/var/www/htdocs/test


rem ---------------------------------------------------------------------- 配置结束


cd /d %puttyPath%


rem 遍历提交了的代码

for /f "tokens=2 delims= " %%i in ('svnlook changed %reposLoc%') do (


set "var=%%i"


svnlook cat !reposLoc! !var! > temp.txt


rem 替掉路径中的trunk

set newPath=!var:trunk=!


rem 通过pscp提交到测试服务器

echo y | pscp -l  !username! -pw !password! temp.txt !host!:!remoteRootPath!!newPath!

)

使用方法:

将上面的代码中配置区的变量修改,并将内容保存成bat文件,命名为post-commit.bat,放在SVN服务器上版本库的hooks目录下。提交代码试试看吧。经测试可行。

当然,这个脚本可以再做的牛比点儿,可以针对某个用户的提交做更新,也可以分析SVN提交时的日志,只有当日志中有特定的字符时更新。

另外,由于上面的脚本,只更新当前的提交,所以假设只针对某个用户的提交做更新时,不能只更新当前提交,这样其它用户的提交就落掉了,需要更新整个工程。


2、svn怎么把数据同步到多台服务器上

如果是想实时同步,也就是说每次commit就自动同步到各服务器,就编辑SVN服务器上的post-commit钩子,回通过这个钩子实现;
如果是非答实时同步,比如定时在某个时间点将最新版传过去,或者在需要时将最新版传过去,那就随便弄了,操作系统的定时任务都可以。

3、SVN 文件同步到服务器问题

你需要更加详细的描述这几个服务器之间的关系,那才好判断问题出在内哪里。

从你现在描述容的信息来看,似乎是相互矛盾的,你描述的这个系统是没法正常工作的。

一般来说,架构和流程会是这样的,SVN服务器会通过post-commit钩子,自动将更新后的文件部署到测试服务器,在测试服务器上测试通过没有问题后,将当前版本再部署到主服务器上对外发布(这一步一般不会是SVN自动执行的,应该是由另一个工具来发起的)。

详细描述以下问题吧:
1、测试服务器、主服务器分别是做什么用的?
2、你测试服务器和主服务器之间SVN是用什么机制同步的?
3、主服务器除了从测试服务器同步数据过来之外,还有没有其他方式会修改上面的文件?

4、每次要用SVN更新项目 都需要手动跟服务器的同步一下 能不能设置成自动同步的啊?

你的SVN更新项目、手动跟服务器同步分别指的是什么?
你所说的更新项目是指update吗?如版果是这个的话,那肯权定是要手动操作的,虽然理论上你可以做个定时任务,没隔几分钟命令行方式执行update一次,但由于update时可能会报告冲突,这种自动执行update很可能让你遗漏了冲突,得不偿失。

5、如何把测试服务器上的代码通过svn同步到正式服务器上?

您好,最简单的办法,将SVN服务器和测试服务器架设在同一台主机上,然后编辑版SVN的post-commit钩子脚本,权这个钩子是在每次成功commit后由SVN服务器自动调用执行的,存放在SVN服务器上该版本库的hooks文件夹下,编辑这个脚本,调用svn的checkout或者update,在SVN服务器主机上得到一个最新版的SVN客户端文件夹,接着通过这个脚本调用编译、部署指令,部署到测试服务器指定的文件夹,这就ok了。这样每次commit后就会自动发布一个新的测试版到测试服务器上。
当然了,也可以用操作系统的定时任务来做这个,来定时发布新测试版。

6、两个SVN服务器同步怎么操作

svn自带了svnsync同步机来制,但不确定能否满足源你们的使用要求。因为svnsync的同步,只能实现源服务器向目标服务器的单向同步,也就是说对目标服务器上的内容,只能进行update操作,而不能进行commit操作。

如果你们只是想把总部服务器上的数据取过来,而不用修改后传回总部服务器,那么用svnsync就可以 了;若还想传回去,那就要另想办法了。

关于svnsync的同步设置,网上搜索一下吧,不是一两句话能说清的。

7、如何使用SVN同步文件到测试服务器

您好,最简单的办法,将SVN服务器和测试服务器架设在同一台主机上,然后编辑回SVN的post-commit钩子脚本,这答个钩子是在每次成功commit后由SVN服务器自动调用执行的,存放在SVN服务器上该版本库的hooks文件夹下,编辑这个脚本,调用svn的checkout或者update,在SVN服务器主机上得到一个最新版的SVN客户端文件夹,接着通过这个脚本调用编译、部署指令,部署到测试服务器指定的文件夹,这就ok了。这样每次commit后就会自动发布一个新的测试版到测试服务器上。

8、怎么把本地文件通过svn上传到服务器

1、首先,从SVN上检出服务器的文件目录,打开要放置新文件的目录,然后将本地新建的文件复制过去。

2、SVN目录中新增的文件会显示特殊标识,表示这个文件还没有进行登记。

3、使用加入功能将新增的文件进行登记。

4、新增的文件登记后还未上传至SVN服务器,所以包含这个新文件的各层文件夹都会被标识红色感叹号以作提醒。

5、提交新增的文件才能将本地修改上传至SVN服务器,选择任意层的文件夹都可以进行提交。

6、提交时可以对本次修改内容进行描述。

9、怎样通过SVN自动更新代码到服务器

把下面代码添加了svn/hooks/post-commit里(替换部分路径)。当有svn提交,系统发现提交的代码涉及相关目录,就会通过rsync把代码同步到web服务器。不过这里还需要做一个rsync免输密码的设置。

#!/bin/sh
lines="$(cd /projects && svn up | wc -l)"
if [ $lines -gt 1 ]
then
cd /projects && rsync -rv * [email protected]:/var/www/
fi

与svn同步到服务器相关的知识