Class JGitUtils

java.lang.Object
org.apache.maven.scm.provider.git.jgit.command.JGitUtils

public class JGitUtils extends Object
JGit utility functions.
Since:
1.9
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private static final org.slf4j.Logger
     
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    private
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static List<ScmFile>
    addAllFiles(org.eclipse.jgit.api.Git git, ScmFileSet fileSet)
    Adds all files in the given fileSet to the repository.
    static void
    closeRepo(org.eclipse.jgit.api.Git git)
    Closes the repository wrapped by the passed git object.
    static org.eclipse.jgit.transport.CredentialsProvider
    Creates a credentials provider from the information passed in the repository.
    static List<ScmFile>
    getFilesInCommit(org.eclipse.jgit.lib.Repository repository, org.eclipse.jgit.revwalk.RevCommit commit)
    Get a list of all files in the given commit.
    static List<ScmFile>
    getFilesInCommit(org.eclipse.jgit.lib.Repository repository, org.eclipse.jgit.revwalk.RevCommit commit, File baseDir)
    Get a list of all files in the given commit.
    static org.eclipse.jgit.lib.ProgressMonitor
    Construct a logging ProgressMonitor for all JGit operations.
    static List<org.eclipse.jgit.revwalk.RevCommit>
    getRevCommits(org.eclipse.jgit.lib.Repository repo, org.eclipse.jgit.revwalk.RevSort[] sortings, String fromRev, String toRev, Date fromDate, Date toDate, int maxLines)
    Get a list of commits between two revisions.
    private static List<ScmFile>
    getScmFilesForAllFileSetFilesContainedInRepoPath(File workingCopyDirectory, ScmFileSet fileSet, Set<String> repoFilePaths, ScmFileStatus fileStatus)
     
    getScmFileStatus(org.eclipse.jgit.diff.DiffEntry.ChangeType changeType)
    Translate a FileStatus in the matching ScmFileStatus.
    static List<String>
    getTags(org.eclipse.jgit.lib.Repository repo, org.eclipse.jgit.revwalk.RevCommit commit)
    Get a list of tags that has been set in the specified commit.
    static List<File>
    getWorkingCopyRelativePaths(File workingCopyDirectory, ScmFileSet fileSet)
    Convert each file in the fileSet to their relative file path to workingCopyDirectory and return them in a list.
    static boolean
    hasCommits(org.eclipse.jgit.lib.Repository repo)
    Does the Repository have any commits?
    static org.eclipse.jgit.api.Git
    openRepo(File basedir)
    Opens a JGit repository in the current directory or a parent directory.
    static org.eclipse.jgit.transport.CredentialsProvider
    prepareSession(org.eclipse.jgit.api.Git git, GitScmProviderRepository repository)
    Prepares the in memory configuration of git to connect to the configured repository.
    static Iterable<org.eclipse.jgit.transport.PushResult>
    push(org.eclipse.jgit.api.Git git, GitScmProviderRepository repo, org.eclipse.jgit.transport.RefSpec refSpec, Set<org.eclipse.jgit.transport.RemoteRefUpdate.Status> successfulStatuses, Optional<org.eclipse.jgit.api.TransportConfigCallback> transportConfigCallback)
     
    private static File
    relativize(File baseDir, File file)
     
    static List<ScmFile>
    removeAllFiles(org.eclipse.jgit.api.Git git, ScmFileSet fileSet)
    Remove all files in the given fileSet from the repository.
    static String
    Converts the given file to a string only containing forward slashes.

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • LOGGER

      private static final org.slf4j.Logger LOGGER
  • Constructor Details

    • JGitUtils

      private JGitUtils()
  • Method Details

    • openRepo

      public static org.eclipse.jgit.api.Git openRepo(File basedir) throws IOException
      Opens a JGit repository in the current directory or a parent directory.
      Parameters:
      basedir - the directory to start with
      Throws:
      IOException - if the repository cannot be opened
    • closeRepo

      public static void closeRepo(org.eclipse.jgit.api.Git git)
      Closes the repository wrapped by the passed git object.
      Parameters:
      git -
    • getMonitor

      public static org.eclipse.jgit.lib.ProgressMonitor getMonitor()
      Construct a logging ProgressMonitor for all JGit operations.
      Returns:
      a ProgressMonitor for use
    • prepareSession

      public static org.eclipse.jgit.transport.CredentialsProvider prepareSession(org.eclipse.jgit.api.Git git, GitScmProviderRepository repository)
      Prepares the in memory configuration of git to connect to the configured repository. It configures the following settings in memory:
      • push url
      • fetch url

      Parameters:
      git - the instance to configure (only in memory, not saved)
      repository - the repo config to be used
      Returns:
      CredentialsProvider in case credential information is configured in the repository
    • getCredentials

      public static org.eclipse.jgit.transport.CredentialsProvider getCredentials(GitScmProviderRepository repository)
      Creates a credentials provider from the information passed in the repository. Current implementation supports:
      • UserName/Password

      Parameters:
      repository - the config to get the details from
      Returns:
      null if there is not enough info to create a provider with
    • push

      public static Iterable<org.eclipse.jgit.transport.PushResult> push(org.eclipse.jgit.api.Git git, GitScmProviderRepository repo, org.eclipse.jgit.transport.RefSpec refSpec, Set<org.eclipse.jgit.transport.RemoteRefUpdate.Status> successfulStatuses, Optional<org.eclipse.jgit.api.TransportConfigCallback> transportConfigCallback) throws PushException
      Throws:
      PushException
    • hasCommits

      public static boolean hasCommits(org.eclipse.jgit.lib.Repository repo)
      Does the Repository have any commits?
      Parameters:
      repo -
      Returns:
      false if there are no commits
    • getFilesInCommit

      public static List<ScmFile> getFilesInCommit(org.eclipse.jgit.lib.Repository repository, org.eclipse.jgit.revwalk.RevCommit commit) throws org.eclipse.jgit.errors.MissingObjectException, org.eclipse.jgit.errors.IncorrectObjectTypeException, org.eclipse.jgit.errors.CorruptObjectException, IOException
      Get a list of all files in the given commit.
      Parameters:
      repository - the repo
      commit - the commit to get the files from
      Returns:
      a list of files included in the commit
      Throws:
      org.eclipse.jgit.errors.CorruptObjectException
      org.eclipse.jgit.errors.IncorrectObjectTypeException
      IOException
      org.eclipse.jgit.errors.MissingObjectException
    • getFilesInCommit

      public static List<ScmFile> getFilesInCommit(org.eclipse.jgit.lib.Repository repository, org.eclipse.jgit.revwalk.RevCommit commit, File baseDir) throws org.eclipse.jgit.errors.MissingObjectException, org.eclipse.jgit.errors.IncorrectObjectTypeException, org.eclipse.jgit.errors.CorruptObjectException, IOException
      Get a list of all files in the given commit.
      Parameters:
      repository - the repo
      commit - the commit to get the files from
      baseDir - the directory to which the returned files should be relative. May be null in case they should be relative to the working directory root.
      Returns:
      a list of files included in the commit
      Throws:
      org.eclipse.jgit.errors.CorruptObjectException
      org.eclipse.jgit.errors.IncorrectObjectTypeException
      IOException
      org.eclipse.jgit.errors.MissingObjectException
    • getScmFileStatus

      public static ScmFileStatus getScmFileStatus(org.eclipse.jgit.diff.DiffEntry.ChangeType changeType)
      Translate a FileStatus in the matching ScmFileStatus.
      Parameters:
      changeType -
      Returns:
      the matching ScmFileStatus
    • addAllFiles

      public static List<ScmFile> addAllFiles(org.eclipse.jgit.api.Git git, ScmFileSet fileSet) throws org.eclipse.jgit.api.errors.GitAPIException
      Adds all files in the given fileSet to the repository.
      Parameters:
      git - the repo to add the files to
      fileSet - the set of files within the workspace, the files are added relative to the basedir of this fileset
      Returns:
      a list of added files
      Throws:
      org.eclipse.jgit.api.errors.GitAPIException
    • removeAllFiles

      public static List<ScmFile> removeAllFiles(org.eclipse.jgit.api.Git git, ScmFileSet fileSet) throws org.eclipse.jgit.api.errors.GitAPIException
      Remove all files in the given fileSet from the repository.
      Parameters:
      git - the repo to remove the files from
      fileSet - the set of files within the workspace, the files are removed relative to the basedir of this fileset
      Returns:
      a list of removed files
      Throws:
      org.eclipse.jgit.api.errors.GitAPIException
    • getWorkingCopyRelativePaths

      public static List<File> getWorkingCopyRelativePaths(File workingCopyDirectory, ScmFileSet fileSet)
      Convert each file in the fileSet to their relative file path to workingCopyDirectory and return them in a list.
      Parameters:
      workingCopyDirectory - the working copy root directory
      fileSet - the file set to convert
    • toNormalizedFilePath

      public static String toNormalizedFilePath(File file)
      Converts the given file to a string only containing forward slashes.
      Parameters:
      file -
      Returns:
      the normalized file path
    • getScmFilesForAllFileSetFilesContainedInRepoPath

      private static List<ScmFile> getScmFilesForAllFileSetFilesContainedInRepoPath(File workingCopyDirectory, ScmFileSet fileSet, Set<String> repoFilePaths, ScmFileStatus fileStatus)
    • relativize

      private static File relativize(File baseDir, File file)
    • getRevCommits

      public static List<org.eclipse.jgit.revwalk.RevCommit> getRevCommits(org.eclipse.jgit.lib.Repository repo, org.eclipse.jgit.revwalk.RevSort[] sortings, String fromRev, String toRev, Date fromDate, Date toDate, int maxLines) throws IOException, org.eclipse.jgit.errors.MissingObjectException, org.eclipse.jgit.errors.IncorrectObjectTypeException
      Get a list of commits between two revisions.
      Parameters:
      repo - the repository to work on
      sortings - sorting
      fromRev - start revision
      toRev - if null, falls back to head
      fromDate - from which date on
      toDate - until which date
      maxLines - max number of lines
      Returns:
      a list of commits, might be empty, but never null
      Throws:
      org.eclipse.jgit.errors.IncorrectObjectTypeException
      IOException
      org.eclipse.jgit.errors.MissingObjectException
    • getTags

      public static List<String> getTags(org.eclipse.jgit.lib.Repository repo, org.eclipse.jgit.revwalk.RevCommit commit) throws IOException
      Get a list of tags that has been set in the specified commit.
      Parameters:
      repo - the repository to work on
      commit - the commit for which we want the tags
      Returns:
      a list of tags, might be empty, and never null
      Throws:
      IOException