Hi, Stefan Beller wrote: > On Thu, Dec 14, 2017 at 1:22 PM, Jonathan Nieder <jrnieder@xxxxxxxxx> wrote: >> - what about mode changes? If the file became executable but the >> blob content didn't change, does that commit match? > > ./git log --find-object=$(git rev-parse ba67504f:t/perf/p3400-rebase.sh) > > claims it does find the mode change (commit ba67504f is just a mode > change) Thanks. Reminder to self to add a test + docs about that (as a followup change; this isn't a complaint about the patch). >> - are copies and renames shown (if I am passing -M -C)? > > It restricts the commits shown, not the renamed files. But I assume > you mean it the same way as with mode changes. > I did not find a good commit in gits history to demonstrate, but as > it is orthogonal to the object id restrictions, I would think it works Ok, will add test + doc. >> Nit, not related to this change: it would be nice to have a long >> option to go along with the short name '-t' --- e.g. --include-trees. > > follow up patches welcome. :) Will think more and try to send a patch if it still seems like a good idea in a day or so. ;) >> Another nit: s/gitlink entry/submodule commit/, perhaps. The commit >> object is not a gitlink entry: it is pointed to by a gitlink entry. > > Well, what if the user doesn't have a submodule, but uses gitlinks > for other purposes? We do inspect the gitlink, so it is correct IMHO. It's a language nit. The argument to --find-object is a commit object name, not a gitlink entry. A gitlink entry looks like 160000 <path> <object> >> Another documentation idea: it may be nice to point out that this >> is only about the preimage and postimage submodule commit and that >> it doesn't look at the history in between. > > That is sensible. One might be tempted to ask: "Which superproject > commit contains a submodule pointer, that has commit $X in the > submodule history?", but this new option is totally not answering this. Ok, will try to come up with wording. >>> The >>> reason why these commits both occur prior to v2.0.0 are evil >>> merges that are not found using this new mechanism. >> >> Would it be worth the doc mentioning that this doesn't look at merges >> unless you use one of the -m/-c/--cc options, or does that go without >> saying? > > I assumed it goes without saying, just like the lacking -t could mean > to ignore trees. ;) I suspect it's worth a mention, based on the discussion in this thread (i.e. without such docs it was non-obvious and took some time to diagnose). [...] >>> +--find-object=<object-id>:: >>> + Restrict the output such that one side of the diff >>> + matches the given object id. The object can be a blob, >>> + gitlink entry or tree (when `-t` is given). >> >> I like this name --find-object more than --blobfind! I am not sure it >> quite matches what the user is looking for, though. We are not >> looking for all occurences of the object; we only care about when the >> object appears (was added or removed) in the diff. > > Thanks! Yes, but the 'edges' are so few commits that a further walk > will reveal all you need to know? Sorry for the lack of clarity: I actually like this behavior *more* than a "find trees pointing to object" behavior. I'm just saying the name sets an unclear expectation. [...] > Regarding finding a better name, I would want to hear from others, > I am happy with --find-object, though I can see --pickaxe-object > or --object--filter to be a good narrative as well. Drat, I was hoping for an opinion. Based on the answers above about mode changes and renames, at the moment --object-filter seems clearest to me. Thanks, Jonathan