* [PATCH 1/3] Fixes bug: git-diff: class methods are not detected in hunk headers for Pascal @ 2010-12-25 1:20 Zapped 2010-12-25 1:20 ` [PATCH 2/3] Fixes bug: git-svn: svn.pathnameencoding is not respected with dcommit/set-tree Zapped ` (2 more replies) 0 siblings, 3 replies; 20+ messages in thread From: Zapped @ 2010-12-25 1:20 UTC (permalink / raw) To: git Signed-off-by: Zapped <zapped@mail.ru> --- userdiff.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/userdiff.c b/userdiff.c index f9e05b5..259a382 100644 --- a/userdiff.c +++ b/userdiff.c @@ -52,7 +52,7 @@ PATTERNS("objc", "|[-+*/<>%&^|=!]=|--|\\+\\+|<<=?|>>=?|&&|\\|\\||::|->" "|[^[:space:]]|[\x80-\xff]+"), PATTERNS("pascal", - "^((procedure|function|constructor|destructor|interface|" + "^(((class[ \t]+)?(procedure|function)|constructor|destructor|interface|" "implementation|initialization|finalization)[ \t]*.*)$" "\n" "^(.*=[ \t]*(class|record).*)$", -- 1.7.3.4.3.g3f811 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 2/3] Fixes bug: git-svn: svn.pathnameencoding is not respected with dcommit/set-tree 2010-12-25 1:20 [PATCH 1/3] Fixes bug: git-diff: class methods are not detected in hunk headers for Pascal Zapped @ 2010-12-25 1:20 ` Zapped 2011-01-04 17:18 ` Thomas Rast 2010-12-25 1:20 ` [PATCH 3/3] Fixes bug: GIT_PS1_SHOWDIRTYSTATE is no not respect diff.ignoreSubmodules config variable Zapped 2011-01-04 17:13 ` [PATCH 1/3] Fixes bug: git-diff: class methods are not detected in hunk headers for Pascal Thomas Rast 2 siblings, 1 reply; 20+ messages in thread From: Zapped @ 2010-12-25 1:20 UTC (permalink / raw) To: git git-svn dcommit/set-tree fails when svn.pathnameencoding is set for native OS encoding (e.g. cp1251 for Windows) though git-svn fetch/clone works well Signed-off-by: Zapped <zapped@mail.ru> --- git-svn.perl | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/git-svn.perl b/git-svn.perl index 757de82..399bf4c 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -4451,6 +4451,7 @@ sub new { $self->{path_prefix} = length $self->{svn_path} ? "$self->{svn_path}/" : ''; $self->{config} = $opts->{config}; + $self->{pathnameencoding} = Git::config('svn.pathnameencoding'); return $self; } -- 1.7.3.4.3.g3f811 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 2/3] Fixes bug: git-svn: svn.pathnameencoding is not respected with dcommit/set-tree 2010-12-25 1:20 ` [PATCH 2/3] Fixes bug: git-svn: svn.pathnameencoding is not respected with dcommit/set-tree Zapped @ 2011-01-04 17:18 ` Thomas Rast 2011-01-04 23:20 ` Eric Wong 2011-01-05 11:44 ` Re[2]: " Алексей Шумкин 0 siblings, 2 replies; 20+ messages in thread From: Thomas Rast @ 2011-01-04 17:18 UTC (permalink / raw) To: Zapped; +Cc: git, Eric Wong Zapped wrote: > git-svn dcommit/set-tree fails when svn.pathnameencoding is set for native OS encoding (e.g. cp1251 for Windows) though git-svn fetch/clone works well I'll let Eric judge whether loading the encoding here is the right fix, but here too the commit message states only what is broken, not why you fixed it that way. Can you elaborate a bit? Also, this should be easy to cover with a test case, can you make one? > git-svn.perl | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/git-svn.perl b/git-svn.perl > index 757de82..399bf4c 100755 > --- a/git-svn.perl > +++ b/git-svn.perl > @@ -4451,6 +4451,7 @@ sub new { > $self->{path_prefix} = length $self->{svn_path} ? > "$self->{svn_path}/" : ''; > $self->{config} = $opts->{config}; > + $self->{pathnameencoding} = Git::config('svn.pathnameencoding'); > return $self; > } > > -- Thomas Rast trast@{inf,student}.ethz.ch ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/3] Fixes bug: git-svn: svn.pathnameencoding is not respected with dcommit/set-tree 2011-01-04 17:18 ` Thomas Rast @ 2011-01-04 23:20 ` Eric Wong 2011-02-03 20:28 ` Alexey Shumkin 2011-01-05 11:44 ` Re[2]: " Алексей Шумкин 1 sibling, 1 reply; 20+ messages in thread From: Eric Wong @ 2011-01-04 23:20 UTC (permalink / raw) To: Zapped; +Cc: Thomas Rast, git Thomas Rast <trast@student.ethz.ch> wrote: > Zapped wrote: > > git-svn dcommit/set-tree fails when svn.pathnameencoding is set for native OS encoding (e.g. cp1251 for Windows) though git-svn fetch/clone works well > > I'll let Eric judge whether loading the encoding here is the right > fix, but here too the commit message states only what is broken, not > why you fixed it that way. Can you elaborate a bit? > > Also, this should be easy to cover with a test case, can you make one? I second Thomas's requests. I'm also a bit disappointed the original option is missing tests, especially since not many people are likely to use it. -- Eric Wong ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/3] Fixes bug: git-svn: svn.pathnameencoding is not respected with dcommit/set-tree 2011-01-04 23:20 ` Eric Wong @ 2011-02-03 20:28 ` Alexey Shumkin 0 siblings, 0 replies; 20+ messages in thread From: Alexey Shumkin @ 2011-02-03 20:28 UTC (permalink / raw) To: git Eric Wong <normalperson <at> yhbt.net> writes: > > Thomas Rast <trast <at> student.ethz.ch> wrote: > > Zapped wrote: > > > git-svn dcommit/set-tree fails when svn.pathnameencoding is set for native OS encoding (e.g. cp1251 > for Windows) though git-svn fetch/clone works well > > > > I'll let Eric judge whether loading the encoding here is the right > > fix, but here too the commit message states only what is broken, not > > why you fixed it that way. Can you elaborate a bit? > > > > Also, this should be easy to cover with a test case, can you make one? > > I second Thomas's requests. I'm also a bit disappointed the original > option is missing tests, especially since not many people are likely to > use it. > Yes, I remember that, sorry, but I just have no enough time to get into git tests and make my own ones. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re[2]: [PATCH 2/3] Fixes bug: git-svn: svn.pathnameencoding is not respected with dcommit/set-tree 2011-01-04 17:18 ` Thomas Rast 2011-01-04 23:20 ` Eric Wong @ 2011-01-05 11:44 ` Алексей Шумкин 1 sibling, 0 replies; 20+ messages in thread From: Алексей Шумкин @ 2011-01-05 11:44 UTC (permalink / raw) To: Thomas Rast; +Cc: git, Eric Wong As I already said I'm newbie in submitting/distributing patches but I'll try :) Tuesday, January 4, 2011, 8:18:09 PM, you wrote: TR> Zapped wrote: >> git-svn dcommit/set-tree fails when svn.pathnameencoding is set for native OS encoding (e.g. cp1251 for Windows) though git-svn fetch/clone works well TR> I'll let Eric judge whether loading the encoding here is the right TR> fix, but here too the commit message states only what is broken, not TR> why you fixed it that way. Can you elaborate a bit? TR> Also, this should be easy to cover with a test case, can you make one? >> git-svn.perl | 1 + >> 1 files changed, 1 insertions(+), 0 deletions(-) >> >> diff --git a/git-svn.perl b/git-svn.perl >> index 757de82..399bf4c 100755 >> --- a/git-svn.perl >> +++ b/git-svn.perl >> @@ -4451,6 +4451,7 @@ sub new { >> $self->{path_prefix} = length $self->{svn_path} ? >> "$self->{svn_path}/" : ''; >> $self->{config} = $opts->{config}; >> + $self->{pathnameencoding} = Git::config('svn.pathnameencoding'); >> return $self; >> } >> >> -- С уважением, Алексей Шумкин mailto:zapped@mail.ru ^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 3/3] Fixes bug: GIT_PS1_SHOWDIRTYSTATE is no not respect diff.ignoreSubmodules config variable 2010-12-25 1:20 [PATCH 1/3] Fixes bug: git-diff: class methods are not detected in hunk headers for Pascal Zapped 2010-12-25 1:20 ` [PATCH 2/3] Fixes bug: git-svn: svn.pathnameencoding is not respected with dcommit/set-tree Zapped @ 2010-12-25 1:20 ` Zapped 2010-12-25 12:33 ` Jens Lehmann 2011-01-04 17:13 ` [PATCH 1/3] Fixes bug: git-diff: class methods are not detected in hunk headers for Pascal Thomas Rast 2 siblings, 1 reply; 20+ messages in thread From: Zapped @ 2010-12-25 1:20 UTC (permalink / raw) To: git 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 -- 1.7.3.4.3.g3f811 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 3/3] Fixes bug: GIT_PS1_SHOWDIRTYSTATE is no not respect diff.ignoreSubmodules config variable 2010-12-25 1:20 ` [PATCH 3/3] Fixes bug: GIT_PS1_SHOWDIRTYSTATE is no not respect diff.ignoreSubmodules config variable Zapped @ 2010-12-25 12:33 ` Jens Lehmann 2010-12-25 13:08 ` Johannes Schindelin ` (3 more replies) 0 siblings, 4 replies; 20+ messages in thread From: Jens Lehmann @ 2010-12-25 12:33 UTC (permalink / raw) To: Zapped; +Cc: git, Johannes Schindelin Am 25.12.2010 02:20, schrieb Zapped: > 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 Thanks for resubmitting this as an inline patch for review (although it would have been easier for me if the commit message would have described the problem you tried to fix a bit more in detail ;-). After testing this patch it looks like it has a few issues: 1) it will break any per-submodule configuration done via the 'submodule.<name>.ignore' setting in .git/config or .gitmodules, as using the --ignore-submodules option overrides those while only setting 'diff.ignoreSubmodules' should not do that. 2) If diff.ignoreSubmodules is unset it leads to an error every time the prompt is displayed: 'fatal: bad --ignore-submodules argument:' 3) And for me it didn't change the behavior at all: - The '*' in the prompt vanishes as I set diff.ignoreSubmodules as expected with or without your patch. Am I missing something here? - The real problem here is that the '+' never goes away even when 'diff.ignoreSubmodules' is set to 'all'. This is due to the fact that 'diff.ignoreSubmodules' is only honored by "git diff", but not by "git diff-index". So the real issue here seems to be the "git diff-index" call, which doesn't honor the 'diff.ignoreSubmodules' setting. In commit 37aea37 Dscho (CCed) introduced this configuration setting while explicitly stating that it only affects porcelain. As the other config options always influence porcelain and plumbing, it looks like we would want to have this option honored by plumbing too, no? So are there any reasons for the plumbing diff commands not to honor the diff.ignoreSubmodules setting? ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 3/3] Fixes bug: GIT_PS1_SHOWDIRTYSTATE is no not respect diff.ignoreSubmodules config variable 2010-12-25 12:33 ` Jens Lehmann @ 2010-12-25 13:08 ` Johannes Schindelin 2010-12-26 19:14 ` Junio C Hamano ` (2 subsequent siblings) 3 siblings, 0 replies; 20+ messages in thread From: Johannes Schindelin @ 2010-12-25 13:08 UTC (permalink / raw) To: Jens Lehmann; +Cc: Zapped, git Hi, On Sat, 25 Dec 2010, Jens Lehmann wrote: > In commit 37aea37 Dscho (CCed) introduced this configuration setting > while explicitly stating that it only affects porcelain. As the other > config options always influence porcelain and plumbing, it looks like we > would want to have this option honored by plumbing too, no? IIRC Junio was real happy that I did not honor plumbing. Ciao, Dscho ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 3/3] Fixes bug: GIT_PS1_SHOWDIRTYSTATE is no not respect diff.ignoreSubmodules config variable 2010-12-25 12:33 ` Jens Lehmann 2010-12-25 13:08 ` Johannes Schindelin @ 2010-12-26 19:14 ` Junio C Hamano 2010-12-26 22:42 ` Re[2]: " Алексей Шумкин 2010-12-27 11:14 ` Jens Lehmann 2010-12-26 22:25 ` Re[2]: " Алексей Крезов 2010-12-28 12:14 ` Алексей Шумкин 3 siblings, 2 replies; 20+ messages in thread From: Junio C Hamano @ 2010-12-26 19:14 UTC (permalink / raw) To: Jens Lehmann; +Cc: Zapped, git, Johannes Schindelin Jens Lehmann <Jens.Lehmann@web.de> writes: > So are there any reasons for the plumbing diff commands not to honor > the diff.ignoreSubmodules setting? There are two kinds of users of the plumbing. One class of plumbing users is scripts that is about automation and mechanization that want to control what they do precisely (think cron jobs) without getting affected by the user preference stored in the repository configuration. This class could either: (1) state what they want explicitly from the command line; or (2) rely on built-in defaults not changing underneath them. The behaviour of diff recursively inspecting submodule dirtiness has an unfortunate history, in that the behaviour changed over time, and in each step when we made a change, we thought we were making an unquestionable improvement. Originally we only said "submodule HEAD is different from what we have in the index/superproject HEAD". Later we added different kind of dirtiness like untracked files or modified contents in submodules, decided perhaps mistakenly that majority of users do want to see them as dirtiness and made that the default and allowed them to be ignored by an explicit request. At that point, in order not to break existing scripts (mostly of the "mechanization" class, written back when there was no such extra dirtyness hence with no "explicit refusal" route available to them without rewriting), hence "no configuration should affect plumbing randomly" policy. On the other hand, you may write user facing Porcelain in scripts and run plumbing from there. This class of plumbing users could either: (1) inspect the config itself, interpret the customization and pass an explicit command line flag; or (2) allow the plumbing honor the end user configuration stored in the repository or user configuration files. It is argurably more convenient for these users if the plumbing blindly honored the configurations, as it would have allowed the latter implementation. That way, we can be more lazy when writing our scripts, and ignore having to worry about new kinds of customization added to underlying git after a script is written---but new kinds of customization may break your script's expectation of what will and what will not be made customizable, and you would end up giving an explicit "do not use that feature" in some cases, so the being able to be lazy is not necessarily always a win. Things may have been a bit different if the original feature change to inspect submodules deeper, command line flags to control that behaviour and configuration to default the flags came at the same time, but unfortunately they happend over time. I think we have been slowly getting better at this, but in the case of this particular feature, the original introduction of --ignore-submodules was in May 2008, deeper submodule inspection and the richer --ignore-submodules=<kind> option came much later in June 2010, and the configuration was invented later in August 2010, which would mean that allowing the plumbing to honor configuration would have broken scripts written in the 2 years and 3 months period. And no, this does not call for a blanket "do / do not honor configuration" option to plumbing commands. A more selective "do / do not honor these configuration variables" option might be an option, though. By the way, could we please have a real sign-off, not with a one with a pseudonym, given to the series? ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re[2]: [PATCH 3/3] Fixes bug: GIT_PS1_SHOWDIRTYSTATE is no not respect diff.ignoreSubmodules config variable 2010-12-26 19:14 ` Junio C Hamano @ 2010-12-26 22:42 ` Алексей Шумкин 2010-12-27 11:14 ` Jens Lehmann 1 sibling, 0 replies; 20+ messages in thread From: Алексей Шумкин @ 2010-12-26 22:42 UTC (permalink / raw) To: Junio C Hamano; +Cc: Jens Lehmann, git, Johannes Schindelin JCH> By the way, could we please have a real sign-off, not with a one with a JCH> pseudonym, given to the series? Oh, I`m sorry. Of course. Should I resend patches with real sign-off, at least first two ones? ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 3/3] Fixes bug: GIT_PS1_SHOWDIRTYSTATE is no not respect diff.ignoreSubmodules config variable 2010-12-26 19:14 ` Junio C Hamano 2010-12-26 22:42 ` Re[2]: " Алексей Шумкин @ 2010-12-27 11:14 ` Jens Lehmann 2010-12-27 22:06 ` Johannes Schindelin 1 sibling, 1 reply; 20+ messages in thread From: Jens Lehmann @ 2010-12-27 11:14 UTC (permalink / raw) To: Junio C Hamano; +Cc: Zapped, git, Johannes Schindelin Am 26.12.2010 20:14, schrieb Junio C Hamano: > Jens Lehmann <Jens.Lehmann@web.de> writes: > >> So are there any reasons for the plumbing diff commands not to honor >> the diff.ignoreSubmodules setting? Thank you for explaining those reasons in detail. > One class of plumbing users is scripts that is about automation and > mechanization that want to control what they do precisely (think cron > jobs) without getting affected by the user preference stored in the > repository configuration. This class could either: > > (1) state what they want explicitly from the command line; or > (2) rely on built-in defaults not changing underneath them. > > The behaviour of diff recursively inspecting submodule dirtiness has an > unfortunate history, in that the behaviour changed over time, and in each > step when we made a change, we thought we were making an unquestionable > improvement. Originally we only said "submodule HEAD is different from > what we have in the index/superproject HEAD". Later we added different > kind of dirtiness like untracked files or modified contents in submodules, > decided perhaps mistakenly that majority of users do want to see them as > dirtiness and made that the default and allowed them to be ignored by an > explicit request. At that point, in order not to break existing scripts > (mostly of the "mechanization" class, written back when there was no such > extra dirtyness hence with no "explicit refusal" route available to them > without rewriting), hence "no configuration should affect plumbing > randomly" policy. Good point. But unfortunately the diff plumbing commands are affected by the "submodule.<name>.ignore" ignore settings I introduced in August in aee9c7d6 and 302ad7a9. Maybe we should revert the part of these patches that changed the plumbing commands? > On the other hand, you may write user facing Porcelain in scripts and run > plumbing from there. This class of plumbing users could either: > > (1) inspect the config itself, interpret the customization and pass > an explicit command line flag; or > > (2) allow the plumbing honor the end user configuration stored in the > repository or user configuration files. > > It is argurably more convenient for these users if the plumbing blindly > honored the configurations, as it would have allowed the latter > implementation. That way, we can be more lazy when writing our scripts, > and ignore having to worry about new kinds of customization added to > underlying git after a script is written---but new kinds of customization > may break your script's expectation of what will and what will not be made > customizable, and you would end up giving an explicit "do not use that > feature" in some cases, so the being able to be lazy is not necessarily > always a win. Agreed. > Things may have been a bit different if the original feature change to > inspect submodules deeper, command line flags to control that behaviour > and configuration to default the flags came at the same time, but > unfortunately they happend over time. I think we have been slowly getting > better at this, but in the case of this particular feature, the original > introduction of --ignore-submodules was in May 2008, deeper submodule > inspection and the richer --ignore-submodules=<kind> option came much > later in June 2010, and the configuration was invented later in August > 2010, which would mean that allowing the plumbing to honor configuration > would have broken scripts written in the 2 years and 3 months period. > > And no, this does not call for a blanket "do / do not honor configuration" > option to plumbing commands. A more selective "do / do not honor these > configuration variables" option might be an option, though. What about a new "--ignore-submodules=config" option to tell the plumbing that it should honor the config? And it looks like the PS1 problem that started this discussion is a valid example for mixed usage of porcelain and plumbing commands. In a first attempt to fix the problem by using "git diff --cached" instead of "git diff-index --cached" I noticed that those two commands give different results when new submodules were created and had been added to the index. "git diff --cached" ignores them while "git diff-index --cached" shows them. Anything I am missing here? ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 3/3] Fixes bug: GIT_PS1_SHOWDIRTYSTATE is no not respect diff.ignoreSubmodules config variable 2010-12-27 11:14 ` Jens Lehmann @ 2010-12-27 22:06 ` Johannes Schindelin 2010-12-27 22:43 ` Casey Dahlin 0 siblings, 1 reply; 20+ messages in thread From: Johannes Schindelin @ 2010-12-27 22:06 UTC (permalink / raw) To: Jens Lehmann; +Cc: Junio C Hamano, Zapped, git Hi Jens, On Mon, 27 Dec 2010, Jens Lehmann wrote: > [...] > > And it looks like the PS1 problem that started this discussion is a > valid example for mixed usage of porcelain and plumbing commands. The distinction between porcelain and plumbing commands is not as clear-cut as some people would like it to be (just call "git grep 'git log'" in a git.git checkout). IMHO the reason is that a distinction between porcelain and plumbing makes sense in the world of sanitary engineering, but not necessarily in the world of software (a distinction between assembler vs source code, or GUI vs library makes sense, but not between "programs to be called by humans" and "programs to be called by other programs"). Note: I do not think that the "plumbing" concept was not well-intended, but I doubt that the concept holds up in the face of reality. I fear, though, that we cannot simply abolish the notion "plumbing vs porcelain" from git.git... Ciao, Dscho ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 3/3] Fixes bug: GIT_PS1_SHOWDIRTYSTATE is no not respect diff.ignoreSubmodules config variable 2010-12-27 22:06 ` Johannes Schindelin @ 2010-12-27 22:43 ` Casey Dahlin 0 siblings, 0 replies; 20+ messages in thread From: Casey Dahlin @ 2010-12-27 22:43 UTC (permalink / raw) To: Johannes Schindelin; +Cc: Jens Lehmann, Junio C Hamano, Zapped, git On Mon, Dec 27, 2010 at 11:06:38PM +0100, Johannes Schindelin wrote: > Note: I do not think that the "plumbing" concept was not well-intended, > but I doubt that the concept holds up in the face of reality. > I've always felt that plumbing commands existed to expose the C portion of git to the bash portion of git. As the latter shrinks plumbing commands make less sense (and offering those commands as a library makes more sense, which is unfortunately close to impossible in the current git source). --CJD ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re[2]: [PATCH 3/3] Fixes bug: GIT_PS1_SHOWDIRTYSTATE is no not respect diff.ignoreSubmodules config variable 2010-12-25 12:33 ` Jens Lehmann 2010-12-25 13:08 ` Johannes Schindelin 2010-12-26 19:14 ` Junio C Hamano @ 2010-12-26 22:25 ` Алексей Крезов 2010-12-28 12:14 ` Алексей Шумкин 3 siblings, 0 replies; 20+ messages in thread From: Алексей Крезов @ 2010-12-26 22:25 UTC (permalink / raw) To: Jens Lehmann; +Cc: git, Johannes Schindelin 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: >> 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? ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re[2]: [PATCH 3/3] Fixes bug: GIT_PS1_SHOWDIRTYSTATE is no not respect diff.ignoreSubmodules config variable 2010-12-25 12:33 ` Jens Lehmann ` (2 preceding siblings ...) 2010-12-26 22:25 ` Re[2]: " Алексей Крезов @ 2010-12-28 12:14 ` Алексей Шумкин 3 siblings, 0 replies; 20+ messages in thread From: Алексей Шумкин @ 2010-12-28 12:14 UTC (permalink / raw) To: Jens Lehmann; +Cc: git, Johannes Schindelin Hi, all. Well, I rolled back my so-called patch which rose up such a discussion, and what I did see? Annoying behaviuor is vanished and perfomance of $PS1 is acceptable (as fast as with the "patch"). I guess, as I said, something changed in Git since I discovered and solved the problem such a weird way. So, it seems to me, this patch might be considered unnecessary? ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 1/3] Fixes bug: git-diff: class methods are not detected in hunk headers for Pascal 2010-12-25 1:20 [PATCH 1/3] Fixes bug: git-diff: class methods are not detected in hunk headers for Pascal Zapped 2010-12-25 1:20 ` [PATCH 2/3] Fixes bug: git-svn: svn.pathnameencoding is not respected with dcommit/set-tree Zapped 2010-12-25 1:20 ` [PATCH 3/3] Fixes bug: GIT_PS1_SHOWDIRTYSTATE is no not respect diff.ignoreSubmodules config variable Zapped @ 2011-01-04 17:13 ` Thomas Rast 2011-01-05 11:53 ` Re[2]: " Алексей Шумкин 2 siblings, 1 reply; 20+ messages in thread From: Thomas Rast @ 2011-01-04 17:13 UTC (permalink / raw) To: Zapped; +Cc: git Zapped wrote: > Signed-off-by: Zapped <zapped@mail.ru> As Junio already said, please provide a real name for the sign-off. But I also found the commit message and content confusing, probably because I haven't programmed Pascal for 15 years. You said Fixes bug: git-diff: class methods are not detected in hunk headers for Pascal > PATTERNS("pascal", > - "^((procedure|function|constructor|destructor|interface|" > + "^(((class[ \t]+)?(procedure|function)|constructor|destructor|interface|" > "implementation|initialization|finalization)[ \t]*.*)$" > "\n" > "^(.*=[ \t]*(class|record).*)$", But the last line very conspicuously already mentions 'class', so why does it fail? I had to look up a bit of Pascal syntax. Google helped with http://www.freepascal.org/docs-html/ref/ref.html which answers this. Also, as stated in SubmittingPatches, we generally word the messages as stating the behaviour of the changed version in the present tense. So a better commit message would be userdiff: match Pascal class methods Class declarations were already covered by the second pattern, but class methods have the 'class' keyword in front too. Account for it. Signed-off-by: Алексей Крезов <zapped@mail.ru> Ok, now I feel silly for only having a two-liner despite my complaints. That being said, I have now verified that the patch is good, and, you can include my Acked-by: Thomas Rast <trast@student.ethz.ch> in a reroll if you fix the above. -- Thomas Rast trast@{inf,student}.ethz.ch ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re[2]: [PATCH 1/3] Fixes bug: git-diff: class methods are not detected in hunk headers for Pascal 2011-01-04 17:13 ` [PATCH 1/3] Fixes bug: git-diff: class methods are not detected in hunk headers for Pascal Thomas Rast @ 2011-01-05 11:53 ` Алексей Шумкин 2011-01-05 14:23 ` Thomas Rast 0 siblings, 1 reply; 20+ messages in thread From: Алексей Шумкин @ 2011-01-05 11:53 UTC (permalink / raw) To: Thomas Rast; +Cc: git Hello, Thomas TR> But the last line very conspicuously already mentions 'class', so why TR> does it fail? Yes, As you already discovered that last line match for class/record definition but not for class methods. I did as you said I changed commit message (also included "Acked-by:"). So should I re-submit patch to the maillist as a new one or as an answer to this thread? TR> Zapped wrote: >> Signed-off-by: Zapped <zapped@mail.ru> TR> As Junio already said, please provide a real name for the sign-off. TR> But I also found the commit message and content confusing, probably TR> because I haven't programmed Pascal for 15 years. TR> You said TR> Fixes bug: git-diff: class methods are not detected in hunk headers for Pascal >> PATTERNS("pascal", >> - "^((procedure|function|constructor|destructor|interface|" >> + "^(((class[ \t]+)?(procedure|function)|constructor|destructor|interface|" >> "implementation|initialization|finalization)[ \t]*.*)$" >> "\n" >> "^(.*=[ \t]*(class|record).*)$", TR> But the last line very conspicuously already mentions 'class', so why TR> does it fail? TR> I had to look up a bit of Pascal syntax. Google helped with TR> http://www.freepascal.org/docs-html/ref/ref.html TR> which answers this. Also, as stated in SubmittingPatches, we TR> generally word the messages as stating the behaviour of the changed TR> version in the present tense. So a better commit message would be TR> userdiff: match Pascal class methods TR> Class declarations were already covered by the second pattern, but TR> class methods have the 'class' keyword in front too. Account for TR> it. TR> Signed-off-by: Алексей Крезов <zapped@mail.ru> TR> Ok, now I feel silly for only having a two-liner despite my TR> complaints. TR> That being said, I have now verified that the patch is good, and, you TR> can include my TR> Acked-by: Thomas Rast <trast@student.ethz.ch> TR> in a reroll if you fix the above. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 1/3] Fixes bug: git-diff: class methods are not detected in hunk headers for Pascal 2011-01-05 11:53 ` Re[2]: " Алексей Шумкин @ 2011-01-05 14:23 ` Thomas Rast 2011-01-05 14:31 ` Thomas Rast 0 siblings, 1 reply; 20+ messages in thread From: Thomas Rast @ 2011-01-05 14:23 UTC (permalink / raw) To: Алексей Шумкин Cc: git Алексей Шумкин wrote: > I did as you said I changed commit message (also included > "Acked-by:"). So should I re-submit patch to the maillist as a new one > or as an answer to this thread? It doesn't matter that much; most people resend as a reply to some email in the thread. Just don't distribute the reroll all across the thread :-) What you can do now that you have an Ack, or if you feel otherwise confident that this patch is ready for inclusion, is Cc it to Junio. -- Thomas Rast trast@{inf,student}.ethz.ch ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 1/3] Fixes bug: git-diff: class methods are not detected in hunk headers for Pascal 2011-01-05 14:23 ` Thomas Rast @ 2011-01-05 14:31 ` Thomas Rast 0 siblings, 0 replies; 20+ messages in thread From: Thomas Rast @ 2011-01-05 14:31 UTC (permalink / raw) To: Алексей Шумкин Cc: git Thomas Rast wrote: > Алексей Шумкин wrote: > > I did as you said I changed commit message (also included > > "Acked-by:"). So should I re-submit patch to the maillist as a new one > > or as an answer to this thread? > > It doesn't matter that much; most people resend as a reply to some > email in the thread. Just don't distribute the reroll all across the > thread :-) BTW speaking of series (and sorry for not pointing this out earlier): Since these patches are not related to each other at all, it's better if you treat them as separate, not as a series. Making a series is sort of an "all or nothing" hint, meaning that if something holds up one patch in the series, Junio will treat the whole series as stalled, etc. So probably it's better if you resend the acked patch alone, to show that it can stand on its own. Then later repeat the same for the other two patches when you have them ready. -- Thomas Rast trast@{inf,student}.ethz.ch ^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2011-02-03 20:28 UTC | newest] Thread overview: 20+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-12-25 1:20 [PATCH 1/3] Fixes bug: git-diff: class methods are not detected in hunk headers for Pascal Zapped 2010-12-25 1:20 ` [PATCH 2/3] Fixes bug: git-svn: svn.pathnameencoding is not respected with dcommit/set-tree Zapped 2011-01-04 17:18 ` Thomas Rast 2011-01-04 23:20 ` Eric Wong 2011-02-03 20:28 ` Alexey Shumkin 2011-01-05 11:44 ` Re[2]: " Алексей Шумкин 2010-12-25 1:20 ` [PATCH 3/3] Fixes bug: GIT_PS1_SHOWDIRTYSTATE is no not respect diff.ignoreSubmodules config variable Zapped 2010-12-25 12:33 ` Jens Lehmann 2010-12-25 13:08 ` Johannes Schindelin 2010-12-26 19:14 ` Junio C Hamano 2010-12-26 22:42 ` Re[2]: " Алексей Шумкин 2010-12-27 11:14 ` Jens Lehmann 2010-12-27 22:06 ` Johannes Schindelin 2010-12-27 22:43 ` Casey Dahlin 2010-12-26 22:25 ` Re[2]: " Алексей Крезов 2010-12-28 12:14 ` Алексей Шумкин 2011-01-04 17:13 ` [PATCH 1/3] Fixes bug: git-diff: class methods are not detected in hunk headers for Pascal Thomas Rast 2011-01-05 11:53 ` Re[2]: " Алексей Шумкин 2011-01-05 14:23 ` Thomas Rast 2011-01-05 14:31 ` Thomas Rast
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).