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