SVN版本控制器的问题,两个人在不同的内网中,如何进行同步更新代码,提交,请大家多多指教,详细些,好的会加分

SVN版本控制器的问题,两个人在不同的内网中,如何进行同步更新代码,提交,请大家多多指教,详细些,好的会加分,第1张

你是说类似于异地开发的情况吗?一个团队在公司开发,另一个团队在客户现场开发,两个团队需要维护同一个SVN版本库,是这样吗?
如果是这样的话,有两个办法:
1、将SVN服务器架设在公司,并架设一个线路,在客户现场项目组使用连接到公司的内网,使用后就和在公司一样了,当然有个前提就是在客户现场要有上互联网的环境
2、将SVN服务器架设在公司,在公司的路由器上设置端口映射,将SVN服务器的访问端口开放给外网访问,然后客户现场的项目组就可以使用公司的外网IP地址来访问SVN服务器,当然这也需要客户现场有上互联网的环境。如果公司的外网IP地址不是固定地址,那么还需要申请一个免费域名(在花生壳网站可以申请),通过路由器或者是软件将域名配置给公司的外网地址。
如果是两个人在家开发,又有两种办法:
1、到googlecode等提供svn服务的网站,申请一个源码项目,两个人都连到那个项目就行了
2、某个人在自己的电脑上架设SVN服务器,后面就参考前面的第二种方案。家里的网络环境以不固定外网IP地址的ADSL线路居多,这时就需要到花生壳申请一个免费域名了,否则安装了服务器的那台电脑一重新拨号,就可能导致外网IP地址改变,就无法update和commit了

这个是做一下update啊。。。说明你的服务器可能做了限定要求你在commit之前必须要做udpate
这样的话,你这个脚本写在post-commit中就起不到作用了吧。
你可以写到pre-commitbat或是start-commitbat中试一下看。

开发过程中,需要经常将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=10111

rem 测试环境代码根地址

set remoteRootPath=/var/>

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

cd /d %puttyPath%

rem 遍历提交了的代码

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

set "var=%%i"

svnlook cat !reposLoc! !var! > temptxt

rem 替掉路径中的trunk

set newPath=!var:trunk=!

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

echo y | pscp -l  !username! -pw !password! temptxt !host!:!remoteRootPath!!newPath!

)

使用方法:

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

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

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

没用过pre-proxy-change这个钩子,我是在post-commit这个钩子里进行copy-revprops 和sync *** 作,在命令行里把用户名和密码直接写进去。当然这样有个麻烦,就是每次修改密码后需要相应修改这个钩子
我的post-commit钩子一般只有这两行:
svnsync sync >

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12652575.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存