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 jenkinsci-issues+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to