B S实现远程配置SVN.doc_第1页
B S实现远程配置SVN.doc_第2页
B S实现远程配置SVN.doc_第3页
B S实现远程配置SVN.doc_第4页
B S实现远程配置SVN.doc_第5页
已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论