同一个项目, SVN和CVS之间代码同步更新

SVN和CVS之间代码同步更新

这个标题其实不是很准确, 但是是在想不出改用一个什么样的标题, 所以只能讲究了.

 

最近一直在维护一个项目, 公司内部使用的源码管理工具是cvs, 客户那边使用的是svn.

而且两边都有可能修改代码, 这就给代码更新带来了麻烦. 很多时候都要手工来做.

因为Eclipse中一个项目只能使用一种Team管理的工具, 不是CVS就是SVN, 所以我创建了两个项目, 一个是CVS(内部), 一个是SVN(外部).

 

Eclipse中SVN的每次update都会在console中输出日志, 大致就是增加/更新/删除了什么文件.

我们要做的就是, 分析log中每一行log相关的文件, 并且把它复制到CVS 工程相应的目录中.

之前也是这用ruby写过一个小程序, 最近想学习并使用Groovy, 于是有重写了一下.

 大致逻辑是:

1. 用Eclipse从svn更新客户提交的修改, 然后将eclipse中svn在console中输出的日志/内容保存到一个文本中

2. 通过程序逐行读取文本中svn的log, 分析出涉及的文件,

3. 针对文件, 要么copy 要么 mkdir, 把SVN 项目中的最新文件覆盖CVS项目中的文件.

  1. public class Svn2Cvs{
  2.     
  3.     public static void main(String[] args) {
  4.         svn2cvs("adreel");
  5.     }   
  6.     static void svn2cvs(String project) {
  7.         File inFile = new File("svn_log.txt");
  8.         inFile.eachLine() { String line ->
  9.             
  10.             line = line.substring(7// remove indent and A / U character            
  11.             line = line.replaceAll('/'""// replace forwardslash with backwardslash
  12.             String newLine = line.replaceFirst(/$project/, "${project}_cvs"// build new line
  13.             
  14.             if (line.indexOf('.') == -1) { // it's a dir
  15.                 println "mkdir /"$newLine/""
  16.             }
  17.             else {
  18.                 println "copy /Y /"$line/" /"$newLine/""
  19.             }
  20.         }
  21.     }
  22.     
  23. }

 

以下是SVN更新时log的样例:

  1.     U  E:/Workspaces/MyWorkspace/svnproject/src/a/a/a.java
  2.     A  E:/Workspaces/MyWorkspace/svnproject/src/a/b
  3.     A  E:/Workspaces/MyWorkspace/svnproject/src/a/b/b.java
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值