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

git plugin no longer clones repositories with backslashes

    • Icon: Bug Bug
    • Resolution: Not A Defect
    • Icon: Minor Minor
    • git-plugin
    • Jenkins LTS 2.204.1 (Docker)

      https://plugins.jenkins.io/git
      Version 4.0.0.0

      While I no longer have any file (since 2017) in my files on any branch, the git tree is being picked up and interfering with the clone so that Jenkins throws an incorrect exit code.

      $ rm -rf python-mypkg && git clone https://github.com/org/mypkg
      Cloning into 'python-mypkg'...
      remote: Enumerating objects: 3, done.
      remote: Counting objects: 100% (3/3), done.
      remote: Compressing objects: 100% (2/2), done.
      error: filename in tree entry contains backslash: '\'
      remote: Total 7683 (delta 0), reused 2 (delta 0), pack-reused 7680
      Receiving objects: 100% (7683/7683), 1.34 MiB | 5.39 MiB/s, done.
      error: filename in tree entry contains backslash: '\'
      error: filename in tree entry contains backslash: '\'
      Resolving deltas: 100% (5011/5011), done.
      

      Jenkins:

      Cloning the remote Git repository
       > git config core.sparsecheckout # timeout=10
       > git checkout -f 1bcc1100ab4624b864b3e8072cb8f171a6d08d77 # timeout=10
      Cloning repository https://github.com/org/mypkg
       > git init C:\Jenkins\workspace\operations\job\mypkh # timeout=10
      Fetching upstream changes from https://github.com/GeisingerHealthSystem/python-udaopstools
       > git --version # timeout=10
      using GIT_ASKPASS to set credentials Ops team machine account
       > git fetch --tags --force --progress -- https://github.com/org/mypk +refs/heads/*:refs/remotes/origin/* # timeout=10
      ERROR: Error cloning remote repo 'origin'
      hudson.plugins.git.GitException: Command "git fetch --tags --force --progress -- https://github.com/org/mypkg +refs/heads/*:refs/remotes/origin/*" returned status code 1:
      stdout: 
      stderr: remote: Enumerating objects: 3, done.        
      remote: Counting objects:  33% (1/3)        
      remote: Counting objects:  66% (2/3)        
      remote: Counting objects: 100% (3/3)        
      remote: Counting objects: 100% (3/3), done.        
      remote: Compressing objects:  50% (1/2)        
      remote: Compressing objects: 100% (2/2)        
      remote: Compressing objects: 100% (2/2), done.        
      Receiving objects:   0% (1/7683)
      Receiving objects:   1% (77/7683)
      Receiving objects:   2% (154/7683)
      Receiving objects:   3% (231/7683)
      Receiving objects:   4% (308/7683)
      Receiving objects:   5% (385/7683)
      Receiving objects:   6% (461/7683)
      Receiving objects:   7% (538/7683)
      Receiving objects:   8% (615/7683)
      Receiving objects:   9% (692/7683)
      Receiving objects:  10% (769/7683)
      Receiving objects:  11% (846/7683)
      Receiving objects:  12% (922/7683)
      Receiving objects:  13% (999/7683)
      Receiving objects:  14% (1076/7683)
      Receiving objects:  15% (1153/7683)
      Receiving objects:  16% (1230/7683)
      Receiving objects:  17% (1307/7683)
      Receiving objects:  18% (1383/7683)
      Receiving objects:  19% (1460/7683)
      Receiving objects:  20% (1537/7683)
      Receiving objects:  21% (1614/7683)
      Receiving objects:  22% (1691/7683)
      Receiving objects:  23% (1768/7683)
      Receiving objects:  24% (1844/7683)
      Receiving objects:  25% (1921/7683)
      Receiving objects:  26% (1998/7683)
      Receiving objects:  27% (2075/7683)
      Receiving objects:  28% (2152/7683)
      Receiving objects:  29% (2229/7683)
      Receiving objects:  30% (2305/7683)
      Receiving objects:  31% (2382/7683)
      Receiving objects:  32% (2459/7683)
      Receiving objects:  33% (2536/7683)
      Receiving objects:  34% (2613/7683)
      Receiving objects:  35% (2690/7683)
      Receiving objects:  36% (2766/7683)
      Receiving objects:  37% (2843/7683)
      Receiving objects:  38% (2920/7683)
      Receiving objects:  39% (2997/7683)
      Receiving objects:  40% (3074/7683)
      Receiving objects:  41% (3151/7683)
      Receiving objects:  42% (3227/7683)
      Receiving objects:  43% (3304/7683)
      Receiving objects:  44% (3381/7683)
      Receiving objects:  45% (3458/7683)
      Receiving objects:  46% (3535/7683)
      Receiving objects:  47% (3612/7683)
      Receiving objects:  48% (3688/7683)
      Receiving objects:  49% (3765/7683)
      Receiving objects:  50% (3842/7683)
      Receiving objects:  51% (3919/7683)
      Receiving objects:  52% (3996/7683)
      Receiving objects:  53% (4072/7683)
      Receiving objects:  54% (4149/7683)
      Receiving objects:  55% (4226/7683)
      Receiving objects:  56% (4303/7683)
      Receiving objects:  57% (4380/7683)
      Receiving objects:  58% (4457/7683)
      Receiving objects:  59% (4533/7683)
      Receiving objects:  60% (4610/7683)
      Receiving objects:  61% (4687/7683)
      Receiving objects:  62% (4764/7683)
      Receiving objects:  63% (4841/7683)
      Receiving objects:  64% (4918/7683)
      Receiving objects:  65% (4994/7683)
      Receiving objects:  66% (5071/7683)
      Receiving objects:  67% (5148/7683)
      Receiving objects:  68% (5225/7683)
      Receiving objects:  69% (5302/7683)
      Receiving objects:  70% (5379/7683)
      Receiving objects:  71% (5455/7683)
      Receiving objects:  72% (5532/7683)
      Receiving objects:  73% (5609/7683)
      Receiving objects:  74% (5686/7683)
      Receiving objects:  75% (5763/7683)
      Receiving objects:  76% (5840/7683)
      Receiving objects:  77% (5916/7683)
      Receiving objects:  78% (5993/7683)
      Receiving objects:  79% (6070/7683)
      Receiving objects:  80% (6147/7683)
      Receiving objects:  81% (6224/7683)
      Receiving objects:  82% (6301/7683)
      Receiving objects:  83% (6377/7683)
      Receiving objects:  84% (6454/7683)
      Receiving objects:  85% (6531/7683)
      Receiving objects:  86% (6608/7683)
      Receiving objects:  87% (6685/7683)
      Receiving objects:  88% (6762/7683)
      Receiving objects:  89% (6838/7683)
      Receiving objects:  90% (6915/7683)
      Receiving objects:  91% (6992/7683)
      Receiving objects:  92% (7069/7683)
      Receiving objects:  93% (7146/7683)
      Receiving objects:  94% (7223/7683)
      Receiving objects:  95% (7299/7683)
      Receiving objects:  96% (7376/7683)
      Receiving objects:  97% (7453/7683)
      remote: Total 7683 (delta 0), reused 2 (delta 0), pack-reused 7680        
      Receiving objects:  98% (7530/7683)
      Receiving objects:  99% (7607/7683)
      Receiving objects: 100% (7683/7683)
      Receiving objects: 100% (7683/7683), 1.34 MiB | 16.36 MiB/s, done.
      Resolving deltas:   0% (0/5011)
      Resolving deltas:   1% (73/5011)
      Resolving deltas:   2% (105/5011)
      Resolving deltas:   3% (192/5011)
      Resolving deltas:   4% (228/5011)
      Resolving deltas:  12% (603/5011)
      Resolving deltas:  13% (683/5011)
      Resolving deltas:  15% (753/5011)
      Resolving deltas:  16% (808/5011)
      Resolving deltas:  18% (937/5011)
      Resolving deltas:  20% (1012/5011)
      Resolving deltas:  22% (1107/5011)
      Resolving deltas:  23% (1167/5011)
      Resolving deltas:  24% (1205/5011)
      Resolving deltas:  31% (1586/5011)
      Resolving deltas:  32% (1626/5011)
      Resolving deltas:  33% (1654/5011)
      Resolving deltas:  34% (1727/5011)
      Resolving deltas:  35% (1757/5011)
      Resolving deltas:  38% (1950/5011)
      Resolving deltas:  39% (1967/5011)
      Resolving deltas:  41% (2060/5011)
      Resolving deltas:  42% (2138/5011)
      Resolving deltas:  43% (2157/5011)
      Resolving deltas:  44% (2210/5011)
      Resolving deltas:  45% (2258/5011)
      Resolving deltas:  49% (2481/5011)
      Resolving deltas:  50% (2553/5011)
      Resolving deltas:  52% (2634/5011)
      Resolving deltas:  55% (2799/5011)
      Resolving deltas:  57% (2879/5011)
      Resolving deltas:  62% (3117/5011)
      Resolving deltas:  63% (3190/5011)
      Resolving deltas:  64% (3214/5011)
      Resolving deltas:  65% (3288/5011)
      Resolving deltas:  66% (3313/5011)
      Resolving deltas:  67% (3364/5011)
      Resolving deltas:  68% (3445/5011)
      Resolving deltas:  69% (3462/5011)
      Resolving deltas:  70% (3520/5011)
      Resolving deltas:  71% (3570/5011)
      Resolving deltas:  72% (3613/5011)
      Resolving deltas:  73% (3667/5011)
      Resolving deltas:  74% (3734/5011)
      Resolving deltas:  75% (3784/5011)
      Resolving deltas:  76% (3815/5011)
      Resolving deltas:  78% (3934/5011)
      Resolving deltas:  79% (3999/5011)
      Resolving deltas:  80% (4016/5011)
      Resolving deltas:  81% (4106/5011)
      Resolving deltas:  82% (4112/5011)
      Resolving deltas:  85% (4307/5011)
      Resolving deltas:  86% (4334/5011)
      Resolving deltas:  87% (4361/5011)
      Resolving deltas:  88% (4410/5011)
      Resolving deltas:  89% (4475/5011)
      Resolving deltas:  90% (4520/5011)
      Resolving deltas:  91% (4564/5011)
      Resolving deltas:  94% (4744/5011)
      Resolving deltas:  95% (4768/5011)
      Resolving deltas:  98% (4960/5011)
      Resolving deltas:  99% (4964/5011)
      Resolving deltas: 100% (5011/5011)
      Resolving deltas: 100% (5011/5011), done.
      fatal: filename in tree entry contains backslash: '\'
      error: https://github.com/org/mypkg did not send all necessary objects
      
      
      	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2372)
      	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1985)
      	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$500(CliGitAPIImpl.java:80)
      	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:563)
      	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$2.execute(CliGitAPIImpl.java:787)
      	at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler$GitCommandMasterToSlaveCallable.call(RemoteGitImpl.java:161)
      	at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler$GitCommandMasterToSlaveCallable.call(RemoteGitImpl.java:154)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:211)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:54)
      	at hudson.remoting.Request$2.run(Request.java:369)
      	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
      	at java.util.concurrent.FutureTask.run(Unknown Source)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      	at hudson.remoting.Engine$1.lambda$newThread$0(Engine.java:97)
      	at java.lang.Thread.run(Unknown Source)
      	Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to JNLP4-connect connection from w03493.geisinger.edu/10.90.40.106:64945
      		at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1741)
      		at hudson.remoting.UserRequest$ExceptionResponse.retrieve(UserRequest.java:356)
      		at hudson.remoting.Channel.call(Channel.java:955)
      		at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler.execute(RemoteGitImpl.java:146)
      		at sun.reflect.GeneratedMethodAccessor689.invoke(Unknown Source)
      		at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      		at java.lang.reflect.Method.invoke(Method.java:498)
      		at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler.invoke(RemoteGitImpl.java:132)
      		at com.sun.proxy.$Proxy137.execute(Unknown Source)
      		at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1105)
      		at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1145)
      		at org.jenkinsci.plugins.workflow.steps.scm.SCMStep.checkout(SCMStep.java:124)
      		at org.jenkinsci.plugins.workflow.steps.scm.SCMStep$StepExecutionImpl.run(SCMStep.java:93)
      		at org.jenkinsci.plugins.workflow.steps.scm.SCMStep$StepExecutionImpl.run(SCMStep.java:80)
      		at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
      		at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
      		at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      		at java.lang.Thread.run(Thread.java:748)
      

      Related:

          [JENKINS-60632] git plugin no longer clones repositories with backslashes

          Mark Waite added a comment -

          That is an issue which the git plugin cannot fix because it is inside command line git for windows

          Mark Waite added a comment - That is an issue which the git plugin cannot fix because it is inside command line git for windows

          Michael DeGuzis added a comment - - edited

          Ok, at least it's good confirmation for others to note this as being out of your control. Now that the issue is logged and with references, it could be closed and others cna track the git for windows issue. It's unfortunate I cannot implement the workaround with this plugin, effectively leaving me stranded.

          Is it not possible to modify the GitSCM class parameters (much like I do already for submodule handling) to implement the workaround?

          Michael DeGuzis added a comment - - edited Ok, at least it's good confirmation for others to note this as being out of your control. Now that the issue is logged and with references, it could be closed and others cna track the git for windows issue. It's unfortunate I cannot implement the workaround with this plugin, effectively leaving me stranded. Is it not possible to modify the GitSCM class parameters (much like I do already for submodule handling) to implement the workaround?

          Mark once these two PRs are done, will you need to update your plugin to use the new executable/binary?

          Michael DeGuzis added a comment - Mark once these two PRs are done, will you need to update your plugin to use the new executable/binary? https://github.com/git-for-windows/git/pull/2437 https://github.com/git/git/pull/682

          Mark Waite added a comment -

          Once command line git for Windows has been updated to allow fetch of repositories which contain backslash directory names, the git plugin will work.

          Alternatives you can use until then:

          1. Use command line git for Windows prior to the protectNTFS change (like git for windows 2.23.x or earlier)
          2. Use the config file provider plugin to deliver a $HOME/.gitconifg file to the agent which includes core.protectNTFS=false
          3. Integrate the proposed change into your own build of command line git for Windows and use it on all Windows machines that need to do this. 

          Mark Waite added a comment - Once command line git for Windows has been updated to allow fetch of repositories which contain backslash directory names, the git plugin will work. Alternatives you can use until then: Use command line git for Windows prior to the protectNTFS change (like git for windows 2.23.x or earlier) Use the config file provider plugin to deliver a $HOME/.gitconifg file to the agent which includes core.protectNTFS=false Integrate the proposed change into your own build of command line git for Windows and use it on all Windows machines that need to do this. 

          Mark Waite added a comment -

          Closed since it is not a defect in the git plugin but in command line git 2.24.0(2) for Windows

          Mark Waite added a comment - Closed since it is not a defect in the git plugin but in command line git 2.24.0(2) for Windows

            markewaite Mark Waite
            mtdeguzis Michael DeGuzis
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: