JGit--實現Git命令操作的Java API

問題來源:最近在做一個項目,其中有一塊需要用戶上傳代碼到服務器中,然后分析用戶所傳的代碼,傳代碼最直接的方式就是用戶打個包上傳,但是后期再分析代碼的時候還要代碼實現解壓上傳的代碼,操作起來比較復雜。

解決方案

與小伙伴們討論了下,是不是可以通過代碼倉庫來解決問題,于是上網找了找,發現Git操作是可以用JGit這個API來實現的,于是就選擇了讓用戶直接給一個Github Repository的鏈接,不僅能讓系統自動下載代碼,還省去了解壓步驟。

JGit

JGit 提供了一個Git 命令的Java API,例如,你可以在 JGit 里面用
git.commit().setMessage( "My first commit" ).call();
代替
git commit -m "First commit"

JGit 命令都有一個 call() 方法,在命令被建立之后用來實際執行它。這些類的命名是在各自的 Git 命令后加上后綴命令。雖然有些命令提供一個公共構造函數,還是建議使用 Git 的工廠類來創建命令。

JGit示例

Java實現git clone操作,參考代碼如下:

import java.io.File;
import org.eclipse.jgit.api.CloneCommand;
import org.eclipse.jgit.api.Git;

public class JGitUtil {
 public static String cloneRepository(String url,String localPath)
 {
  try{
   System.out.println("開始下載......");
   
   CloneCommand cc = Git.cloneRepository().setURI(url);
   cc.setDirectory(new File(localPath)).call();
   
   System.out.println("下載完成......");
   
   return "success";
  }catch(Exception e)
  {
   e.printStackTrace();
   return "error";
  }
 }
 public static void main(String[] args)
 {
  String localPath = "/Users/XXX/Desktop/GitTest";
  String url = "https://github.com/XXX/python3-webapp.git";
  
  cloneRepository(url,localPath);
 }
}

注意點:在使用JGit這個JAR包時,是依賴其他JAR包的;列舉如下:
slf4j-api-1.7.9.jar
slf4j-log4j12-1.7.9.jar
log4j-1.2.17.jar
jsch-0.1.54.jar

除了git clone之外,還有很多其他操作,創建一個存儲庫,從遠程獲取內容,向歷史版本中添加和刪除文件,檢查歷史操作,并最終將更改的文件推回到原始存儲庫都可以用JGit實現。大家可以參考官網的API或者JGit資源介紹

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,269評論 25 708
  • 因為原文太長超出字數,Lesson 3 就放在另一篇文章里 How to Use Git and GitHub 標...
    赤樂君閱讀 5,272評論 1 5
  • 今天曉峰發了一只貓的圖片,問這只貓是?曉峰說是自己的貓,領養來的。自己看后大為心動啊 自認為自己是個博愛的人,貓和...
    自控力二靜閱讀 812評論 2 0
  • 序:我在創業公司做項目 【第一章】明確項目的核心價值 【第二章】將核心價值可視化 【第三章】讓市場考驗你的產品價值...
    寧小南閱讀 304評論 0 0