On Fri, Apr 20, 2007 at 10:49:08PM +0200, Jakub Narebski wrote:
So from me it is slight Nak to this patch, at least unless "git diff
<tree1>:<path1> <tree2>:<path2>" will take the information about file
name and mode (permissions) from <tree1> and <tree2>, and included such
information in extended git diff header.
I created a prototyp implemention:
* Patch 1:
add a parameter to get_sha1 to store the mode, if it is known.
If it is not possible to dermine the mode, it stores S_IFINVALID.
* Patch 2:
add space for the mode in object_array (unknown mode is S_IFINVALID).
* Patch 3:
stores the mode for <tree>:<filename> syntax
* Patch 4:
use mode information for comparing two blobs
The patches are large, as some heavy used functions get a new
parameter. The changes should not increase the CPU time. Patch 2
increases the storage size for each object of object_array by an
unsigned for the mode.
My blobdiff patch will need some small adaptations:
* we need to add --raw -p --full-index as diff arguments
* we must pass $hash_parent_base.':'.$file_parent and
$hash_base.':'.$file_name to git-diff instead of
$hash and $hash_parent, if possible.
mfg Martin Kögler