2016-07-06 8 views
0

Gitに慣れていないユーザにいくつかのGitコマンドを提案する小さなツールをビルドしています。コマンドはレポを変更するためのものではなく、いくつかの情報を参照するだけです。 私はJGitを使ってJavaでツールを作成していますが、これはこの種の処理に最適です。JGitで作業するときにローカルGitリポジトリを削除する

私が今まで直面した問題は、リポジトリコンテンツをホストするための一時フォルダを作成することですが、実行終了時に自動的に削除することはできません。ここで

は(私は読書を簡素化するための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

を持っているのApache Commonsの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

関連する問題