public void buildPatches()

in git-server/src/main/java/jetbrains/buildServer/buildTriggers/vcs/git/patch/BulkPatchBuilderImpl.java [36:87]


  public void buildPatches(@NotNull final VcsRoot root,
                           @NotNull final CheckoutRules rules,
                           @NotNull final List<BulkPatchBuilderRequest> requests,
                           @NotNull final BulkPatchBuilder patch) throws VcsException, IOException {
    final OperationContext ctx = myVcs.createContext(root, "bulk patch " + requests.size() + " commits");
    GitVcsRoot gitRoot = ctx.getGitRoot();
    myVcs.getRepositoryManager().runWithDisabledRemove(gitRoot.getRepositoryDir(), () -> {
      try {
        final Repository myRepo = ctx.getRepository();
        final ObjectReader contentsReader = myRepo.getObjectDatabase().newReader();
        final ObjectReader treesReader = myRepo.getObjectDatabase().newReader();

        for (BulkPatchBuilderRequest request : requests) {
          final PatchBuilder patchBuilder = patch.startPatch(request);

          final String prevBase = request.getFromVersion();
          final String toBase = request.getToVersion();

          try {
            new GitPatchBuilder(ctx, patchBuilder, prevBase, toBase, rules, myConfig.verboseTreeWalkLog(), mySshMetaFactory) {
              @NotNull
              @Override
              protected ObjectReader newObjectReaderForTree() {
                return treesReader;
              }

              @NotNull
              @Override
              protected ContentLoaderFactory contentLoaderFactory() {
                return new ContentLoaderFactory() {
                  @Nullable
                  public ObjectLoader open(@NotNull final Repository repo, @NotNull final ObjectId id) throws IOException {
                    assert repo == myRepo;
                    return contentsReader.open(id);
                  }
                };
              }
            }.buildPatch();

          } catch (Throwable e) {
            throw new VcsException("Failed to build patch " + prevBase + " -> " + toBase + ". " + e.getMessage(), e);
          } finally {
            patch.endPatch(request, patchBuilder);
          }
        }
      } catch (Throwable e) {
        throw new VcsException("Failed to complete bulk patch." + e.getMessage(), e);
      } finally {
        ctx.close();
      }
    });
  }