Details
-
Bug
-
Status: Closed (View Workflow)
-
Minor
-
Resolution: Fixed
Description
Not sure if this affects production systems, or indeed why it is not reported by everyone, but anyway I was unable to make AbstractGitSCMSource.retrieve(SCMHeadObserver, TaskListener) work in a test without this fix. (And there was no test for it.) Doing so failed with:
hudson.plugins.git.GitException: Could not init $JENKINS_HOME/caches/git-4ab... at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$5.execute(CliGitAPIImpl.java:656) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.init(CliGitAPIImpl.java:181) at hudson.plugins.git.GitAPI.init(GitAPI.java:217) at jenkins.plugins.git.AbstractGitSCMSource.retrieve(AbstractGitSCMSource.java:275) at jenkins.scm.api.SCMSource.fetch(SCMSource.java:147) at jenkins.scm.api.SCMSource.retrieve(SCMSource.java:231) at jenkins.scm.api.SCMSource.fetch(SCMSource.java:176) at jenkins.plugins.git.AbstractGitSCMSourceTest.retrieveHeads(AbstractGitSCMSourceTest.java:74) at ... Caused by: hudson.plugins.git.GitException: Error performing command: git init $JENKINS_HOME/caches/git-4ab... at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1726) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1695) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1691) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1321) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$5.execute(CliGitAPIImpl.java:654) ... 34 more Caused by: java.io.IOException: Cannot run program "git" (in directory "$JENKINS_HOME/caches/git-4ab..."): error=2, No such file or directory at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) at hudson.Proc$LocalProc.<init>(Proc.java:244) at hudson.Proc$LocalProc.<init>(Proc.java:216) at hudson.Launcher$LocalLauncher.launch(Launcher.java:803) at hudson.Launcher$ProcStarter.start(Launcher.java:381) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1715) ... 38 more Caused by: java.io.IOException: error=2, No such file or directory at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.<init>(UNIXProcess.java:248) at java.lang.ProcessImpl.start(ProcessImpl.java:134) at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) ... 43 more
Perhaps some, but not all, versions of git-client barf if you try to run git init in a nonexistent directory?
Attachments
Issue Links
- links to
Thanks for the pull request to resolve this.
The JGit implementation in git-client will create the directory if it does not already exist. That's why this condition was not detected previously by those using the multi-branch pipeline plugins. They previously only used the JGit implementation. The command line implementation in git client does not create the directory if it does not already exist.
PR424 detected that same condition and has a change in the git client command line implementation to create the directory if it does not already exist.