Michael J Gruber <git@xxxxxxxxxxxxxxxxxxxx> writes: >>> What's wrong with --relative or something? > > ?? > > ls-files already lists files relative to cwd. What you need is a way to > specify that you want all files, not just those beneath cwd. Exactly. >>> I've never liked magical strange notations. ":" already has a meaning. >> >> +1 > > I think you've both been missing out on the discussions about > --full-tree and refspec notation for that... I like this answer. Don't pay any much attention +1/-1 from people who are clueless to the topic, but do pay attention to them as persons by showing that there are things for them to read and learn if they want to discuss the topic. A URL or two to the recent thread may have been nicer. > Of course ":" has a meaning. "git show HEAD:" lists all files at the > top-level of the tree at HEAD. That is exactly why ":" has been > suggested to denote the top-level for pathspecs also. Note that this is > much more general than just an option for ls-files. Talking about the "pathspec magic", I think in addition to "this is relative to root", we at least would need "this is literal, don't apply globbing" magic. I am afraid that using ':' as the sole "magic for from-root" as you advocate may turn out to be too short-sighted and would hurt us in the future. It may be more extensible if we used a common "magic introducer" at the beginning, an character unlikely to collide with any pathspec existing scripts and people use, and then have additional "what magic I want" signature immediately following that introducer letter in these magic filespecs. Off the to of my head, "/" may be a perfect choice for "here is a magic" introducer, as we never give absolute paths on the fiesystem from the root to git [*1*]. Then, even when you are in a subdirectory somewhere, this: $ git ls-tree pu -- '/:*.h' "/!$path" would list paths in the pu branch, limiting its output to any "*.h" header file, and a path that matches exactly with whatever is in $path variable without globbing within the current level. The above uses ':' as "this is relative to root" (your favorite, whose rationale being that HEAD:Makefile names Makefile at the top) and '!' (randombly chosen without any rationale other than being "NOT" and without any association with "glob", which make it a bad choice of the letter) as "this is NOT a glob". If we use ':' as the magic introducer, '::*.h" may be more logical if you follow your "HEAD:Makefile names Makefile at the top" analogy; ':/' breaks the analogy (the first colon is a general introducer and does not talk anything about what kind of magic; the second letter should be what magic it is about, and should use ':' from HEAD:Makefile analogy). I personally think "//*.h" looks a lot more natural than either ':*.h' or ':/*.h' that have been suggested on the command line, so I am tempted to suggest using '/' (the first slash in the example) as the magic introducer and using '/' (the second) as the 'from-root' magic signature. [Footnote] *1* I am ignoring "--no-index" variants that are not strictly part of git here, but I suspect this might also affect "git add /path/from/root" which I think we should deal with somehow. -- 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