public DirCache call() throws GitAPIException,NoFilepatternException {if (filepatterns.isEmpty())throw new NoFilepatternException(JGitText.get().atLeastOnePatternIsRequired);checkCallable();DirCache dc = null;List<String> actuallyDeletedFiles = new ArrayList<>();try (TreeWalk tw = new TreeWalk(repo)) {dc = repo.lockDirCache();DirCacheBuilder builder = dc.builder();tw.reset(); tw.setRecursive(true);tw.setFilter(PathFilterGroup.createFromStrings(filepatterns));tw.addTree(new DirCacheBuildIterator(builder));while (tw.next()) {if (!cached) {final FileMode mode = tw.getFileMode(0);if (mode.getObjectType() == Constants.OBJ_BLOB) {String relativePath = tw.getPathString();final File path = new File(repo.getWorkTree(),relativePath);if (delete(path)) {actuallyDeletedFiles.add(relativePath);}}}}builder.commit();setCallable(false);} catch (IOException e) {throw new JGitInternalException(JGitText.get().exceptionCaughtDuringExecutionOfRmCommand, e);} finally {try {if (dc != null) {dc.unlock();}} finally {if (!actuallyDeletedFiles.isEmpty()) {repo.fireEvent(new WorkingTreeModifiedEvent(null,actuallyDeletedFiles));}}}return dc;}

public DirCache call ( ) throws GitAPIException , NoFilepatternException { if ( filepatterns . isEmpty ( ) ) throw new NoFilepatternException ( JGitText . get ( ) . atLeastOnePatternIsRequired ) ; checkCallable ( ) ; DirCache dc = null ; List < String > actuallyDeletedFiles = new ArrayList < > ( ) ; try ( TreeWalk tw = new TreeWalk ( repo ) ) { dc = repo . lockDirCache ( ) ; DirCacheBuilder builder = dc . builder ( ) ; tw . reset ( ) ; tw . setRecursive ( true ) ; tw . setFilter ( PathFilterGroup . createFromStrings ( filepatterns ) ) ; tw . addTree ( new DirCacheBuildIterator ( builder ) ) ; while ( tw . next ( ) ) { if ( ! cached ) { final FileMode mode = tw . getFileMode ( 0 ) ; if ( mode . getObjectType ( ) == Constants . OBJ_BLOB ) { String relativePath = tw . getPathString ( ) ; final File path = new File ( repo . getWorkTree ( ) , relativePath ) ; if ( delete ( path ) ) { actuallyDeletedFiles . add ( relativePath ) ; } } } } builder . commit ( ) ; setCallable ( false ) ; } catch ( IOException e ) { throw new JGitInternalException ( JGitText . get ( ) . exceptionCaughtDuringExecutionOfRmCommand , e ) ; } finally { try { if ( dc != null ) { dc . unlock ( ) ; } } finally { if ( ! actuallyDeletedFiles . isEmpty ( ) ) { repo . fireEvent ( new WorkingTreeModifiedEvent ( null , actuallyDeletedFiles ) ) ; } } } return dc ; }
public override DirCache Call(){if (filepatterns.IsEmpty()){throw new NoFilepatternException(JGitText.Get().atLeastOnePatternIsRequired);}CheckCallable();DirCache dc = null;try{dc = repo.LockDirCache();DirCacheBuilder builder = dc.Builder();TreeWalk tw = new TreeWalk(repo);tw.Reset();tw.Recursive = true;tw.Filter = PathFilterGroup.CreateFromStrings(filepatterns);tw.AddTree(new DirCacheBuildIterator(builder));while (tw.Next()){FilePath path = new FilePath(repo.WorkTree, tw.PathString);FileMode mode = tw.GetFileMode(0);if (mode.GetObjectType() == Constants.OBJ_BLOB){Delete(path);}}builder.Commit();SetCallable(false);}catch (IOException e){throw new JGitInternalException(JGitText.Get().exceptionCaughtDuringExecutionOfRmCommand, e);}finally{if (dc != null){dc.Unlock();}}return dc;}
