From: Алексей Крезов Date: Fri, 24 Dec 2010 12:46:26 GMT Subject: Bug reports & patches: git-svn, git-completion, git diff hunk headers for Pascal Message-ID: <6110634424.20101224154626@mail.ru> Hello! I've found some bugs in Git: 1. git-svn: git svn set-tree/dcommit do not respect svn.pathnameencoding config variable although git svn fetch does here is the my patch - see attach git-svn.patch 2. git-completion when GIT_PS1_SHOWDIRTYSTATE is set diff.ignoreSubmodules config variable is not respected here is the my patch - see attach git-completion.bash.patch 3. CLASS procedures/functions are not detected (just procedures/functions do) in hunk headers for git diff for Pascal files here is the my patch - see attach userdiff.c.patch P.S. All patches is against Git v1.7.3.4 mailto:zapped@mail.ru 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).*)$", 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; } 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