• 同一个项目, 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项目中的文件.

    public class Svn2Cvs{
        
        public static void main(String[] args) {
            svn2cvs("adreel");
        }   
        static void svn2cvs(String project) {
            File inFile = new File("svn_log.txt");
            inFile.eachLine() { String line ->
                
                line = line.substring(7) // remove indent and A / U character            
                line = line.replaceAll('/', "\\\\") // replace forwardslash with backwardslash
                String newLine = line.replaceFirst(/$project/, "${project}_cvs") // build new line
                
                if (line.indexOf('.') == -1) { // it's a dir
                    println "mkdir \"$newLine\""
                }
                else {
                    println "copy /Y \"$line\" \"$newLine\""
                }
            }
        }
        
    }

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

        U E:/Workspaces/MyWorkspace/svnproject/src/a/a/a.java
        A E:/Workspaces/MyWorkspace/svnproject/src/a/b
        A E:/Workspaces/MyWorkspace/svnproject/src/a/b/b.java


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bruni/archive/2008/11/11/3278793.aspx


    类别:Svn Apache 查看评论
  • 相关阅读:
    POJ1417 True Liars
    POJ2912 Rochambeau
    POJ3904 Sky Code
    [SDOI2016]排列计数
    POJ2947 Widget Factory
    HDU5015 233 Matrix
    Problem 2242. -- [SDOI2011]计算器
    POJ2480 Longge's problem
    Problem 2818. -- Gcd
    LA3510 Pixel Shuffle
  • 原文地址:https://www.cnblogs.com/dorothychai/p/2267955.html
Copyright © 2020-2023  润新知