On Thu, 9 Dec 2010, Junio C Hamano wrote: > Jonathan Nieder <jrnieder@xxxxxxxxx> writes: >> Jakub Narebski wrote: >> >>> You would need HEAD{^{/foo}^@}x3, or use special rule that HEAD^{/foo}x2 >>> means really HEAD^{/foo}^@^{/foo}, with ^@ used to join them. >> >> That said, does ^2x500 really do something meaningful that a person >> would ever need? I like the >> >> ^{:nth(3)/foo} >> >> syntax because perl6 supports m:nth(3)/foo/, suggesting a menu of >> already-defined modifiers to implement when they prove useful,... > > Can you explain what the colon in "$commit^{:nth(3)/foo}" is doing? > > Are we declaring anything that begins with ':' is a magic inside ^{...} > construct? The idea is to follow Perl 6 rule of combining modifiers "Every modifier must start with its own colon." http://perlcabal.org/syn/S05.html#Modifiers This allow for easy combining modifiers without introducing special rules, for example ^{:g:i/foo} would return all matches (:g == :global) instead of only the first, ignoring case (:i == :ignorecase). > I do not think nth($n) without specifying where to start (iow, what the > current ":/foo" implementation does but with "three levels deep") makes > any sense, but because the main point of your argument is that we can have > modifies other than nth($n) that may make sense in such a context, I would > want to make sure anything we come up with is extensible to that syntax. Hmmm... I haven't thought about it. I guess that ^{:nth(N)/foo} should return Nth element in the list that ^{:g/foo} / --grep=foo would return. This way one could use $ git log pu@{1}..pu --merges --grep="Merge branch 'nd/" to find all new Nguyen contributions in 'pu', and $ git log pu..pu^{:2nd/Merge branch 'nd/}^2 to view 2nd (2nd == nth(2)) such branch on the list. > > On the "starting from any ref" front, I think "!" (as in ":/!some magic") > was the introducer we reserved for such a magic some time ago, so perhaps > on the "starting from this commit" side, "^{!magic/foo}" may be more > appropriate? I'd like to deprecate ":/foo" in favor of "--all ^{/foo}", or even special case it to "^{/foo}" (if not attached to ref, ^{(:<modifier>)*/<regexp>} acts on positive revs replacing them). But ^{/foo} might be overengineered... -- Jakub Narebski Poland -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html