Describe gina#command#compare Before all let Path = vital#gina#import('System.Filepath') let slit1 = Slit(tempname(), 1) call slit1.write('A/foo.txt', []) call slit1.execute('add %s', slit1.path('A/foo.txt')) call slit1.write('A/foo.txt', ['1']) call slit1.execute('commit --quiet -am "First"') call slit1.write('A/foo.txt', ['2']) call slit1.execute('commit --quiet -am "Second"') call slit1.write('A/foo.txt', ['3']) call slit1.execute('add %s', slit1.path('A/foo.txt')) call slit1.write('A/foo.txt', ['4']) End After all %bwipeout! End Before %bwipeout! End Describe Use cases It might be called without arguments execute 'edit' fnameescape(slit1.path('A/foo.txt')) GinaSync compare : Assert Equals(tabpagenr('$'), 2) Assert Equals(winnr('$'), 2) " Focused buffer Assert Equals(bufname('%'), slit1.path('A/foo.txt')) Assert Equals(getline(1, '$'), [ \ '4', \]) " topleft let bufnr = winbufnr(1) Assert Equals(bufname(bufnr), printf('gina://%s:show/:A/foo.txt', slit1.refname)) Assert Equals(getbufline(bufnr, 1, '$'), [ \ '3', \]) " botright let bufnr = winbufnr(2) Assert Equals(bufname(bufnr), slit1.path('A/foo.txt')) Assert Equals(getbufline(bufnr, 1, '$'), [ \ '4', \]) End It might be called with -R execute 'edit' fnameescape(slit1.path('A/foo.txt')) GinaSync compare -R : Assert Equals(tabpagenr('$'), 2) Assert Equals(winnr('$'), 2) " Focused buffer Assert Equals(bufname('%'), printf('gina://%s:show/:A/foo.txt', slit1.refname)) Assert Equals(getline(1, '$'), [ \ '3', \]) " topleft let bufnr = winbufnr(1) Assert Equals(bufname(bufnr), slit1.path('A/foo.txt')) Assert Equals(getbufline(bufnr, 1, '$'), [ \ '4', \]) " botright let bufnr = winbufnr(2) Assert Equals(bufname(bufnr), printf('gina://%s:show/:A/foo.txt', slit1.refname)) Assert Equals(getbufline(bufnr, 1, '$'), [ \ '3', \]) End It might be called with --cached execute 'edit' fnameescape(slit1.path('A/foo.txt')) GinaSync compare --cached : Assert Equals(tabpagenr('$'), 2) Assert Equals(winnr('$'), 2) " Focused buffer Assert Equals(bufname('%'), printf('gina://%s:show/:A/foo.txt', slit1.refname)) Assert Equals(getline(1, '$'), [ \ '3', \]) " topleft let bufnr = winbufnr(1) Assert Equals(bufname(bufnr), printf('gina://%s:show/HEAD:A/foo.txt', slit1.refname)) Assert Equals(getbufline(bufnr, 1, '$'), [ \ '2', \]) " botright let bufnr = winbufnr(2) Assert Equals(bufname(bufnr), printf('gina://%s:show/:A/foo.txt', slit1.refname)) Assert Equals(getbufline(bufnr, 1, '$'), [ \ '3', \]) End It might be called with HEAD~ execute 'edit' fnameescape(slit1.path('A/foo.txt')) GinaSync compare HEAD~: Assert Equals(tabpagenr('$'), 2) Assert Equals(winnr('$'), 2) " Focused buffer Assert Equals(bufname('%'), slit1.path('A/foo.txt')) Assert Equals(getline(1, '$'), [ \ '4', \]) " topleft let bufnr = winbufnr(1) Assert Equals(bufname(bufnr), printf('gina://%s:show/HEAD~:A/foo.txt', slit1.refname)) Assert Equals(getbufline(bufnr, 1, '$'), [ \ '1', \]) " botright let bufnr = winbufnr(2) Assert Equals(bufname(bufnr), slit1.path('A/foo.txt')) Assert Equals(getbufline(bufnr, 1, '$'), [ \ '4', \]) End It might be called with HEAD..HEAD~ execute 'edit' fnameescape(slit1.path('A/foo.txt')) GinaSync compare HEAD..HEAD~: Assert Equals(tabpagenr('$'), 2) Assert Equals(winnr('$'), 2) " Focused buffer Assert Equals(bufname('%'), printf('gina://%s:show/HEAD~:A/foo.txt', slit1.refname)) Assert Equals(getline(1, '$'), [ \ '1', \]) " topleft let bufnr = winbufnr(1) Assert Equals(bufname(bufnr), printf('gina://%s:show/HEAD:A/foo.txt', slit1.refname)) Assert Equals(getbufline(bufnr, 1, '$'), [ \ '2', \]) " botright let bufnr = winbufnr(2) Assert Equals(bufname(bufnr), printf('gina://%s:show/HEAD~:A/foo.txt', slit1.refname)) Assert Equals(getbufline(bufnr, 1, '$'), [ \ '1', \]) End End End