2017-08-28 7 views
2

すべてのファイルをプッシュするのではなく、特定のファイルを一度にプッシュしているgitリポジトリにプッシュするjavaプログラムを作成しました。addFilePatternはFileNotFoundExceptionをスローしません。追加するファイルが存在しない場合

try { 
    git.add().addFilePattern("files\\file1.txt").call(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

しかしfile1.txtが存在しない場合、catchブロックが入力されていません。私はCLIのGitと同じことを行う場合 、それは私がJGitを使用してJavaでこの例外をキャッチしたい

fatal: pathspec 'D:\mygit\files\\file1.txt' did not match any files 

として例外を提供します。

JGitバージョン4.6.0、Javaの1.8は、Windowsの10

答えて

1

JGitは存在しないパスaddFilepatern()を渡すとエラーとしてそれを考慮していません。したがって、この方法でもファイル名パターンを受け入れることができます。そして、そのようなパターンは、ファイルにマッチするかもしれません。

ファイルの存在を自分で確認する必要があります。いずれの例のJavaファイルAPI、と例えば

boolean fileExists = new File(repository.getWorkTree(), "file.txt").isFile(); 

またはAddCommand::call()から返さDirCache

DirCache dirCache = git.add().addFilePattern("file.txt").call(); 
boolean fileExists = dircache.findEntry("file.txt") >= 0; 
関連する問題