/**
  * Expected fullPath format:
  *
  * <p>"<git revision hash>|<repository url>|<file relative path>"
  *
  * @param rootEntry indicates the association between VCS root and build configuration
  * @param fullPath change path from IDE patch
  * @return the mapped path
  */
 @NotNull
 public Collection<String> mapFullPath(
     @NotNull final VcsRootEntry rootEntry, @NotNull final String fullPath) {
   OperationContext context = createContext(rootEntry.getVcsRoot(), "map full path");
   try {
     return myMapFullPath.mapFullPath(context, rootEntry, fullPath);
   } catch (VcsException e) {
     LOG.warnAndDebugDetails(
         "Error while mapping path for root " + LogUtil.describe(rootEntry.getVcsRoot()), e);
     return Collections.emptySet();
   } catch (Throwable t) {
     LOG.error("Error while mapping path for root " + LogUtil.describe(rootEntry.getVcsRoot()), t);
     return Collections.emptySet();
   } finally {
     context.close();
   }
 }
 public Collection<VcsClientMapping> getClientMapping(
     final @NotNull VcsRoot root, final @NotNull IncludeRule rule) throws VcsException {
   final OperationContext context = createContext(root, "client-mapping");
   try {
     GitVcsRoot gitRoot = context.getGitRoot();
     URIish uri = gitRoot.getRepositoryFetchURL();
     return Collections.singletonList(
         new VcsClientMapping(
             String.format("|%s|%s", uri.toString(), rule.getFrom()), rule.getTo()));
   } finally {
     context.close();
   }
 }