如果要添加的文件不存在,则addFilePattern不会抛出FileNotFoundException

时间:2017-08-28 08:51:02

标签: java git jgit

我已经编写了一个java程序来推送到git存储库,我一次推送特定文件而不是推送所有文件。

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

但如果file1.txt不存在,则不会输入catch块。 如果我使用CLI Git执行相同的操作,它会将异常视为

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

我想使用JGit在Java中捕获此异常。

JGit版本4.6.0,Java 1.8,Windows 10

1 个答案:

答案 0 :(得分:1)

JGit不会将传递不存在的路径addFilepatern()视为错误。因此,原因可能是该方法也接受文件名模式。这样的模式可能与文件匹配也可能不匹配。

您必须自己检查文件是否存在。使用Java文件API,例如

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

或通过DirCache返回的AddCommand::call(),例如

DirCache dirCache = git.add().addFilePattern( "file.txt" ).call();
boolean fileExists = dircache.findEntry( "file.txt" ) >= 0;