Windows SVN変更送信メール通知(JAVA実装)
7326 ワード
前にpythonの実装http://blog.csdn.net/wiker_yong/article/details/10334967がありました
1,新規ファイルpost-commit.bat
内容:
F:/Repositories/バージョンライブラリ名/hooksの下に置く(特定のパスによって異なり、ここでは参照のみ)
2,SVNSendMail.java
同様にF:/Repositories/バージョンライブラリ名/hooksでファイルのコミットをテストできます.効果は次のとおりです.
ソースコードダウンロード地下(関連classと参照jarパッケージを含む.ポイントフリー):http://download.csdn.net/detail/yangwei19680827/6018571
1,新規ファイルpost-commit.bat
内容:
rem REPOS-PATH (the path to this repository)
set REPOS=%1
rem REV (the number of the revision just committed)
set REV=%2
set HOOK_DIR=F:/Repositories/ /hooks
java -jar %HOOK_DIR%/SendMail.jar %REPOS% %REV%
F:/Repositories/バージョンライブラリ名/hooksの下に置く(特定のパスによって異なり、ここでは参照のみ)
2,SVNSendMail.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* @author Wiker Yong Email:<a href="mailto:[email protected]">[email protected]</a>
* @date 2013-8-27 10:28:54
* @version 1.0-SNAPSHOT
*/
public class SVNSendEmail {
private static String VERSION = null;
private static String REPOSITORIES = null;
private static String SVNLOOK_BIN_PATH = "C:/Program Files/VisualSVN Server/bin/svnlook.exe"; //VisualSVN Server
private static String emailSubject = "SVN "; //
public static void main(String[] args) {
REPOSITORIES = args[0];
VERSION = args[1];
StringBuffer emailContent = new StringBuffer();
emailContent.append("<html> <h2 style=\"color:#FFFFFF; background: #008040;\"> </h2>");
emailContent.append("<div> <b> :</b> <a href=\"http://blog.csdn.net/wiker_yong\">"
+ REPOSITORIES + "</a> </div>");
emailContent.append("<div> <b> :</b>" + VERSION + " </div>");
emailContent.append(" <div> <b> :</b>" + getAuthor() + " </div>");
emailContent.append("<div> <b> :</b>" + getDate() + " </div>");
emailContent.append("<h2 style=\"color:#FFFFFF; background: #4682B4;\"> </h2>");
emailContent.append("<font size=\"4\" color=\"#BF6000\"><xmp>" + getLog() + "</xmp></font>");
emailContent.append("<h2 style=\"color:#FFFFFF; background: #5353A8;\"> </h2>");
emailContent.append("<xmp>" + getChangeList() + "</xmp> <hr>");
emailContent.append("<center> ☆ Powered by <a href=\"http://blog.csdn.net/wiker_yong\">Wiker Yong</a> </center> </html>");
MailUtils mail = new MailUtils();
mail.setSubject(emailSubject);
mail.setContent(emailContent.toString());
mail.sendMail();
}
public static String getRepoName() {
return REPOSITORIES;
}
public static String getAuthor() {
try {
String[] cmd = {
SVNLOOK_BIN_PATH, "author", "-r", VERSION, REPOSITORIES
};
Process proc = Runtime.getRuntime().exec(cmd);
BufferedReader stdout = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String output = "";
String returnStr = "";
while ((output = stdout.readLine()) != null) { // bat . bat
System.out.println(output); // exe
returnStr += output;
}
return returnStr;
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
public static String getDate() {
try {
String[] cmd = {
SVNLOOK_BIN_PATH, "date", "-r", VERSION, REPOSITORIES
};
Process proc = Runtime.getRuntime().exec(cmd);
BufferedReader stdout = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String output = "";
String returnStr = "";
while ((output = stdout.readLine()) != null) { // bat . bat
System.out.println(output); // exe
returnStr += output;
}
return returnStr;
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
public static String getLog() {
try {
String[] cmd = {
SVNLOOK_BIN_PATH, "log", "-r", VERSION, REPOSITORIES
};
Process proc = Runtime.getRuntime().exec(cmd);
BufferedReader stdout = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String output = "";
String returnStr = "";
while ((output = stdout.readLine()) != null) { // bat . bat
System.out.println(output); // exe
returnStr += output;
}
return returnStr;
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
public static String getChangeList() {
try {
String[] cmd = {
SVNLOOK_BIN_PATH, "changed", "-r", VERSION, REPOSITORIES
};
Process proc = Runtime.getRuntime().exec(cmd);
BufferedReader stdout = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String output = "";
String returnStr = "";
while ((output = stdout.readLine()) != null) { // bat . bat
System.out.println(output); // exe
returnStr += output;
}
return returnStr;
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
}
同様にF:/Repositories/バージョンライブラリ名/hooksでファイルのコミットをテストできます.効果は次のとおりです.
ソースコードダウンロード地下(関連classと参照jarパッケージを含む.ポイントフリー):http://download.csdn.net/detail/yangwei19680827/6018571