فهرست منبع

Fix #350 - Tagged plugin should be unshallowed on update

Ruby installer failed to do so due to invalid escaping
Junegunn Choi 10 سال پیش
والد
کامیت
87b426e381
2فایلهای تغییر یافته به همراه26 افزوده شده و 3 حذف شده
  1. 3 3
      plug.vim
  2. 23 0
      test/regressions.vader

+ 3 - 3
plug.vim

@@ -1631,8 +1631,8 @@ function! s:update_ruby()
           exists = File.directory? dir
           ok, result =
             if exists
-              dir = iswin ? dir : esc(dir)
-              ret, data = bt.call "#{cd} #{dir} && git rev-parse --abbrev-ref HEAD 2>&1 && git config remote.origin.url", nil, nil, nil
+              chdir = "#{cd} #{iswin ? dir : esc(dir)}"
+              ret, data = bt.call "#{chdir} && git rev-parse --abbrev-ref HEAD 2>&1 && git config remote.origin.url", nil, nil, nil
               current_uri = data.lines.to_a.last
               if !ret
                 if data =~ /^Interrupted|^Timeout/
@@ -1648,7 +1648,7 @@ function! s:update_ruby()
                 if pull
                   log.call name, 'Updating ...', :update
                   fetch_opt = (tag && File.exist?(File.join(dir, '.git/shallow'))) ? '--depth 99999999' : ''
-                  bt.call "#{cd} #{dir} && git fetch #{fetch_opt} #{progress} 2>&1 && git checkout -q #{checkout} 2>&1 && git merge --ff-only #{merge} 2>&1 && #{subm}", name, :update, nil
+                  bt.call "#{chdir} && git fetch #{fetch_opt} #{progress} 2>&1 && git checkout -q #{checkout} 2>&1 && git merge --ff-only #{merge} 2>&1 && #{subm}", name, :update, nil
                 else
                   [true, skip]
                 end

+ 23 - 0
test/regressions.vader

@@ -263,3 +263,26 @@ Execute (#236: Plugin removed from &rtp when .vimrc is reloaded):
   Plug 'junegunn/vim-easy-align', { 'on': 'EasyAlign' }
   call plug#end()
   Assert &rtp =~ '/vim-easy-align', 'Plugin should still be in &rtp'
+
+**********************************************************************
+Execute (#350: Ruby installer failed to unshallow tagged plugin on update):
+  call plug#begin('/tmp/plugged')
+  call plug#end()
+  PlugClean!
+
+  " Shallow clone. We should have at least 2 plugins to enable parallel installer.
+  call plug#begin('/tmp/plugged')
+  Plug 'junegunn/vim-easy-align'
+  Plug 'junegunn/seoul256.vim'
+  call plug#end()
+  PlugUpdate
+  Assert filereadable(g:plugs['vim-easy-align'].dir.'/.git/shallow')
+
+  " Now unshallowed
+  call plug#begin('/tmp/plugged')
+  Plug 'junegunn/vim-easy-align', { 'tag': '2.9.0' }
+  Plug 'junegunn/seoul256.vim'
+  call plug#end()
+  PlugUpdate
+  Assert !filereadable(g:plugs['vim-easy-align'].dir.'/.git/shallow')
+  q