同一個項目, SVN和CVS之間代碼同步更新

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.