Extract the logic to determine the commitId of a comment
We need the same logic in the context of ported comments (see I1a41bffe1) to get the commitId (= commit SHA-1) of a (change, targetPatchset, side) triple. Change-Id: Icce6ee3f36383225579efa4ac33f8a689d7b5702
This commit is contained in:
		@@ -57,6 +57,7 @@ import java.util.Map;
 | 
			
		||||
import java.util.Optional;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
import org.eclipse.jgit.lib.ObjectId;
 | 
			
		||||
import org.eclipse.jgit.lib.Ref;
 | 
			
		||||
import org.eclipse.jgit.lib.Repository;
 | 
			
		||||
 | 
			
		||||
@@ -411,15 +412,33 @@ public class CommentsUtil {
 | 
			
		||||
        ps.id(),
 | 
			
		||||
        c);
 | 
			
		||||
    if (c.getCommitId() == null) {
 | 
			
		||||
      if (Side.fromShort(c.side) == Side.PARENT) {
 | 
			
		||||
        if (c.side < 0) {
 | 
			
		||||
          c.setCommitId(cache.getOldId(change, ps, -c.side));
 | 
			
		||||
        } else {
 | 
			
		||||
          c.setCommitId(cache.getOldId(change, ps, null));
 | 
			
		||||
        }
 | 
			
		||||
      c.setCommitId(determineCommitId(cache, change, ps, c.side));
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Determines the SHA-1 of the commit referenced by the (change, patchset, side) triple.
 | 
			
		||||
   *
 | 
			
		||||
   * @param patchListCache the cache to use for SHA-1 lookups
 | 
			
		||||
   * @param change the change to which the commit belongs
 | 
			
		||||
   * @param patchset the patchset to which the commit belongs
 | 
			
		||||
   * @param side the side indicating which commit of the patchset to take. 1 is the patchset commit,
 | 
			
		||||
   *     0 the parent commit (or auto-merge for changes representing merge commits); -x the xth
 | 
			
		||||
   *     parent commit of a merge commit
 | 
			
		||||
   * @return the commit SHA-1
 | 
			
		||||
   * @throws PatchListNotAvailableException if the SHA-1 is unavailable for an unknown reason
 | 
			
		||||
   */
 | 
			
		||||
  public static ObjectId determineCommitId(
 | 
			
		||||
      PatchListCache patchListCache, Change change, PatchSet patchset, short side)
 | 
			
		||||
      throws PatchListNotAvailableException {
 | 
			
		||||
    if (Side.fromShort(side) == Side.PARENT) {
 | 
			
		||||
      if (side < 0) {
 | 
			
		||||
        return patchListCache.getOldId(change, patchset, -side);
 | 
			
		||||
      } else {
 | 
			
		||||
        c.setCommitId(ps.commitId());
 | 
			
		||||
        return patchListCache.getOldId(change, patchset, null);
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      return patchset.commitId();
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user