Torsten Bögershausen <tboegi@xxxxxx> writes: > At some point inside the merge, Git calls read-cache.c/ce_compare_data(), > to check if the path named "file" is clean. > According to the tree information, the path "file" has the sha1 99b633. > #Note: > #sha1 99b633 is "first line\nsame line\n" I thought your scenario was that our side had CRLF both in the blob and in the working tree. So this is a different example? Our side has LF in the blob that is checked out with CRLF in the working tree, and their side has CRLF in the blob? > ce_compare_data() starts the work: > OK, lets run index_fd(...,ce->name,...) > # index_fd will simulate a "git add" and return the sha1 (via the sha1 pointer) > # after the hashing. > > # ce_compare_data() will later compare ce->sha1 with the result stored in > # the local sha1. That's why a sha1 is in the parameter list. > # To return the resulting hash: > > ce_compare_data() calls index_fd(sha1, ..., ce->name, ...) > > #Down in index_fd(): > > sha1_file.c/index_fd() calls index_core() (after consulting the attributes) > index_core() reads the file from the working tree into memory using > read_in_full(), and after that index_mem() calls hash_sha1_file(buf) > to calculate the sha1. > > Before the hashing is done, index_mem() runs > convert_to_git(path, buf, size, &nbuf, SAFE_CRLF_FALSE) > to convert "blobs to git internal format". > > > Here, convert_to_git() consults the .gitattributes (again) to find out that > crlf_action is CRLF_AUTO in our case. > The "new safer autocrlf handling" says that if a blob as any CR, don't convert > CRLFs at "git add". > > convert.c/crlf_to_git() starts to do it's job: > - look at buf (It has CRLF, conversion may be needed) > - consult blob_has_cr() > # Note: Before this patch, has_cr_in_index(path)) was used > > #Again, before this patch, > has_cr_in_index(path) calls read_blob_data_from_cache(path, &sz) to read the > blob into memory. > > Now read_blob_data_from_cache() is a macro, and we end up in > read_blob_data_from_index(&the_index, (path), (sz)) > > read-cache.c/read_blob_data_from_index() starts its work: > pos = index_name_pos(istate, path, len); > if (pos < 0) { > /* > * We might be in the middle of a merge, in which > * case we would read stage #2 (ours). > */ > > # And here, and this is important to notice, "ours" is sha1 ad55e2, > # which corresponds to "first line\r\nsame line\r\n" Where did 99b633 come from then? There still is something missing in this description. Puzzled... -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html