![](/img/trans.png)
[英]Hibernate Envers : How to check if a field has changed between two revisions?
[英]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.