检查哪些变量,方法和&对象在2个SVN修订版之间进行了更改

时间:2018-01-24 09:54:28

标签: java svn svnkit

我试图找出哪些变量,方法和&对象在文件的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;
    }
}

File2.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;
}
}

预期输出应为:

&#34;以下值已更改:     变量 - numofstudents,a;     方法 - 费用;

&#34;

通过编写普通的Java程序,我可以打印出2个文件之间的差异,但是我无法打印出我预期的输出

1 个答案:

答案 0 :(得分:0)

我也在这个领域工作。我这样做是因为我需要在我的项目中自动化构建过程。

您可以通过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 命令。