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

Checkout resolution misbehaves with local branch and forward slashes

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Fixed but Unreleased (View Workflow)
    • Priority: Minor
    • Resolution: Fixed
    • Component/s: git-plugin
    • Labels:
      None
    • Environment:
      Jenkins 2.107.1, git-plugin 2.7.1
    • Similar Issues:

      Description

      If the git plugin uses a local branch which is named the same as the remote and contains a forward slash, it will cause the checkout command to not update to the latest commit. Since using branches with / is common and local branch might be necessary, this should be fixed or at least produce a warning.

      To test: Create the following pipeline:

      node {
        stage ('hello') {
          dir ('foo') {
            checkout([$class: 'GitSCM', branches: [[name: "foo/bar"]], extensions: [[$class: 'LocalBranch', localBranch: 'foo/bar']], userRemoteConfigs: [[credentialsId: '...', url: "..."]]])
          }
        }
      }

      And follow these steps:

      1. Push branch foo/bar
      2. Run pipeline
      3. Push branch foo/bar with new versions
      4. Re-run pipeline in same folder

      The output should have the following contents:

       > git.exe fetch --tags --progress ssh://xxxx +refs/heads/*:refs/remotes/origin/*
       > git.exe rev-parse "foo/bar^{commit}" # timeout=10
       > git.exe rev-parse "refs/remotes/origin/foo/bar^{commit}" # timeout=10
      Multiple candidate revisions
      Checking out Revision 7bbd0143e31f1280e032cf350cf9f466642d1d65 (foo/bar)
      

      The 7bbd014 is the older commit however, since the local branch takes precedence over the remote one.

      Workarounds:

      • Name the local branch differently from the remote branch
      • Specify the fully quialified branch name (remotes/origin/${branch}) in the checkout command

        Attachments

          Issue Links

            Activity

            Hide
            jimmyjudas James Housley added a comment -

            I was having this issue when using "origin" as the "Name" of my git repository in the job's settings, and then using e.g. "abc/def" as my branch specifier. Removing the Name and instead using "origin/abc/def" as my branch specifier fixed the issue.

            Show
            jimmyjudas James Housley added a comment - I was having this issue when using "origin" as the "Name" of my git repository in the job's settings, and then using e.g. "abc/def" as my branch specifier. Removing the Name and instead using "origin/abc/def" as my branch specifier fixed the issue.

              People

              • Assignee:
                Unassigned
                Reporter:
                shauser Stephan Hauser
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: