如何用svn命令行提交某个目录下多个新文件到服务器

如何用svn命令行提交某个目录下多个新文件到服务器,第1张

首先这个文件夹必须是受SVN控制的,也就是说这个文件夹是必须从服务器端checkout出来的;

然后写一个批处理,里面核心就两行,第一行是svn

add

,把所有新增的文件加上add标记,第二行是svn

commit

把所有新增和修改过的文件提交到服务器端;

然后把这个批处理设置成操作系统的定时任务,每隔一定时间自带执行一次。

开发过程中,需要经常将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/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! > 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提交时的日志,只有当日志中有特定的字符时更新。

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

是用tortoiseSVN即svn客户端,对svn服务器上的信息进行检出,检出后本地修改完成,通过提交动作将修改的内容传递至服务器。你需要的是安装一个svn客户端,一个代码路径及对应拥有读写权限的账号密码。

SVN是基于关系数据库的(BerkleyDB)或一系列二进制文件的(FS_FS)。一方面这解决了许多问题 (例如,并行读写共享文件)以及添加了许多新功能(例如运行时的事务特性。)。然而另一方面,数据存储由此变得不透明。

基于以上所以你在服务上是找不到你提交的原始文件,因为svn每次提交做的都是原子提交,所以你在服务器上能找到的都是一些碎片文件。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何用svn命令行提交某个目录下多个新文件到服务器

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情