簡體   English   中英

檢查在 2 個 SVN 修訂版之間更改了哪些變量、方法和對象

[英]Check which variables, methods & objects got changed between 2 SVN Revisions

我試圖找出在文件的 2 個修訂版之間更改了哪些變量、方法和對象。

是否可以通過編寫 Java 程序在 SVN 或使用 SVNKit 中找到這一點?

例如:File1.java

public class File1 {
    String name;
    float rating;
    String teacher;
    int numofstudents;

    public int fees(){
      numofstudents = 26;
      return 500*1.18;
    }
    if (rating < 5){
      int a = numofstudents;
    }
}

文件2.java

public class File1 {
String name;
float rating;
String teacher;
int numofstudents;
float marks;

public int fees(){
    numofstudents = 25;
    return 500*1.18;
}

if (rating < 4){
    int a = rating;
}
}

預期的輸出應該是:

“以下值已更改:變量 - numofstudents,a;方法 - 費用;

通過編寫普通的 Java 程序,我可以打印出 2 個文件之間的差異,但是我無法打印出預期的輸出

我也在這個領域工作。 我這樣做是因為我需要在我的項目中自動化構建過程。

您可以通過 java 的 svnkit 庫或通過從 java 程序調用命令行窗口來執行此操作,然后在打開的 cmd 進程中運行 svn 命令以確定差異(前提是您正在使用 windows 操作系統...當然)。

SVNKIT 方法——我無法通過 svnkit 獲得獲取差異的整個工作代碼,但我知道下面的代碼應該能夠讓我得到差異——

repository.diff(repository.getLocation(), 23180l, 23182l, null, false, SVNDepth.INFINITY, false, null, null);

SVNKit 文檔並不是那么好。 我仍在尋找工作示例。

從 Java 程序方法中使用 CMD 調用 SVN 命令 --

這對我有用。 但是您必須在安裝了 tortoise svn 並使用工作用戶憑據配置的 Windows 機器上運行它。 它是必需的,因為 svn 命令將在連接到 svn repo 時在內部使用保存的用戶憑據。

以下是確定兩個修訂版之間差異的命令(如果您的文件在提供的修訂版之間有更改,則此命令將顯示文件的差異)-

svn diff -r <fromRevisionNo>:<toRevisionNo> <Path of svn branch>

您可以使用以下代碼通過java程序調用此命令-

String cmd = "svn diff -r <fromRevisionNo>:<toRevisionNo> <Path of svn branch>";
    Runtime run = Runtime.getRuntime();
    Process pr = run.exec(cmd);
    pr.waitFor();
    BufferedReader buf = new BufferedReader(new InputStreamReader(pr.getInputStream()));
    String line = "";
    while ((line=buf.readLine())!=null) {
    System.out.println(line);

使用上面的代碼,我們從 java 程序打開一個 cmd 窗口,然后從中運行 svn 命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM