Hello Jenkins dev,

I am having a Jenkins installation with downstream jobs and using
several git repositories. To keep track of jobs relations, I have been
using the Fingerprint plugin to fingerprint **/.git/FETCH_HEAD.

It used to work back with 1.431 and was broken with 1.458 at least.
Still broken in 1.473.


How to reproduce:
-----------------
Install the finger print plugin. Create a simple job. In the workspace
directory create a directory '.git' (note the leading dot), create a
FETCH_HEAD file in it with some random content.

Add a build step 'fingerprint' files.

In the field "Files to fingerprint" fill in '.git/FETCH_HEAD'.

A red error message is shown:

'.git/FETCH_HEAD' doesn't match anything: even '.git' doesn't exist
The help message give a link to "the workspace", that file browser does
show a .git directory containing a FETCH_HEAD file.


Lame investigation:
-------------------

I am not a Java guy but the plugin had no recent changes and basically
just do:

 Fingerprinter fingerprinter = new Fingerprinter(this.targets, false);
 return fingerprinter.perform(build, launcher, listener);

The dirScanner was changed with JENKIN-13165 [1] to allow plugins to
disable the ant defaultExclude (which exclude the .git files) commit
sha1 is 0725d27.

Fingerprinter uses Util.createFileSet() with a null exclude list but I
believe it still apply ant defaultExclude.

So I believe it is probably an easy fix that would consist in copying
the fix to dirScanner to createFileSet and have FingerPrinter pass the
option to disable defaultExclude.


[0] https://issues.jenkins-ci.org/browse/JENKINS-14355
[1] https://issues.jenkins-ci.org/browse/JENKINS-13165
[2]
https://github.com/jenkinsci/jenkins/commit/0725d2765da789e02914deb4893a449eeda6a820

-- 
Antoine "hashar" Musso


Reply via email to