Class AttributesHandler

java.lang.Object
org.eclipse.jgit.attributes.AttributesHandler

public class AttributesHandler extends Object
The attributes handler knows how to retrieve, parse and merge attributes from the various gitattributes files. Furthermore it collects and expands macro expressions. The method getAttributes() yields the ready processed attributes for the current path represented by the TreeWalk

The implementation is based on the specifications in http://git-scm.com/docs/gitattributes

Since:
4.3
  • Field Details

  • Constructor Details

  • Method Details

    • getAttributes

      public Attributes getAttributes() throws IOException
      Returns:
      the Attributes for the current path represented by the TreeWalk
      Throws:
      IOException
    • mergeGlobalAttributes

      private void mergeGlobalAttributes(String entryPath, boolean isDirectory, Attributes result)
      Merges the matching GLOBAL attributes for an entry path.
      Parameters:
      entryPath - the path to test. The path must be relative to this attribute node's own repository path, and in repository path format (uses '/' and not '\').
      isDirectory - true if the target item is a directory.
      result - that will hold the attributes matching this entry path. This method will NOT override any existing entry in attributes.
    • mergeInfoAttributes

      private void mergeInfoAttributes(String entryPath, boolean isDirectory, Attributes result)
      Merges the matching INFO attributes for an entry path.
      Parameters:
      entryPath - the path to test. The path must be relative to this attribute node's own repository path, and in repository path format (uses '/' and not '\').
      isDirectory - true if the target item is a directory.
      result - that will hold the attributes matching this entry path. This method will NOT override any existing entry in attributes.
    • mergePerDirectoryEntryAttributes

      private void mergePerDirectoryEntryAttributes(String entryPath, int nameRoot, boolean isDirectory, @Nullable WorkingTreeIterator workingTreeIterator, @Nullable DirCacheIterator dirCacheIterator, @Nullable CanonicalTreeParser otherTree, Attributes result) throws IOException
      Merges the matching working directory attributes for an entry path.
      Parameters:
      entryPath - the path to test. The path must be relative to this attribute node's own repository path, and in repository path format (uses '/' and not '\').
      nameRoot - index of the '/' preceeding the current level, or -1 if none
      isDirectory - true if the target item is a directory.
      workingTreeIterator -
      dirCacheIterator -
      otherTree -
      result - that will hold the attributes matching this entry path. This method will NOT override any existing entry in attributes.
      Throws:
      IOException
    • mergeAttributes

      protected void mergeAttributes(@Nullable AttributesNode node, String entryPath, boolean isDirectory, Attributes result)
      Merges the matching node attributes for an entry path.
      Parameters:
      node - the node to scan for matches to entryPath
      entryPath - the path to test. The path must be relative to this attribute node's own repository path, and in repository path format (uses '/' and not '\').
      isDirectory - true if the target item is a directory.
      result - that will hold the attributes matching this entry path. This method will NOT override any existing entry in attributes.
    • expandMacro

      protected void expandMacro(Attribute attr, Attributes result)
      Expand a macro
      Parameters:
      attr - a Attribute
      result - contains the (recursive) expanded and merged macro attributes including the attribute iself
    • attributesNode

      private static AttributesNode attributesNode(TreeWalk treeWalk, @Nullable WorkingTreeIterator workingTreeIterator, @Nullable DirCacheIterator dirCacheIterator, @Nullable CanonicalTreeParser otherTree) throws IOException
      Get the AttributesNode for the current entry.

      This method implements the fallback mechanism between the index and the working tree depending on the operation type

      Parameters:
      treeWalk -
      workingTreeIterator -
      dirCacheIterator -
      otherTree -
      Returns:
      a AttributesNode of the current entry, NullPointerException otherwise.
      Throws:
      IOException - It raises an IOException if a problem appears while parsing one on the attributes file.
    • parentOf

      private static <T extends AbstractTreeIterator> T parentOf(@Nullable T node)
    • rootOf

      private static <T extends AbstractTreeIterator> T rootOf(@Nullable T node)