git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re[2]: [PATCH 3/3] Fixes bug: GIT_PS1_SHOWDIRTYSTATE is no not respect diff.ignoreSubmodules config variable

From
Алексей Крезов <zapped@mail.ru>
Date
Dec 26, 2010, 22:25 UTC
Message-ID
<1824011293.20101227012557@mail.ru>
In-Reply-To
<4D15E48A.9050805@web.de>
Hello!

I`m sorry, but I`m newbie in making and distributing of public patches. So, don't beat me much ))

JL> it would have been easier for me if the commit message would have JL> described the problem you tried to fix a bit more in detail ;-). My problem was in the following. I use Git on Windows XP under Cygwin. So its perfomance is slower than on *nix, I guess. My project has 40 submodules (external libs) and some of them could have untracked files (for some reasons). So when I run any command in Bash after its execution Bash "thought" for 2-3 seconds. That was annoying. I do not remember the version of Git I used at that moment but I remember it was an update from 1.6.x to early 1.7.x. So I decided to roll back to 1.6.x )) Then there was some updates of Git. But after updating the problem still happened. When I tried to discover the reason of such a behaviour I found that Git got status for all submodules including untracked content and so marked them with * Then I read manual and found diff.ignoreSubmodules and tried to set up for each submodule in a .gitmodules but nothing changed (as it seemed to me at that time). So I've found the easiest way to solve my problem - this patch ) Maybe after this patch there was some changes in Git solved this problem but I did not investigate it, sorry.

JL> 2) If diff.ignoreSubmodules is unset it leads to an error JL> every time the prompt is displayed: JL> 'fatal: bad --ignore-submodules argument:' Yeah, you're right

JL> Am 25.12.2010 02:20, schrieb Zapped:
Show 19 quoted lines
>> Signed-off-by: Zapped <zapped@mail.ru>
>> ---
>>  contrib/completion/git-completion.bash |    3 ++-
>>  1 files changed, 2 insertions(+), 1 deletions(-)
>> 
>> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
>> index d3037fc..50fc385 100755
>> --- a/contrib/completion/git-completion.bash
>> +++ b/contrib/completion/git-completion.bash
>> @@ -280,7 +280,8 @@ __git_ps1 ()
>>               elif [ "true" = "$(git rev-parse --is-inside-work-tree 2>/dev/null)" ]; then
>>                       if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ]; then
>>                               if [ "$(git config --bool bash.showDirtyState)" != "false" ]; then
>> -                                     git diff --no-ext-diff --quiet --exit-code || w="*"
>> +                                     is=$(git config diff.ignoreSubmodules)
>> +                                     git diff --no-ext-diff --quiet --exit-code --ignore-submodules=$is || w="*"
>>                                       if git rev-parse --quiet --verify HEAD >/dev/null; then
>>                                               git diff-index --cached --quiet HEAD -- || i="+"
>>                                       else

JL> Thanks for resubmitting this as an inline patch for review (although JL> it would have been easier for me if the commit message would have JL> described the problem you tried to fix a bit more in detail ;-).

JL> After testing this patch it looks like it has a few issues:

JL> 1) it will break any per-submodule configuration done via JL> the 'submodule.<name>.ignore' setting in .git/config or JL> .gitmodules, as using the --ignore-submodules option JL> overrides those while only setting 'diff.ignoreSubmodules' JL> should not do that.

JL> 2) If diff.ignoreSubmodules is unset it leads to an error JL> every time the prompt is displayed: JL> 'fatal: bad --ignore-submodules argument:'

JL> 3) And for me it didn't change the behavior at all:

JL> - The '*' in the prompt vanishes as I set diff.ignoreSubmodules JL> as expected with or without your patch. JL> Am I missing something here?

JL> - The real problem here is that the '+' never goes away even JL> when 'diff.ignoreSubmodules' is set to 'all'. This is due JL> to the fact that 'diff.ignoreSubmodules' is only honored by JL> "git diff", but not by "git diff-index".

JL> So the real issue here seems to be the "git diff-index" call, which JL> doesn't honor the 'diff.ignoreSubmodules' setting. In commit 37aea37 JL> Dscho (CCed) introduced this configuration setting while explicitly JL> stating that it only affects porcelain. As the other config options JL> always influence porcelain and plumbing, it looks like we would want JL> to have this option honored by plumbing too, no?

JL> So are there any reasons for the plumbing diff commands not to honor JL> the diff.ignoreSubmodules setting?

Previous: Casey DahlinNext: Алексей Шумкин
Message 15 of 20 in “Fixes bug: git-diff: class methods are not detected in hunk headers for Pascal”
  1. 1/3 Fixes bug: git-diff: class methods are not detected in hunk headers for PascalZapped, Dec 25, 2010
  2. 2/3 Fixes bug: git-svn: svn.pathnameencoding is not respected with dcommit/set-treeZapped, Dec 25, 2010
  3. Thomas RastJan 4, 2011
  4. Eric WongJan 4, 2011
  5. Alexey ShumkinFeb 3, 2011
  6. Re[2]: [PATCH 2/3] Fixes bug: git-svn: svn.pathnameencoding is not respected with dcommit/set-treeАлексей Шумкин, Jan 5, 2011
  7. 3/3 Fixes bug: GIT_PS1_SHOWDIRTYSTATE is no not respect diff.ignoreSubmodules config variableZapped, Dec 25, 2010
  8. Jens LehmannDec 25, 2010
  9. Johannes SchindelinDec 25, 2010
  10. Junio C HamanoDec 26, 2010
  11. Re[2]: [PATCH 3/3] Fixes bug: GIT_PS1_SHOWDIRTYSTATE is no not respect diff.ignoreSubmodules config variableАлексей Шумкин, Dec 26, 2010
  12. Jens LehmannDec 27, 2010
  13. Johannes SchindelinDec 27, 2010
  14. Casey DahlinDec 27, 2010
  15. Re[2]: [PATCH 3/3] Fixes bug: GIT_PS1_SHOWDIRTYSTATE is no not respect diff.ignoreSubmodules config variableАлексей Крезов, Dec 26, 2010
  16. Re[2]: [PATCH 3/3] Fixes bug: GIT_PS1_SHOWDIRTYSTATE is no not respect diff.ignoreSubmodules config variableАлексей Шумкин, Dec 28, 2010
  17. Thomas RastJan 4, 2011
  18. Re[2]: [PATCH 1/3] Fixes bug: git-diff: class methods are not detected in hunk headers for PascalАлексей Шумкин, Jan 5, 2011
  19. Thomas RastJan 5, 2011
  20. Thomas RastJan 5, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.