Hello Junio C Hamano <gitster@xxxxxxxxx> escreveu no dia quarta, 4/11/2020 à(s) 01:12: > > Mário Guimarães <mario.luis.guimaraes@xxxxxxxxx> writes: > > > In the Git repository run this command: > > > > git log --raw -r -c --abbrev=6 --pretty=oneline -n1 > > a7144d4bc5ab58f306a1e5c73b27196fb999a63d > > This is not one of my object, so above won't be usable as > reproduction recipe. But that is OK. > > > What did you expect to happen? (Expected behavior) > > > > I was expecting to get this line in the output > > > > ::100644 100644 100644 639a41 111378 05ba1d MM Documentation/git-rebase.txt > > > > What happened instead? (Actual behavior) > > > > I got the following line instead > > > > ::100644 100644 100644 639a41 111378 05ba1d3 MM Documentation/git-rebase.txt > > The above command tells us that you locally have an object whose > name begins with 05ba1d3, which I do not have. But my history > shared with the entire world has an object whose name begins with > 05ba1d7, and I am reasonably sure that your repository has it, since > it is a part of 17f26a9e (git-am: fix shell quoting, 2009-01-14). > > So in my repository, 05ba1d is enough to uniquely identify 05ba1d7, > but in your repository 05ba1d is not enough to uniquely identify > 05ba1d3, because 05ba1d7 also exists in your repository. And when > the object cannot be uniquely specified with the given abbreviation > width, Git makes sure its output is usable to uniquely identify the > object it wants to name. > > In short, I think what you observed is totally expected. > > The documentation has some room for improvement, I also think. > > How about saying something like this? > > > > Documentation/diff-options.txt | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git i/Documentation/diff-options.txt w/Documentation/diff-options.txt > index ee52b65e46..114e440c5b 100644 > --- i/Documentation/diff-options.txt > +++ w/Documentation/diff-options.txt > @@ -446,7 +446,8 @@ endif::git-format-patch[] > --abbrev[=<n>]:: > Instead of showing the full 40-byte hexadecimal object > name in diff-raw format output and diff-tree header > - lines, show only a partial prefix. > + lines, show only a partial prefix that uses at least '<n>' > + hexdigits. > In diff-patch output format, `--full-index` takes higher > precedence, i.e. if `--full-index` is specified, full blob > names will be shown regardless of `--abbrev`. What about this? It makes clear that the prefix is still one that can be used to identify the object in the repository. diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt index ee52b65e46..c15b4adb28 100644 --- a/Documentation/diff-options.txt +++ b/Documentation/diff-options.txt @@ -446,8 +446,9 @@ endif::git-format-patch[] --abbrev[=<n>]:: Instead of showing the full 40-byte hexadecimal object name in diff-raw format output and diff-tree header - lines, show only a partial prefix. - In diff-patch output format, `--full-index` takes higher + lines, show only the minimal prefix that identifies + the object using at least `<n>` hexdigits. In diff-patch output format, `--full-index` takes higher precedence, i.e. if `--full-index` is specified, full blob names will be shown regardless of `--abbrev`. Non default number of digits can be specified with `--abbrev=<n>`.