Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-35104

git plugin still checks out all branches when refspec set

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      We are getting a lot of these errors:

      ERROR: Error fetching remote repo 'origin'
      hudson.plugins.git.GitException: Failed to fetch from git@gitlab:xxx/main.git
      at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:810)
      at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1066)
      at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1097)
      at hudson.scm.SCM.checkout(SCM.java:485)
      at hudson.model.AbstractProject.checkout(AbstractProject.java:1269)
      at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:607)
      at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
      at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:529)
      at com.tikal.jenkins.plugins.multijob.MultiJobBuild$MultiJobRunnerImpl.run(MultiJobBuild.java:136)
      at hudson.model.Run.execute(Run.java:1738)
      at com.tikal.jenkins.plugins.multijob.MultiJobBuild.run(MultiJobBuild.java:73)
      at hudson.model.ResourceController.execute(ResourceController.java:98)
      at hudson.model.Executor.run(Executor.java:410)
      Caused by: hudson.plugins.git.GitException: Command "/home/cruise/tools/hudson.plugins.git.GitTool/git-2.7.1/git -c core.askpass=true fetch --no-tags --progress git@gitlab.xxx.com:xxx/main.git +refs/heads/master:refs/remotes/origin/master" returned status code 128:
      stdout:
      stderr: error: refs/remotes/origin/xxxx does not point to a valid object!
      .....
      fatal: pack has 120 unresolved deltas
      fatal: index-pack failed

      at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1719)
      at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1463)
      at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$300(CliGitAPIImpl.java:63)
      at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:314)
      at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler$1.call(RemoteGitImpl.java:152)
      at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler$1.call(RemoteGitImpl.java:145)
      at hudson.remoting.UserRequest.perform(UserRequest.java:120)
      at hudson.remoting.UserRequest.perform(UserRequest.java:48)
      at hudson.remoting.Request$2.run(Request.java:332)
      at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
      at java.util.concurrent.FutureTask.run(FutureTask.java:262)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      at hudson.remoting.Engine$1$1.run(Engine.java:85)
      at java.lang.Thread.run(Thread.java:745)
      at ......remote call to build133(Native Method)
      at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1416)
      at hudson.remoting.UserResponse.retrieve(UserRequest.java:220)
      at hudson.remoting.Channel.call(Channel.java:781)
      at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler.execute(RemoteGitImpl.java:145)
      at sun.reflect.GeneratedMethodAccessor267.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler.invoke(RemoteGitImpl.java:131)
      at com.sun.proxy.$Proxy47.execute(Unknown Source)
      at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:808)
      ... 12 more
      ERROR: null

      So I set the Refspec to +refs/heads/master:refs/remotes/origin/master
      But when it does a fresh checkout (clean workspace), the plugin does this:

      Notice: +refs/heads/:refs/remotes/origin/

      Cloning the remote Git repository
      Avoid fetching tags
      Cloning repository git@gitlab.cj.com:cjdev/main.git
      > /home/cruise/tools/hudson.plugins.git.GitTool/git-2.7.1/git init /home/cruise/workspace/Start # timeout=10
      Fetching upstream changes from git@gitlab.cj.com:cjdev/main.git
      > /home/cruise/tools/hudson.plugins.git.GitTool/git-2.7.1/git --version # timeout=10
      using GIT_SSH to set credentials
      > /home/cruise/tools/hudson.plugins.git.GitTool/git-2.7.1/git -c core.askpass=true fetch --no-tags --progress git@gitlab.cj.com:cjdev/main.git +refs/heads/:refs/remotes/origin/
      > /home/cruise/tools/hudson.plugins.git.GitTool/git-2.7.1/git config remote.origin.url git@gitlab.cj.com:cjdev/main.git # timeout=10
      > /home/cruise/tools/hudson.plugins.git.GitTool/git-2.7.1/git config --add remote.origin.fetch +refs/heads/:refs/remotes/origin/ # timeout=10
      > /home/cruise/tools/hudson.plugins.git.GitTool/git-2.7.1/git config remote.origin.url git@gitlab.cj.com:cjdev/main.git # timeout=10
      Fetching upstream changes from git@gitlab.cj.com:cjdev/main.git
      using GIT_SSH to set credentials
      > /home/cruise/tools/hudson.plugins.git.GitTool/git-2.7.1/git -c core.askpass=true fetch --no-tags --progress git@gitlab.cj.com:cjdev/main.git +refs/heads/master:refs/remotes/origin/master
      > /home/cruise/tools/hudson.plugins.git.GitTool/git-2.7.1/git rev-parse refs/remotes/origin/master^

      {commit} # timeout=10
      > /home/cruise/tools/hudson.plugins.git.GitTool/git-2.7.1/git rev-parse refs/remotes/origin/refs/heads/master^{commit}

      # timeout=10
      Checking out Revision b1232ff60185766b8b94dabcc20f147e25ae9aab (refs/remotes/origin/master)
      > /home/cruise/tools/hudson.plugins.git.GitTool/git-2.7.1/git config core.sparsecheckout # timeout=10
      > /home/cruise/tools/hudson.plugins.git.GitTool/git-2.7.1/git checkout -f b1232ff60185766b8b94dabcc20f147e25ae9aab
      > /home/cruise/tools/hudson.plugins.git.GitTool/git-2.7.1/git rev-list 96dd700f85eb3dc07319d302e930053774c86bfc # timeout=10

      which I think is what is causing the error when anything from the origin disappears.

      Using latest of git plugin, and shared library plugin.

        Attachments

          Activity

          Hide
          markewaite Mark Waite added a comment -

          As far as I can tell, you're trying to clone a SHA1 whose history does not exist in the target repository because you are using shallow clone. Refer to this superuser.com article for more information on the condition.

          One work around appears to be to not use shallow clone. Another that might work would be to increase the depth of the shallow clone.

          Show
          markewaite Mark Waite added a comment - As far as I can tell, you're trying to clone a SHA1 whose history does not exist in the target repository because you are using shallow clone. Refer to this superuser.com article for more information on the condition. One work around appears to be to not use shallow clone. Another that might work would be to increase the depth of the shallow clone.
          Hide
          allon Allon Bendavid added a comment -

          Not using a 'shallow clone' though. Also if you follow the link you posted it appears unresolved for someone who did not have shallow clone enabled. I think the problem is if the workspace is clean, even if you have a Refspec set it will try and get the 'world' +refs/heads/:refs/remotes/origin/

          Show
          allon Allon Bendavid added a comment - Not using a 'shallow clone' though. Also if you follow the link you posted it appears unresolved for someone who did not have shallow clone enabled. I think the problem is if the workspace is clean, even if you have a Refspec set it will try and get the 'world' +refs/heads/ :refs/remotes/origin/
          Hide
          allon Allon Bendavid added a comment -

          Ok, that's weird. My comment had an asterisk after heads and origin and that results in highlighting the text between. So imagine in my initial description and comment above that I getting this: +refs/heads/[asterisk]:refs/remotes/origin/[asterisk]

          Show
          allon Allon Bendavid added a comment - Ok, that's weird. My comment had an asterisk after heads and origin and that results in highlighting the text between. So imagine in my initial description and comment above that I getting this: +refs/heads/ [asterisk] :refs/remotes/origin/ [asterisk]
          Hide
          allon Allon Bendavid added a comment -

          After downloading the code for git-client and git-plugin, it appears that the issue is the in the clone command of the git-client.
          Line 504 of CliGitAPIImpl.java hard codes "+refs/heads/[asterisk]:refs/remotes/origin/[asterisk]". Only after an initial clone is conducted in the workspace is does the fetch command observe the Refspec in the UI.

          Show
          allon Allon Bendavid added a comment - After downloading the code for git-client and git-plugin, it appears that the issue is the in the clone command of the git-client. Line 504 of CliGitAPIImpl.java hard codes "+refs/heads/ [asterisk] :refs/remotes/origin/ [asterisk] ". Only after an initial clone is conducted in the workspace is does the fetch command observe the Refspec in the UI.
          Hide
          allon Allon Bendavid added a comment -

          I have a solution for you. I'll add a pull request to your git hub that should fix the issue definitively.

          Show
          allon Allon Bendavid added a comment - I have a solution for you. I'll add a pull request to your git hub that should fix the issue definitively.
          Hide
          markewaite Mark Waite added a comment -

          Fixed for git plugin 2.5.1 by change in PR393

          Show
          markewaite Mark Waite added a comment - Fixed for git plugin 2.5.1 by change in PR393

            People

            • Assignee:
              Unassigned
              Reporter:
              allon Allon Bendavid
            • Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: