| setup API | |
| ========= | |
| Talk about | |
| * setup_git_directory() | |
| * setup_git_directory_gently() | |
| * is_inside_git_dir() | |
| * is_inside_work_tree() | |
| * setup_work_tree() | |
| (Dscho) | |
| Pathspec | |
| -------- | |
| See glossary-context.txt for the syntax of pathspec. In memory, a | |
| pathspec set is represented by "struct pathspec" and is prepared by | |
| parse_pathspec(). This function takes several arguments: | |
| - magic_mask specifies what features that are NOT supported by the | |
| following code. If a user attempts to use such a feature, | |
| parse_pathspec() can reject it early. | |
| - flags specifies other things that the caller wants parse_pathspec to | |
| perform. | |
| - prefix and args come from cmd_* functions | |
| parse_pathspec() helps catch unsupported features and reject them | |
| politely. At a lower level, different pathspec-related functions may | |
| not support the same set of features. Such pathspec-sensitive | |
| functions are guarded with GUARD_PATHSPEC(), which will die in an | |
| unfriendly way when an unsupported feature is requested. | |
| The command designers are supposed to make sure that GUARD_PATHSPEC() | |
| never dies. They have to make sure all unsupported features are caught | |
| by parse_pathspec(), not by GUARD_PATHSPEC. grepping GUARD_PATHSPEC() | |
| should give the designers all pathspec-sensitive codepaths and what | |
| features they support. | |
| A similar process is applied when a new pathspec magic is added. The | |
| designer lifts the GUARD_PATHSPEC restriction in the functions that | |
| support the new magic. At the same time (s)he has to make sure this | |
| new feature will be caught at parse_pathspec() in commands that cannot | |
| handle the new magic in some cases. grepping parse_pathspec() should | |
| help. |