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.
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
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)"
Feedback welcome!
Thanks,
Stefan
[1] http://thread.gmane.org/gmane.comp.version-control.git/294212
[2] http://thread.gmane.org/gmane.comp.version-control.git/294212/focus=294391
Stefan Beller (4):
Documentation: correct typo in example for querying attributes
pathspec: move long magic parsing out of prefix_pathspec
pathspec: move prefix check out of the inner loop
pathspec: record labels
Documentation/glossary-content.txt | 5 ++
Documentation/technical/api-gitattributes.txt | 2 +-
attr.h | 1 +
dir.c | 31 ++++++++
pathspec.c | 109 +++++++++++++++++---------
pathspec.h | 1 +
t/t6134-pathspec-with-labels.sh | 91 +++++++++++++++++++++
7 files changed, 201 insertions(+), 39 deletions(-)
create mode 100755 t/t6134-pathspec-with-labels.sh
--
2.8.2.400.g66c4903.dirty
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html