Просмотр исходного кода

Fix #350 - Tagged plugin should be unshallowed on update

Ruby installer failed to do so due to invalid escaping
Junegunn Choi 10 лет назад
Родитель
Сommit
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