On Fri, May 13, 2016 at 7:19 AM, Stefan Beller <sbeller@xxxxxxxxxx> wrote: > After some fruitful discussion[1] in which Junio suggested trying a very > different route[2] that is more general and not submodule related, I considered > doing a mock for this. > > This lets you label arbitrary pathspecs, e.g. in git.git we may want to have: > > t/t[0-9]*.sh label=tests > > such that > > $ git log --author=Beller ":(label=tests)" > > would show all commits in which I touched tests. > > This has suprisingly few lines of code, as the first 3 patches are refactoring. > The actual new feature is in the last patch. > > This would solve the submodule issues I want to solve, as I can produce a > .gitattributes like: > > ./submodule1 label=default > ./submodule2 label=default > ./submodule3 label=optional-feature1 > > and then I'd instruct the users to clone like this: > > git clone .. superproject > cd superproject > git submodule update --init :(label:default) > > The second part of the submodule series to collapse these three commands > will come as an extra series later, then. Yeah. I can see the use of this, even without submodules. > What annoys me here: > Attributes can only be set once at the moment, there is no way to collect all > attributes. If we'd have such a collection feature we would be able to > configure this: > > *.[ch] label=C,code > contrib/** label=oldstuff Instead of putting everything in under the same attribute name "label", make one attribute per label? Would this work? *.[ch] c-group code-group And the pathspec magic name can be simply "attr", any git attribute can be used with it, e.g. :(attr:c-group) > and run this: > > git status ":(label:C oldstuff)" > > which would be the equivalent to > > contrib/**.[ch] > > as in this proposed implementation the labels which are given within one > pathspec item are logical AND. To get the logical OR, you'd have to give multiple > pathspec items, i.e. ":(label:C)" ":(label:oldstuff)" It's even better if pathspec does not have to deal with combination logic. Can attr macros deal with that (or if it can't at the moment, can we improve it)? -- Duy -- 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