Uploaded image for project: 'Maven SCM'
  1. Maven SCM
  2. SCM-806

JGit impl should look for repositories in parent directories

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.9.4
    • 1.9.5
    • None
    • Patch

    Description

      The JGit SCM implementation only works if the path passed to its commands points to a Git repository directory or a directory that contains a Git repository directory. This behavior is different from the Git executable, which can be run in any subdirectory and will find the Git repository by searching parent directories.

      This difference creates a problem for the maven-release-plugin when used on flat multi-module projects. The prepare goal needs to check for SCM changes, and the JGit implementation will throw an exception, causing the release to fail. This happens because the path provided is the basedir of the project you invoke the plugin on, which is not the directory that contains the Git repository. As far as I can tell, there is no way to change the directory that maven-release-plugin passes during prepare. (The workingDirectory configuration option only affects the perform goal.)

      So I have created this patch to make the JGit implementation better mimic the GitExe implementation. It alters most of the commands (with the exception of CheckOut) to search parent directories for the repository and respect Git environment variables.

      Attachments

        1. jgit-patch.txt
          12 kB
          Richard DiCroce

        Activity

          People

            rfscholte Robert Scholte
            rcd Richard DiCroce
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: