On Tue, Nov 15, 2016 at 1:21 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Karthik Nayak <karthik.188@xxxxxxxxx> writes: > >>> - More importantly, what do these do? I do not think of a good >>> description that generalizes "base of refs/foo/bar/boz is foo" to >>> explain your :base. >> >> $ ./git for-each-ref --format "%(refname)%(end) %(refname:dir)" >> refs/heads/master refs/heads >> refs/heads/ref-filter refs/heads >> refs/remotes/junio/va/i18n refs/remotes/junio/va >> >> $ ./git for-each-ref refs/heads --format >> "%(align:left,30)%(refname)%(end) %(refname:base)" >> refs/heads/master heads >> refs/heads/ref-filter heads >> refs/remotes/junio/va/i18n remotes >> >> I guess this should clear it up. > > Hmph. > > I would guess from these examples that :dir is an equivalent to > dirname(). But it is unclear how :base is defined. Is it the path > component that comes immediately after "refs/" that appears at the > beginning? ':dir' is equivalent to dirname(). Yup, base is the folder right after 'refs/'. For local branches it is 'heads' for remotes it is 'remotes'. This is useful when we want to make decisions based on the type of branch we're dealing with (using along with %(if)...%(end)). -- Regards, Karthik Nayak