2016-07-06 61 views
0

我正在構建一個小工具來向不熟悉Git的用戶提供一些Git命令。這些命令不打算修改回購,只是查詢一些信息。 我正在用Java創建工具,使用JGit這似乎是做這種東西最好的匹配。使用JGit時刪除本地Git回購

我到目前爲止所面臨的問題是,我創建了一個臨時文件夾來託管repo內容,但我無法在執行結束時自動刪除它。

下面是代碼(我刪除了try/catch語句的東西,簡化了讀):我搜索了很多關於這個主題

// Create temporary folder 
Path folderPath = Paths.get(System.getProperty("user.dir")); 
File localRepoFolder = Files.createTempDirectory(folderPath, "local-repo").toFile(); 
// Clone the repo 
CloneCommand clone = new CloneCommand(); 
clone.setURI("https://myrepo"); 
clone.setNoCheckout(true); 
clone.setDirectory(localRepoFolder); 
clone.setCredentialsProvider(new UsernamePasswordCredentialsProvider("user", "password")); 
Git gitRepo = clone.call(); 
// Do some stuff 
[...] 
// Cleanup before closing 
gitRepo.getRepository().close(); 
gitRepo.close(); 
localRepoFolder.deleteOnExit(); 

,但我得到無處不在,它應該被自動刪除..我錯過了什麼?

+0

您是否嘗試過明確刪除存儲庫文件夾阿帕奇百科全書IO(http://commons.apache.org/proper/commons-io/)? –

+0

是的,但它只適用於這樣的命令: FileUtils.delete(localRepoFolder,FileUtils.RECURSIVE); 這不適用於標準的delete()命令,因爲這是一個文件夾。也許這就是關鍵,deleteOnExit()只是不適用於文件夾? – Xendar

+0

對,'deleteOnExit()'僅適用於文件。 –

回答

0

我會使用類似具有FileUtils.deleteDirectory

+0

中提到,但我確實使用了這種實用方法(由jgit提供,但它是相同的) – Xendar