addFilePattern не генерирует исключение FileNotFoundException, если добавляемый файл отсутствует

Я написал java-программу для отправки в репозиторий git, где я отправляю определенные файлы за раз, а не все файлы.

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

Но если file1.txt отсутствует, блок перехвата не вводится. Если я сделаю то же самое с CLI Git, он выдаст исключение как

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

Я хочу поймать это исключение в Java с помощью JGit.

JGit версии 4.6.0, Java 1.8, Windows 10


person Anu Chawla    schedule 28.08.2017    source источник


Ответы (1)


JGit не считает ошибкой передачу несуществующего пути addFilepatern(). Причина, следовательно, может заключаться в том, что метод также принимает шаблон имени файла. И такой шаблон может совпадать, а может и не совпадать с файлами.

Вам нужно будет проверить наличие файла самостоятельно. Либо с помощью API файлов Java, например

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;
person Rüdiger Herrmann    schedule 28.08.2017