Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SCM-706] finer-grained handling of file rename status for gitexe provider... #31

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

sergei-ivanov
Copy link

..., rename source is not added to the set of files for commit operation anymore

This is an actualisation of the original Darryl L. Miles's patch from SCM-706.
All tests for gitexe provider are passing locally.
I've also confirmed locally that it fixes the release-with-pom behaviour in maven-release-plugin under git.

@sergei-ivanov
Copy link
Author

Can you please also take a look at #26, which touches the same area. It would make sense to apply these two patches in one go.

@sergei-ivanov
Copy link
Author

Rebased the PR on top of the current master

@indrgun
Copy link

indrgun commented Oct 30, 2015

When can this PR be approved and merged? We have migrated from SVN to Git/Stash but we can't use release-with-pom anymore and the team is not happy.

@indrgun
Copy link

indrgun commented Feb 2, 2016

HI sergei,

I patched the latest scm with the patch on top, built it as version 1.9.5-beta-1 and use it with version 2.5 maven release plugin as such:

      <id>release-profile</id>
      <build>
        <plugins>
      ...
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5</version>
             <dependencies>
                <dependency>
                    <groupId>org.apache.maven.scm</groupId>
                    <artifactId>maven-scm-api</artifactId>
                    <version>1.9.5-beta-1</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.maven.scm</groupId>
                    <artifactId>maven-scm-provider-gitexe</artifactId>
                    <version>1.9.5-beta-1</version>
                </dependency>
             </dependencies>
            <configuration>
              <scmCommentPrefix>${release.commit.comment} [maven-release-plugin]</scmCommentPrefix>
              <preparationGoals>-s ${release.settings.file} clean install -DskipTests=true</preparationGoals>
              <goals>-s ${release.settings.file} deploy -DskipTests=true</goals>
              <username>${release.commit.user}</username>
              <localCheckout>true</localCheckout>
             <!-- <autoVersionSubmodules>true</autoVersionSubmodules> -->
            </configuration>
            <executions>
                 <execution>
                    <id>default</id>
                    <goals>
                        <goal>perform</goal>
                  </goals>
                 <configuration>
                        <pomFileName>apic_int/comp/ifm_apic_rest/pom.xml</pomFileName>
                </configuration>
             </execution>
          </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

However I am getting error:

[INFO] Checking in modified POMs...
[INFO] Executing: /bin/sh -c cd /scratch/jenkinsci-ws/workspace/apic-int-ifm_apic_rest/apic_int/comp/ifm_apic_rest && git rev-parse --show-toplevel
[INFO] Working directory: /scratch/jenkinsci-ws/workspace/apic-int-ifm_apic_rest/apic_int/comp/ifm_apic_rest
[INFO] Executing: /bin/sh -c cd /scratch/jenkinsci-ws/workspace/apic-int-ifm_apic_rest/apic_int/comp/ifm_apic_rest && git status --porcelain .
[INFO] Working directory: /scratch/jenkinsci-ws/workspace/apic-int-ifm_apic_rest/apic_int/comp/ifm_apic_rest
[WARNING] Ignoring unrecognized line: ?? apic_int/comp/ifm_apic_rest/pom.xml.releaseBackup
[WARNING] Ignoring unrecognized line: ?? apic_int/comp/ifm_apic_rest/release.properties
[INFO] Executing: /bin/sh -c cd /scratch/jenkinsci-ws/workspace/apic-int-ifm_apic_rest/apic_int/comp/ifm_apic_rest && git add -- apic_int/comp/ifm_apic_rest/pom.xml apic_int/comp/ifm_apic_rest/release-pom.xml
[INFO] Working directory: /scratch/jenkinsci-ws/workspace/apic-int-ifm_apic_rest/apic_int/comp/ifm_apic_rest
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:52 min
[INFO] Finished at: 2016-02-02T13:09:29-08:00
[INFO] Final Memory: 58M/378M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.3:prepare-with-pom (default-cli) on project ifm_apic_rest: Unable to commit files
[ERROR] Provider message:
[ERROR] The git-add command failed.
[ERROR] Command output:
[ERROR] fatal: pathspec 'apic_int/comp/ifm_apic_rest/pom.xml' did not match any files

I am wondering about which version of maven-release-plugin did you try the patch with? Did you run 'release-with-pom'?

Thank you
-Indra

@sergei-ivanov
Copy link
Author

@indrgun
I tested it on a vanilla project, which did not have any major config alterations for the release plugin.
I wonder if the following bit of configuration kicks in and messes up the relative paths:

<configuration>
    <pomFileName>apic_int/comp/ifm_apic_rest/pom.xml</pomFileName>
</configuration>

Because you can see that Maven actually changes to that directory, but then passes to the git command a path to the pom, which is relative to the top-level project directory.
Does mvn release:prepare (not prepare-with-pom) work for you with the same version of m-r-p and the same settings, but without the SCM provider patch? I have a feeling that the issue you are facing may be of a different nature than this patch is trying to address.
Alternatively, you may try prefixing the pomFileName path with ${project.basedir}, which will turn it into an absolute path.

@indrgun
Copy link

indrgun commented Feb 3, 2016

With maven-release-plugin version 2.5 and dependency on
maven-scm-provider-gitexe version 1.9.1 including that configuration (our
pom.xml is not on root of git repo), mvn release prepare works.
On Feb 2, 2016 4:04 PM, "Sergei Ivanov" [email protected] wrote:

@indrgun https://github.com/indrgun
I tested it on a vanilla project, which did not have any major config
alterations for the release plugin.
I wonder if the following bit of configuration kicks in and messes up the
relative paths:

apic_int/comp/ifm_apic_rest/pom.xml

Because you can see that Maven actually changes to that directory, but
then passes to the git command a path to the pom, which is relative to the
top-level project directory.
Does mvn release:prepare (not prepare-with-pom) work for you with the
same version of m-r-p and the same settings, but without the SCM provider
patch? I have a feeling that the issue you are facing may be of a different
nature than this patch is trying to address.
Alternatively, you may try prefixing the pomFileName path with
${project.basedir}, which will turn it into an absolute path.


Reply to this email directly or view it on GitHub
#31 (comment).

@indrgun
Copy link

indrgun commented Feb 3, 2016

I do not specify pomFileName for maven release prepare plugin here.

@sergei-ivanov
Copy link
Author

What is the command line you are using, and what is the directory you are running it from, and where is the root of your git repo (my guess is /scratch/jenkinsci-ws/workspace/apic-int-ifm_apic_rest/)? Do you need to activate release-profile explicitly? I still think it may be a combination of factors that results in the above error, but I'll also take another look at my patch now.

@indrgun
Copy link

indrgun commented Feb 3, 2016

The command line supplied to Jenkins maven release field in maven project:

"-Dresume=false -Prelease-profile release:prepare-with-pom release:perform -s ${M2_HOME}/conf/settings-rel.xml"

                 <execution>
                    <id>default</id>
                    <goals>
                        <goal>perform</goal>
                  </goals>
                 <configuration>
                        <pomFileName>comp/ifm_apic_rest/pom.xml</pomFileName>
                </configuration>
             </execution>
          </executions>

I presume should apply when maven perform goal runs. I guess it is used by release-prepare-with-pom.

@sergei-ivanov
Copy link
Author

Actually I thnk you may be onto something here. It looks like the patch may have a problem with relative paths, when it is not run from the root of the git repository. I'll need to rebuild my test set-up and try it.

@sergei-ivanov
Copy link
Author

What if you remove the default 'perform' execution completely and instead append the parameter to <goals> as -DpomFileName=apic_int/comp/ifm_apic_rest/pom.xml ?

Again, it may not solve the problem if you are running from a subdirectory.

@indrgun
Copy link

indrgun commented Feb 3, 2016

There are actually 2 separate patches: patch #31 and patch #26. Which one has the problem?

I applied your patch #31 and I tried it and got same error.
I then applied patch #26 and same error still persists.

@sergei-ivanov
Copy link
Author

I haven't tried #26 and I do not think it makes any difference here. I think the problem is with #31 in the way it tries to calculate the set of files fo be added to git.

@indrgun
Copy link

indrgun commented Feb 3, 2016

I am getting same error:

[INFO] Checking in modified POMs...
[INFO] Executing: /bin/sh -c cd /scratch/jenkinsci-ws/workspace/apic-int-ifm_apic_rest/apic_int/comp/ifm_apic_rest && git rev-parse --show-toplevel
[INFO] Working directory: /scratch/jenkinsci-ws/workspace/apic-int-ifm_apic_rest/apic_int/comp/ifm_apic_rest
[INFO] Executing: /bin/sh -c cd /scratch/jenkinsci-ws/workspace/apic-int-ifm_apic_rest/apic_int/comp/ifm_apic_rest && git status --porcelain .
[INFO] Working directory: /scratch/jenkinsci-ws/workspace/apic-int-ifm_apic_rest/apic_int/comp/ifm_apic_rest
[WARNING] Ignoring unrecognized line: ?? apic_int/comp/ifm_apic_rest/pom.xml.releaseBackup
[WARNING] Ignoring unrecognized line: ?? apic_int/comp/ifm_apic_rest/release.properties
[INFO] Executing: /bin/sh -c cd /scratch/jenkinsci-ws/workspace/apic-int-ifm_apic_rest/apic_int/comp/ifm_apic_rest && git add -- apic_int/comp/ifm_apic_rest/pom.xml apic_int/comp/ifm_apic_rest/release-pom.xml
[INFO] Working directory: /scratch/jenkinsci-ws/workspace/apic-int-ifm_apic_rest/apic_int/comp/ifm_apic_rest
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:59 min
[INFO] Finished at: 2016-02-02T17:10:06-08:00
[INFO] Final Memory: 60M/351M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.3:prepare-with-pom (default-cli) on project ifm_apic_rest: Unable to commit files
[ERROR] Provider message:
[ERROR] The git-add command failed.
[ERROR] Command output:
[ERROR] fatal: pathspec 'apic_int/comp/ifm_apic_rest/pom.xml' did not match any files
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 

with command line:
-Dresume=false -Prelease-profile release:prepare-with-pom release:perform -s ${M2_HOME}/conf/settings-rel.xml -DpomFileName=apic_int/comp/ifm_apic_rest/pom.xml

@indrgun
Copy link

indrgun commented Feb 3, 2016

You are right the patch #31 does not work probably if the pom.xml is not in the root directory of git repo.
I removed pomFileName in pom.xml and also in the command line and I am still getting same error.

@indrgun
Copy link

indrgun commented Feb 3, 2016

why the git add appends the subdir path again to the pom.xml? This does not happen with maven release prepare goal.

[WARNING] Ignoring unrecognized line: ?? apic_int/comp/ifm_apic_rest/pom.xml.releaseBackup
[WARNING] Ignoring unrecognized line: ?? apic_int/comp/ifm_apic_rest/release.properties
[INFO] Executing: /bin/sh -c cd /scratch/jenkinsci-ws/workspace/apic-int-ifm_apic_rest/apic_int/comp/ifm_apic_rest && git add -- apic_int/comp/ifm_apic_rest/pom.xml apic_int/comp/ifm_apic_rest/release-pom.xml
[INFO] Working directory: /scratch/jenkinsci-ws/workspace/apic-int-ifm_apic_rest/apic_int/comp/ifm_apic_rest
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:38 min
[INFO] Finished at: 2016-02-02T17:16:34-08:00
[INFO] Final Memory: 58M/376M
[INFO] ------------------------------------------------------------------------
Waiting for Jenkins to finish collecting data[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.3:prepare-with-pom (default-cli) on project ifm_apic_rest: Unable to commit files
[ERROR] Provider message:
[ERROR] The git-add command failed.
[ERROR] Command output:
[ERROR] fatal: pathspec 'apic_int/comp/ifm_apic_rest/pom.xml' did not match any files

@sergei-ivanov
Copy link
Author

Maven passes release-pom.xml and pom.xml to the GitCheckInCommand. Previously, it would attempt to git add both before doing the git commit. Naturally, that would fail for release-pom.xml, which was deleted, not added. The purpose of patch #31 was to run the status command and to figure out, which of the specified files actually need to be added. Unfortunately, git status returns paths relative to git root, and there appears to be a problem converting them back to the paths relative to the working directory. I have spent the last couple of hours trying to figure out what is going wrong there, and I think it works correctly when the git root is equal to or below the working directory, but does not work when the working directory is below the git root.

@indrgun
Copy link

indrgun commented Feb 3, 2016

Without the patch, using version 1.9.1 of maven-scm-api and maven-scm-provider-gitexe, I am running into git add error that is different:

[INFO] Working directory: /scratch/jenkinsci-ws/workspace/apic-int-ifm_apic_rest/apic_int/comp/ifm_apic_rest
[INFO] Executing: /bin/sh -c cd /scratch/jenkinsci-ws/workspace/apic-int-ifm_apic_rest/apic_int/comp/ifm_apic_rest && git ls-files
[INFO] Working directory: /scratch/jenkinsci-ws/workspace/apic-int-ifm_apic_rest/apic_int/comp/ifm_apic_rest
[INFO] Transforming 'ifm_apic_rest'...
[INFO] Removing release POM for 'ifm_apic_rest'...
[INFO] Executing: /bin/sh -c cd /scratch/jenkinsci-ws/workspace/apic-int-ifm_apic_rest/apic_int/comp/ifm_apic_rest && git rm release-pom.xml
[INFO] Working directory: /scratch/jenkinsci-ws/workspace/apic-int-ifm_apic_rest/apic_int/comp/ifm_apic_rest
[INFO] Checking in modified POMs...
[INFO] Executing: /bin/sh -c cd /scratch/jenkinsci-ws/workspace/apic-int-ifm_apic_rest/apic_int/comp/ifm_apic_rest && git add -- pom.xml release-pom.xml
[INFO] Working directory: /scratch/jenkinsci-ws/workspace/apic-int-ifm_apic_rest/apic_int/comp/ifm_apic_rest
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:45 min
[INFO] Finished at: 2016-02-03T11:05:11-08:00
[INFO] Final Memory: 60M/386M
[INFO] ------------------------------------------------------------------------
Waiting for Jenkins to finish collecting data[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5:prepare-with-pom (default-cli) on project ifm_apic_rest: Unable to commit files
[ERROR] Provider message:
[ERROR] The git-add command failed.
[ERROR] Command output:
[ERROR] fatal: pathspec 'release-pom.xml' did not match any files

The release-pom.xml was actually deleted by git but the subsequent git add wanted to add it.

As you said the patch is supposed to fix this.

@ykhandelwal913
Copy link

When can we expect a release for this commit?

@olamy
Copy link
Member

olamy commented Jun 21, 2016

@YogiKhan see the message "This branch has conflicts that must be resolved"

@ykhandelwal913
Copy link

@sergei-ivanov can we resolve that.

This plugin is quite powerful and we are waiting for so long to get that bug fix. Can you please resolve and merge.

…der, rename source is not added to the set of files for commit operation anymore
@sergei-ivanov
Copy link
Author

@olamy I've done a rebase onto the latest master and re-pushed the changes to the PR branch.

However, there still exists an unresolved regression (as pointed out by @indrgun), when the release is being run for a submodule of a bigger project. In that case, the working directory is a number of levels down from the git repository root, and somewhere in the git scm provider code there's a subtle bug related to path relativisation. I spent a few hours trying to track it down, and still could not put my finger on it. I would really appreciate it if someone like @rfscholte took a look at it, because he had previously invested a lot of effort in that area, and may still have a better idea of what is going on there.

@ykhandelwal913
Copy link

ykhandelwal913 commented Jun 21, 2016

Thanks @sergei-ivanov

@olamy can we merge that and create a release ? is it gonna take time?

and once merge done, hope it will resolve the below error.

[ERROR] Provider message:
[ERROR] The git-add command failed.
[ERROR] Command output:
[ERROR] fatal: pathspec 'release-pom.xml' did not match any files
[ERROR] -> [Help 1]

@ykhandelwal913
Copy link

@sergei-ivanov, till it get merge, where i can find the 1.9.5-beta1 version? So that i can test it ?

@sergei-ivanov
Copy link
Author

sergei-ivanov commented Jun 21, 2016

@YogiKhan you will need to build this PR branch of maven-scm, and then build https://github.com/apache/maven-release project against it. Then you'll need to update the version of maven-release-plugin in your own project to the version you've just built and test it.

@sergei-ivanov
Copy link
Author

I need help with that from the Apache team.
In the original version of GitCheckInCommand, just before committing, the list of files to be committed was passed to git add. This ensured that all the new files were staged into the commit.
Unfortunately, it did not work when there were deleted files in that list. So, the patched version attempts to check git status on each of the files in the list, in order to filter out the deleted files from the list. See the changes in GitCheckInCommand.
Here is a problem though. Some of the git commands assume file paths relative to the working directory, while the other work with paths relative to the git repository root. Accordingly, the file paths need to be converted back and forth, and it seems that at some point we have a mismatch.
This caused grief previously (https://issues.apache.org/jira/browse/SCM-709) and it looks like we are observing yet another manifestation of the same problem.

@rfscholte
Copy link
Contributor

I think we missed something. GitStatusConsumer says

/**
 * Entries are relative to working directory, not to the repositoryroot
 */
private List<ScmFile> changedFiles = new ArrayList<ScmFile>();

That was probably true before introducing the --porcelain argument, because the related git-status docs says

Porcelain Format
The porcelain format is similar to the short format, but is guaranteed not to change in a backwards-incompatible way between Git versions or based on user configuration. This makes it ideal for parsing by scripts. The description of the short format above also describes the porcelain format, with a few exceptions:
1.The user’s color.status configuration is not respected; color will always be off.
2.The user’s status.relativePaths configuration is not respected; paths shown will always be relative to the repository root.

So we need to go through the codebase to verify if the proper paths are used.

@ykhandelwal913
Copy link

@sergei-ivanov can you take a look at what @rfscholte suggested.

After running it manually suggested by you, things works for root but not working for submodules.
Also release-pom.xml should not get checked-in, thats why i think we had the git rm to remove those.
Once we add the pom and release-pom.xml to git tag, we need to remove the release-pom.xml from tag.

@sergei-ivanov
Copy link
Author

@YogiKhan Unfortunately, I haven't got the resources to actively work on this issue. I've already spent an awful lot of time debugging it, and still have no clear idea where exactly it goes wrong. At some point I had an suspicion that we were relativising the wrong way round, but when I played around again yesterday, it kind of made sense what was going on there. What scares me is that this code appears to be quite sensitive to changes, and any change in working directory logic may cause unwanted side effects elsewhere. Feel free to fork my fork and experiment. I guess the way to go might be by rigging proper integration tests to cover all cases we are dealing with.

@rfscholte
Copy link
Contributor

What scares me is that this code appears to be quite sensitive to changes
I totally agree. I tested with making changedFiles relative to repo instead of working directory and all unittests stayed green. That is not a good sign, so we must really work on that too.

@frekele
Copy link

frekele commented Jul 22, 2016

This bug is critical because it is impossible to work with release:prepare-with-pom.

Example of use:

jenkinsfile

#!groovy

MAIL_FROM = '[email protected]'
MAIL_TO = '[email protected]'
GITHUB_PROTOCOL = 'https'
GITHUB_CREDENTIAL_ID = 'xxxxx-xxxx-xxxx-xxxx-xxxxxxxxx'
GITHUB_USER_NAME = 'xxxx-tools'
GITHUB_USER_EMAIL = '[email protected]'
GITHUB_REPO = 'github.com/xxxx/myapp'

node {

    try {
        properties(
                [
                        [
                                // Mantem os ultimos 10 log builds.
                                $class  : 'jenkins.model.BuildDiscarderProperty',
                                strategy: [
                                        $class      : 'LogRotator',
                                        numToKeepStr: '10'
                                ]
                        ],
                        [
                                $class       : 'GithubProjectProperty',
                                displayName  : '',
                                projectUrlStr: "${GITHUB_PROTOCOL}://${GITHUB_REPO}"
                        ]
                ]
        )


        env.JAVA_HOME = tool 'JDK8'
        env.MAVEN_HOME = tool 'Maven3'
        env.PATH = "${env.JAVA_HOME}/bin:${env.MAVEN_HOME}/bin:${env.PATH}"

        env.MAVEN_OPTS = "-Xms256m -Xmx1024m -Dfile.encoding=UTF8"
        env.MAVEN_OPTS = "${env.MAVEN_OPTS} -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true"

        sh "java -version"
        sh "javac -version"
        sh "mvn -v"


        stage 'Clean Workspace'
        deleteDir()
        sh 'env'


        stage 'Git Checkout Source'
        sh "git config --global user.name ${GITHUB_USER_NAME}"
        sh "git config --global user.email ${GITHUB_USER_EMAIL}"
        //checkout scm
        checkout(
                [
                        $class                           : 'GitSCM',
                        branches                         : [
                                [
                                        name: "${env.BRANCH_NAME}"
                                ]
                        ],
                        doGenerateSubmoduleConfigurations: false,
                        extensions                       : [
                                [
                                        $class: 'WipeWorkspace'
                                ],
                                [
                                        $class: 'CleanBeforeCheckout'
                                ],
                                [
                                        $class: 'AuthorInChangelog'
                                ],
                                [
                                        $class: 'UserIdentity',
                                        email : "${GITHUB_USER_EMAIL}",
                                        name  : "${GITHUB_USER_NAME}"
                                ]
                        ],
                        submoduleCfg                     : [],
                        userRemoteConfigs                : [
                                [
                                        credentialsId: "${GITHUB_CREDENTIAL_ID}",
                                        url          : "${GITHUB_PROTOCOL}://${GITHUB_REPO}.git"
                                ]
                        ]
                ]
        )


        stage 'Build Maven Module'
        sh "mvn clean install -DskipTests=true -DskipITs=true -U"


        stage 'Unit Test'
        sh "mvn test verify -DskipTests=false -DskipITs=true"


        stage 'Nexus Deploy Artifact'
        if (env.BRANCH_NAME == 'master') {
            sh "mvn deploy -Pnexus-deploy"

        } else if (env.BRANCH_NAME == 'stable') {
            //sh "mvn --batch-mode release:clean release:prepare release:perform -Ppublish-release"
            sh "mvn --batch-mode release:clean release:prepare-with-pom release:perform -Ppublish-release"
            withCredentials(
                    [
                            [
                                    $class          : 'UsernamePasswordMultiBinding',
                                    credentialsId   : "${GITHUB_CREDENTIAL_ID}",
                                    usernameVariable: 'GIT_USERNAME',
                                    passwordVariable: 'GIT_PASSWORD'
                            ]
                    ]) {
                //ref: http://vincent.demeester.fr/posts/2012-07-23-maven-release-gitflow/
                // create a release branch from stable.
                sh "git branch release"
                // go to the master branch
                sh "git checkout master"
                // merge release into master but
                sh "git merge release"
                // Removing the release branch
                sh "git branch -d release"
                // Finally push everything
                sh "git push ${GITHUB_PROTOCOL}://${env.GIT_USERNAME}:${env.GIT_PASSWORD}@${GITHUB_REPO}.git --all"
                sh "git push ${GITHUB_PROTOCOL}://${env.GIT_USERNAME}:${env.GIT_PASSWORD}@${GITHUB_REPO}.git --tags"
                //Upload artifacts into github releases.
                sh "mvn -f release-pom.xml --batch-mode github-release:release"
            }
        }

    }
    catch (Exception ex) {
        mail from: "${MAIL_FROM}",
                to: "${MAIL_TO}",
                subject: "[FAILURE]  💩  😵  [JENKINS] ${env.JOB_NAME} - Build # ${env.BUILD_NUMBER} - [FAILURE]!  👻  😭  ",
                body: "${env.JOB_NAME} - Build # ${env.BUILD_NUMBER} - FAILURE (${ex.message})!"
        throw ex
    }

}

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <name>myapp</name>
    <groupId>br.com.myapp</groupId>
    <artifactId>myapp</artifactId>
    <packaging>war</packaging>
    <version>2.0.3-SNAPSHOT</version>

    <scm>
        <url>https://github.com/xxxx/myapp</url>
        <connection>scm:git:https://github.com/xxxx/myapp.git</connection>
        <developerConnection>scm:git:https://github.com/xxxx/myapp.git</developerConnection>
        <tag>HEAD</tag>
    </scm>

    <issueManagement>
        <url>https://github.com/xxxx/myapp/issues</url>
        <system>GitHub Issues</system>
    </issueManagement>


    <properties>
        <encoding>UTF-8</encoding>
        <file.encoding>UTF-8</file.encoding>
        <console.encoding>UTF-8</console.encoding>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <javaee-endorsed-api.version>7.0</javaee-endorsed-api.version>
        <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>

        ....

        <!-- Inicio Maven Plugins-->
        <maven-compiler-plugin.version>3.5.1</maven-compiler-plugin.version>
        <maven-javadoc-plugin.version>2.10.4</maven-javadoc-plugin.version>
        <maven-source-plugin.version>3.0.1</maven-source-plugin.version>
        <maven-war-plugin.version>2.6</maven-war-plugin.version>
        <maven-install-plugin.version>2.5.2</maven-install-plugin.version>
        <maven-dependency-plugin.version>2.10</maven-dependency-plugin.version>
        <maven-deploy-plugin.version>2.8.2</maven-deploy-plugin.version>
        <maven-resources-plugin.version>3.0.1</maven-resources-plugin.version>
        <maven-surefire-plugin.version>2.19.1</maven-surefire-plugin.version>
        <maven-failsafe-plugin.version>2.19.1</maven-failsafe-plugin.version>
        <maven-release-plugin.version>2.5.3</maven-release-plugin.version>
        <versions-maven-plugin.version>2.2</versions-maven-plugin.version>
        <maven-scm-plugin.version>1.9.5</maven-scm-plugin.version>
        <github-release-plugin.version>1.1.1</github-release-plugin.version>
        <wildfly-server-provisioning-maven-plugin.version>1.1.6.Final</wildfly-server-provisioning-maven-plugin.version>
        <cargo-maven2-plugin.version>1.5.0</cargo-maven2-plugin.version>
        <!-- Fim Maven Plugins-->

        ...

        <wildfly-full-name>wildfly-${wildfly.version}</wildfly-full-name>
        <widlfy.home.dir>${project.basedir}/target/${wildfly-full-name}</widlfy.home.dir>

        <!--Não gera javadoc e source - utilizado true somente no jenkins-->
        <!-- mvn maven.javadoc.skip=true : Skips Generate JavaDoc .jar-->
        <maven.javadoc.skip>true</maven.javadoc.skip>

        <!-- mvn maven.source.skip=true : Skips Generate JavaSource .jar -->
        <!--<maven.source.skip>true</maven.source.skip>-->
        <maven.source.skip>true</maven.source.skip>

        <!-- mvn install -DskipTests : Skips All tests - Unit and Integration tests -->
        <skipTests>true</skipTests>
        <!-- mvn install -DskipITs : Skips Integration tests -->
        <skipITs>true</skipITs>

        <!--prefixo para arquivos para testng/suite-unit-${suiteTests}.xml e testng/suite-integration-${suiteITs}.xml -->
        <!-- All eh o padrao para todos os testes -->
        <suiteTests>all</suiteTests>
        <suiteITs>all</suiteITs>

    </properties>


    <!-- Ordem das dependencias é influenciavel-->
    <dependencyManagement>
        <dependencies>
            <!-- INICIO - Configuracoes para Arquilian-->
            <dependency>
                <groupId>org.jboss.arquillian</groupId>
                <artifactId>arquillian-bom</artifactId>
                <version>${arquillian.version}</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>

            <dependency>
                <groupId>org.jboss.shrinkwrap.resolver</groupId>
                <artifactId>shrinkwrap-resolver-bom</artifactId>
                <version>${shrinkwrap-resolver.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- FIM - Configuracoes para Arquilian-->

            <!-- INICIO - Configuracoes para WILDFLY -->
            <dependency>
                <groupId>org.wildfly.bom</groupId>
                <artifactId>wildfly-javaee7</artifactId>
                <version>${wildfly-bom.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.wildfly.bom</groupId>
                <artifactId>wildfly-javaee7-with-tools</artifactId>
                <version>${wildfly-bom.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- FIM - Configuracoes para WILDFLY -->

        </dependencies>
    </dependencyManagement>


    <dependencies>
       ....
    </dependencies>


    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
            <resource>
                <directory>src/main/version</directory>
                <filtering>true</filtering>
            </resource>
        </resources>

        <testSourceDirectory>src/test/java</testSourceDirectory>
        <testResources>
            <testResource>
                <directory>src/test/resources</directory>
                <filtering>true</filtering>
            </testResource>
        </testResources>

        <pluginManagement>
            <plugins>
                ....
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <!--compilerArgument>-Xlint:unchecked</compilerArgument-->
                    <!--proc>${maven.compiler.proc}</proc-->
                    <source>${maven.compiler.source}</source>
                    <target>${maven.compiler.target}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                    <!--<compilerArgument>-->
                    <!-- -Xlint:unchecked-->
                    <!--</compilerArgument>-->
                    <compilerArguments>
                        <endorseddirs>${endorsed.dir}</endorseddirs>
                    </compilerArguments>
                    <debug>true</debug>
                    <showWarnings>true</showWarnings>
                    <showDeprecation>true</showDeprecation>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <skip>${maven.javadoc.skip}</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <configuration>
                    <skipSource>${maven.source.skip}</skipSource>
                </configuration>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${endorsed.dir}</outputDirectory>
                            <silent>true</silent>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>javax</groupId>
                                    <artifactId>javaee-endorsed-api</artifactId>
                                    <version>${javaee-endorsed-api.version}</version>
                                    <type>jar</type>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>

                    <execution>
                        <id>unpack</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <skip>${skipITs}</skip>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>org.wildfly</groupId>
                                    <artifactId>wildfly-dist</artifactId>
                                    <version>${wildfly.version}</version>
                                    <type>zip</type>
                                    <overWrite>false</overWrite>
                                    <outputDirectory>target</outputDirectory>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>

                    <execution>
                        <id>copy-db-driver</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <skip>${skipITs}</skip>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>org.postgresql</groupId>
                                    <artifactId>postgresql</artifactId>
                                    <version>${postgresql.version}</version>
                                    <outputDirectory>${widlfy.home.dir}/modules/org/postgresql/main</outputDirectory>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>


            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-standalone-xml</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${widlfy.home.dir}/standalone/configuration</outputDirectory>
                            <encoding>${project.build.sourceEncoding}</encoding>
                            <overwrite>true</overwrite>
                            <resources>
                                <resource>
                                    <directory>${project.basedir}/src/test/resources</directory>
                                    <includes>
                                        <include>standalone.xml</include>
                                    </includes>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                    <execution>
                        <id>copy-postgresql-module-xml</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${widlfy.home.dir}/modules/org/postgresql/main</outputDirectory>
                            <encoding>${project.build.sourceEncoding}</encoding>
                            <overwrite>true</overwrite>
                            <resources>
                                <resource>
                                    <directory>${project.basedir}/src/test/resources/modules/postgresql</directory>
                                    <includes>
                                        <include>module.xml</include>
                                    </includes>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>jacoco-initialize</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>jacoco-report</id>
                        <!--phase>prepare-package</phase-->
                        <phase>verify</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- WildFly plugin to deploy -->
            <plugin>
                <groupId>org.wildfly.plugins</groupId>
                <artifactId>wildfly-maven-plugin</artifactId>
            </plugin>


            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <!--suppress MavenModelInspection -->
                    <argLine>${argLine} -Xmx1124m -Xms256m</argLine>
                    <skipTests>${skipTests}</skipTests>
                    <suiteXmlFiles>
                        <suiteXmlFile>${project.basedir}/src/test/resources/testng/suite-unit-${suiteTests}.xml
                        </suiteXmlFile>
                    </suiteXmlFiles>
                </configuration>
                <!--configuration>
                    <suppress MavenModelInspection >
                    <argLine>${argLine} -Xmx1124m -Xms256m</argLine>
                    <systemPropertyVariables>
                        <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
                        <jboss.home>${widlfy.home.dir}</jboss.home>
                        <module.path>${widlfy.home.dir}/modules</module.path>
                    </systemPropertyVariables>
                    <redirectTestOutputToFile>true</redirectTestOutputToFile>
                </configuration-->
            </plugin>


            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <configuration>
                    <skipTests>${skipTests}</skipTests>
                    <skipITs>${skipITs}</skipITs>
                    <argLine>-Xmx1024m -Xms256m</argLine>
                    <systemPropertyVariables>
                        <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
                        <jboss.home>${widlfy.home.dir}</jboss.home>
                        <!--module.path>${widlfy.home.dir}/modules</module.path-->
                    </systemPropertyVariables>
                    <!--redirectTestOutputToFile>true</redirectTestOutputToFile-->
                    <!--reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory-->
                    <suiteXmlFiles>
                        <suiteXmlFile>${project.basedir}/src/test/resources/testng/suite-integration-${suiteITs}.xml
                        </suiteXmlFile>
                    </suiteXmlFiles>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>versions-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-scm-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>de.jutzig</groupId>
                <artifactId>github-release-plugin</artifactId>
            </plugin>

        </plugins>
    </build>


    <profiles>

        <profile>
            <id>publish-release</id>
            <activation>
                <property>
                    <name>publish-release</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-release-plugin</artifactId>
                        <configuration>
                            <preparationGoals>clean install</preparationGoals>
                            <goals>-DskipTests=true -DskipITs=true -Dmaven.source.skip=false -Dmaven.javadoc.skip=false
                                deploy -Pnexus-deploy
                            </goals>
                            <tagNameFormat>v@{project.version}</tagNameFormat>
                            <pushChanges>false</pushChanges>
                            <localCheckout>true</localCheckout>
                            <!-- ??? this is correct?
                              <checkModificationExcludes>
                                  <checkModificationExclude>release-pom.xml</checkModificationExclude>
                              </checkModificationExcludes>
                            -->
                        </configuration>
                    </plugin>

                </plugins>
            </build>
        </profile>

        <profile>
            <id>nexus-deploy</id>
            <activation>
                <property>
                    <name>nexus-deploy</name>
                </property>
            </activation>
            <distributionManagement>
                <repository>
                    <id>releases</id>
                    <name>Nexus Releases Repository</name>
                    <url>https://nexus.xxxx.io/repository/maven-releases</url>
                    <layout>default</layout>
                </repository>
                <snapshotRepository>
                    <!--uniqueVersion - Se FALSE, permite versionar ex: 1.0.1-SNAPSHOT/projeto-1.0.1-20150712.045057-6.jar-->
                    <!--uniqueVersion - Se TRUE, nao permite versionar ex: 1.0.1-SNAPSHOT/projeto-1.0.1-SNAPSHOT.jar-->
                    <!--Maven 3.3.3 tem bug com isso.-->
                    <uniqueVersion>false</uniqueVersion>
                    <id>snapshots</id>
                    <name>Nexus Snapshots Repository</name>
                    <url>https://nexus.xxxx.io/repository/maven-snapshots</url>
                    <layout>default</layout>
                </snapshotRepository>
            </distributionManagement>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-deploy-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-deploy</id>
                                <phase>deploy</phase>
                                <goals>
                                    <goal>deploy</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>desenvolvimento</id>
            <activation>
                <property>
                    <name>desenvolvimento</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-war-plugin</artifactId>
                        <configuration>
                            <!--webappDirectory>
                                ${project.build.directory}/${project.artifactId}-${project.version}-exploded.${project.packaging}
                            </webappDirectory-->
                            <!--webappDirectory>
                                ${project.build.directory}/${project.artifactId}-exploded.${project.packaging}
                            </webappDirectory-->
                            <!--<webappDirectory>-->
                            <!--${project.build.directory}/${project.artifactId}-${project.version}.${project.packaging}-->
                            <!--</webappDirectory>-->
                            <webappDirectory>
                                ${project.build.directory}/${project.artifactId}-${project.version}
                            </webappDirectory>
                            <failOnMissingWebXml>false</failOnMissingWebXml>
                        </configuration>
                        <executions>
                            <execution>
                                <id>default-war</id>
                                <phase>none</phase>
                            </execution>
                            <execution>
                                <id>war-exploded</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>exploded</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-install-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-install</id>
                                <phase>none</phase>
                            </execution>
                        </executions>
                    </plugin>

                </plugins>
            </build>
        </profile>

    </profiles>

</project>

Jenkins out compilation:

........
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] Checking in modified POMs...
[INFO] Executing: /bin/sh -c cd /var/jenkins_home/workspace/myapp/stable && git add -- pom.xml release-pom.xml
[INFO] Working directory: /var/jenkins_home/workspace/myapp/stable
[INFO] Executing: /bin/sh -c cd /var/jenkins_home/workspace/myapp/stable && git rev-parse --show-toplevel
[INFO] Working directory: /var/jenkins_home/workspace/myapp/stable
[INFO] Executing: /bin/sh -c cd /var/jenkins_home/workspace/myapp/stable && git status --porcelain .
[INFO] Working directory: /var/jenkins_home/workspace/myapp/stable
[WARNING] Ignoring unrecognized line: ?? pom.xml.releaseBackup
[WARNING] Ignoring unrecognized line: ?? release.properties
[INFO] Executing: /bin/sh -c cd /var/jenkins_home/workspace/myapp/stable && git commit --verbose -F /tmp/maven-scm-276665832.commit pom.xml release-pom.xml
[INFO] Working directory: /var/jenkins_home/workspace/myapp/stable
[INFO] Tagging release with the label v2.0.3...
[INFO] Executing: /bin/sh -c cd /var/jenkins_home/workspace/myapp/stable && git tag -F /tmp/maven-scm-1646941823.commit v2.0.3
[INFO] Working directory: /var/jenkins_home/workspace/myapp/stable
[INFO] Executing: /bin/sh -c cd /var/jenkins_home/workspace/myapp/stable && git ls-files
[INFO] Working directory: /var/jenkins_home/workspace/myapp/stable
[INFO] Transforming 'myapp'...
[INFO] Removing release POM for 'myapp'...
[INFO] Executing: /bin/sh -c cd /var/jenkins_home/workspace/myapp/stable && git rm release-pom.xml
[INFO] Working directory: /var/jenkins_home/workspace/myapp/stable
[INFO] Checking in modified POMs...
[INFO] Executing: /bin/sh -c cd /var/jenkins_home/workspace/myapp/stable && git add -- pom.xml release-pom.xml
[INFO] Working directory: /var/jenkins_home/workspace/myapp/stable
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 28.690 s
[INFO] Finished at: 2016-07-22T21:59:42+00:00
[INFO] Final Memory: 26M/443M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.3:prepare-with-pom (default-cli) on project myapp: Unable to commit files
[ERROR] Provider message:
[ERROR] The git-add command failed.
[ERROR] Command output:
[ERROR] fatal: pathspec 'release-pom.xml' did not match any files
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[Pipeline] mail
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline

GitHub has been notified of this commit’s build result

ERROR: script returned exit code 1
Finished: FAILURE

If i change to 'release:prepare', this works.

sh "mvn --batch-mode release:clean release:prepare release:perform -Ppublish-release"

😢 😭
but I need 'pom-release-xml' to use with 'github-release:release' after the build.

@michael-o
Copy link
Member

Can someone please rebase and drop unaffected changes even if they are correct? We also need a proper IT which reproduces the issue. I'd be glad to merge this then.

@michael-o michael-o closed this Dec 28, 2018
@feliperoos
Copy link

+1, unable to run with 2.5.3 even with release:prepare.
Command I'm using is

mvn release:clean release:prepare release:perform -Prelease
Pom has a very basic profile to state the plugin

		<profile>
			<id>release</id>
			<activation>
				<activeByDefault>false</activeByDefault>
			</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-release-plugin</artifactId>
						<version>2.5.3</version>
						<configuration>
							<tagNameFormat>v@{project.version}</tagNameFormat>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>

Building on Jenkins, I get

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.3:prepare (default-cli) on project lib3cp-java: Cannot prepare the release because you have local modifications : 
[ERROR] [release-pom.xml:deleted]

@michael-o
Copy link
Member

@feliperoos my request from last August still holds true.

@slachiewicz slachiewicz reopened this Aug 20, 2022
@michael-o
Copy link
Member

Anyone wants to pick this up?

@elharo elharo changed the title SCM-706 finer-grained handling of file rename status for gitexe provider... [SCM-706] finer-grained handling of file rename status for gitexe provider... Mar 16, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
9 participants