git diff too slow for a file
- From
- SungHyun Nam <goweol@gmail.com>
- Date
- Mar 29, 2010, 01:42 UTC
- Message-ID
- <4BB00573.6040005@gmail.com>
Hello,
If I run a attached script for bunzipped attached files, I get: (To reduce size, I removed many lines and bzipped.)
$ ./mk.sh
time diff -u x3 x4 >/dev/null 2>&1 real 0m0.011s
user 0m0.000s
sys 0m0.010stime git diff >/dev/null 2>&1
real 0m0.193s
user 0m0.190s
sys 0m0.000s $ git version
git version 1.7.0.2.273.gc2413 $ diff --version
diff (GNU diffutils) 2.8.1
...Well, though the files are ascii file, they includes a random hexa-decimal datas, so that I don't interest the diff result at all. But the real problem is 'rebasing took so long if the file was changed'. Because the git tree includes several such a file, if they changed, rebase took some miniutes for every branch. Such a branch includes a few lines of changes for a C source file, though. Now I'm waiting an hour to finish rebasing all the branches and yet a rebasing script is running... :-(
Please help! Thanks, namsh
The original file has more than 180000 lines and the result is:
$ ./mk.sh
time diff -u x3 x4 >/dev/null 2>&1 real 0m0.759s
user 0m0.740s
sys 0m0.010stime git diff >/dev/null 2>&1
real 0m44.460s
user 0m44.390s
sys 0m0.030s#!/bin/bash
run_command()
{
echo "$@"
eval "$@"
}run_command 'time diff -u x3 x4 >/dev/null 2>&1'
{
rm -rf u
mkdir u
cd u
cp ../x3 x
git init
git add .
git ci -m x
cp ../x4 x
} >/dev/null 2>&1echo '' run_command 'time git diff >/dev/null 2>&1'
exit 0