From 87b426e3818d315f7e859c3f1bca39e18cce4996 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Fri, 11 Dec 2015 23:11:21 +0900 Subject: [PATCH] Fix #350 - Tagged plugin should be unshallowed on update Ruby installer failed to do so due to invalid escaping --- plug.vim | 6 +++--- test/regressions.vader | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/plug.vim b/plug.vim index b2f2614..2969692 100644 --- a/plug.vim +++ b/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 diff --git a/test/regressions.vader b/test/regressions.vader index 46fb00e..6f20fcc 100644 --- a/test/regressions.vader +++ b/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