




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
B/S实现远程配置SVN2008-12-26 作者:dyerac 来源:最近在尝试做一个类似sourceforge的开源社区,因此需要为项目申请者提供远程SVN的配置。这里列出自己的代码和心得,一是为了与大家相互交流,更重要的是为了让各位提提意见,看看还需要什么内容。现在提供的功能有:为项目创建svn仓库,修改svn账户密码,修改svn权限配置等。大家觉得还需要什么呢?代码如下:首先定义一个异常:package commandLineTest;class SvnException extends Exception public SvnException(String s) super(s);下面是对svn的操作: package commandLineTest;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;public class SvnCommander private String svn_home = K:/subversion-repository/;/* */* 为指定项目在服务器创建svn仓库,当用户选择开通svn服务时,这个方法将被调用为用户的项目创建svn仓库* * param project* 需要创建svn仓库的项目的名称* throws SvnException* 当创建失败时将抛出错误*/public void createRepository(String project) throws SvnException try Process p = new ProcessBuilder(svnadmin, create, svn_home+ project).start();StringBuffer buffer = new StringBuffer();String tmp;/ BufferedReader reader=new BufferedReader(new/ InputStreamReader(p.getInputStream();/ while(tmp=reader.readLine()!=null)/ buffer.append(tmp);/ System.out.println(buffer.toString();/ buffer=new StringBuffer();BufferedReader reader = new BufferedReader(new InputStreamReader(p.getErrorStream();while (tmp = reader.readLine() != null)buffer.append(tmp);/ System.err.println(buffer.toString();if (buffer.length() 0)throw new SvnException(buffer.toString();initSvnServer(project);initAuthz(project); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();/* */* 用于修改svn仓库的svnserve.conf配置文件,这个方法将在link createRepository(String name)* 中被自动调用,不建议被其他类调用* * param project* svn仓库对应的项目名称* throws SvnException* 当用户所在的项目并没有开通svn服务,或者修改svnserve.conf文件出现io错误时将抛出SvnException*/public void initSvnServer(String project) throws SvnException File svnserve = new File(svn_home + project + /conf/svnserve.conf);try BufferedReader reader = new BufferedReader(new FileReader(svnserve);StringBuffer buffer = new StringBuffer();String tmp;while (tmp = reader.readLine() != null)buffer.append(tmp + n);reader.close();int index = buffer.indexOf(# anon);buffer.delete(index, index + 2);index = buffer.indexOf(# auth);buffer.delete(index, index + 2);index = buffer.indexOf(# pass);buffer.delete(index, index + 2);index = buffer.indexOf(# auth);buffer.delete(index, index + 2);BufferedWriter writer = new BufferedWriter(new FileWriter(svnserve);writer.write(buffer.toString();writer.close(); catch (FileNotFoundException e) / TODO Auto-generated catch blockthrow new SvnException(SvnException: 配置文件svnserve.conf未找到: + e.toString(); catch (IOException e) / TODO Auto-generated catch blockthrow new SvnException(SvnException: 配置文件svnserve.conf的io操作出现问题: + e.toString();/* */* 为用户设置svn帐户的密码,* 该方法将修改项目仓库的passwd文件,如果该用户帐户已存在于passwd文件中,将修改其密码信息;如果不存在,则会在passwd添加新的记录* * param project* 用户所在的项目名称* param name* 用户帐户名称* param key* 用户密码* throws SvnException* 当用户所在的项目并没有开通svn服务,或者修改passwd文件出现io错误时将抛出SvnException*/public void setPassword(String project, String name, String key)throws SvnException File file = new File(svn_home + project);if (!file.exists()throw new SvnException(SvnException: 该项目还未开通svn服务);File passwd = new File(svn_home + project + /conf/passwd);try BufferedReader reader = new BufferedReader(new FileReader(passwd);StringBuffer buffer = new StringBuffer();String tmp;while (tmp = reader.readLine() != null)buffer.append(tmp + n);reader.close();int index = buffer.indexOf(name + = );if (index != -1) int line_end = buffer.indexOf(n, index);if (line_end = -1)line_end = buffer.length();buffer.replace(index + name.length() + 3, line_end, key); else buffer.append(name + = + key);BufferedWriter writer = new BufferedWriter(new FileWriter(passwd);writer.write(buffer.toString();writer.close(); catch (FileNotFoundException e) / TODO Auto-generated catch blockthrow new SvnException(SvnException: 配置文件passwd未找到: + e.toString(); catch (IOException e) / TODO Auto-generated catch blockthrow new SvnException(SvnException: 配置文件passwd的io操作出现问题: + e.toString();private void initAuthz(String project) throws SvnException File template = new File(authz_template.txt);File authz = new File(svn_home + project + /conf/authz);try BufferedReader reader = new BufferedReader(new FileReader(template);BufferedWriter writer = new BufferedWriter(new FileWriter(authz);String tmp;while (tmp = reader.readLine() != null)writer.write(tmp);reader.close();writer.close(); catch (FileNotFoundException e) / TODO Auto-generated catch blockthrow new SvnException(SvnException: 配置文件passwd未找到: + e.toString(); catch (IOException e) / TODO Auto-generated catch blockthrow new SvnException(SvnException: 配置文件passwd的io操作出现问题: + e.toString();/* */* 用于设置各个用户对svn的使用权限* * param project* 对应的项目名称* param path* 权限对应的文件夹,该参数应该采取/foo/bar的形式,不然设置结果将不起作用* param name* 用户名称,全部用户应该使用*来表示* param right* 权限,为r或者rw两种形式*/public void setAuthz(String project, String path, String name, String right)throws SvnException File passwd = new File(svn_home + project + /conf/authz);try BufferedReader reader = new BufferedReader(new FileReader(passwd);StringBuffer buffer = new StringBuffer();String tmp;while (tmp = reader.readLine() != null)buffer.append(tmp + n);reader.close();int begin = buffer.indexOf( + project + : + path + );System.err.println(begin);if (begin != -1) int end = buffer.indexOf( + project, begin+1);System.err.println(end);if (end = -1)end = buffer.length();int index
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度海洋工程劳务分包施工合同
- 2025保密协议签订与知识产权保护结合的法律实务指南
- 2025年度落户员工住房保障及补贴服务合同下载
- 2025年度高端装备包销合同技术参数与售后服务规范
- 2025年度股权代持与知识产权保护协议模板下载
- 2025版私人房产交易资金监管合同
- 2025版物流配送合同协议效率与成本优化管理制度
- 2025版高科技企业人力资源外包合作协议
- 2025版高性能水泥材料研发合作协议书
- 2025版汽车租赁承包合同书(含增值服务)
- 磐安县全域“无废城市”建设工作方案(2023-2025年)
- 达梦数据库管理系统技术白皮书
- 物料来料检验规范标准
- 辅警考试题库
- GB/T 19289-2019电工钢带(片)的电阻率、密度和叠装系数的测量方法
- 《中国特色社会主义政治经济学(第二版)》第一章导论
- 《安娜·卡列尼娜》-课件-
- 妇科疾病 痛经 (妇产科学课件)
- 《李将军列传》教学教案及同步练习 教案教学设计
- GMP基础知识培训(新员工入职培训)课件
- 基于Java的网上书城的设计与实现
评论
0/150
提交评论