Issue Type: Bug Bug
Assignee: Nicolas De Loof
Components: git-plugin
Created: 08/Nov/14 9:47 PM
Description:

The job is triggered because of SCM change:

Poll log
[poll] Last Built Revision: Revision 3281126a340c0e863f12c11a7f9ccd31bceb587a (origin/master)
[git] $ sh -e /DATA/jenkins/app-data/tools/git/hudson598255919908413882.sh
 > git ls-remote -h [CENSURED] master # timeout=10
[poll] Latest remote head revision is: e72acfe796b818f51ba549991a8f1876657d8986
Done. Took 0.32 sec
Changes found

But in the git log we see that it skips changelog becuase of "First time build" -falsely:

Run log
16:27:52  > /usr/bin/git checkout -f e72acfe796b818f51ba549991a8f1876657d8986
16:27:55  > /usr/bin/git rev-list 3281126a340c0e863f12c11a7f9ccd31bceb587a # timeout=10
16:27:55 First time build. Skipping changelog.

Looking at the current code of Git Plugin I see there's some kind of condition on "exclusion" but I've yet understood what sets it:

from GitSCM.java
private void computeChangeLog(GitClient git, Revision revToBuild, TaskListener listener, BuildData previousBuildData, FilePath changelogFile, BuildChooserContext context) throws IOException, InterruptedException {
        Writer out = new OutputStreamWriter(changelogFile.write(),"UTF-8");

        boolean executed = false;
        ChangelogCommand changelog = git.changelog();
        changelog.includes(revToBuild.getSha1());
        try {
            boolean exclusion = false;
            ChangelogToBranch changelogToBranch = getExtensions().get(ChangelogToBranch.class);
            if (changelogToBranch != null) {
                listener.getLogger().println("Using 'Changelog to branch' strategy.");
                changelog.excludes(changelogToBranch.getOptions().getRef());
                exclusion = true;
            } else {
                for (Branch b : revToBuild.getBranches()) {
                    Build lastRevWas = getBuildChooser().prevBuildForChangelog(b.getName(), previousBuildData, git, context);
                    if (lastRevWas != null && git.isCommitInRepo(lastRevWas.getSHA1())) {
                        changelog.excludes(lastRevWas.getSHA1());
                        exclusion = true;
                    }
                }
            }

            if (!exclusion) {
                // this is the first time we are building this branch, so there's no base line to compare against.
                // if we force the changelog, it'll contain all the changes in the repo, which is not what we want.
                listener.getLogger().println("First time build. Skipping changelog.");
            } else {
                changelog.to(out).max(MAX_CHANGELOG).execute();
                executed = true;
            }
        } catch (GitException ge) {
            ge.printStackTrace(listener.error("Unable to retrieve changeset"));
        } finally {
            if (!executed) changelog.abort();
            IOUtils.closeQuietly(out);
        }
    }

I might take the task to fix it on my own - but maybe for some of you it may be obvious...

Environment: Jenkins 1.565.2
Git-Client 1.11.0
Git plugin 2.2.7
SCM-API 0.2
SSH credentials 1.10
Credentials 1.18

Both master and slave works on RHEL 6.3 with Java 7u51
Project: Jenkins
Labels: git git-client changelog
Priority: Minor Minor
Reporter: Or Shachar
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators.
For more information on JIRA, see: http://www.atlassian.com/software/jira

--
You received this message because you are subscribed to the Google Groups "Jenkins Issues" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to