4.3 Ejercicio 3

Ejercicio 3

Del repo de git, hacer checkout de la revisión fe870600fe y mezclar 1bdca81641 1. Resuelvan ambos conflictos (hay 2 archivos con conflctos, un conflicto en cada archivo).

Conflicto en path.c

Listing 4.5:Ejercicio 3 - conflicto en path.c
852        if (is_git_directory(".")) { 
853<<<<<<< HEAD 
854                set_git_dir(".", 0); 
855                check_repository_format(); 
856||||||| 51ebf55b93 
857                set_git_dir("."); 
858                check_repository_format(); 
859======= 
860                set_git_dir("."); 
861                check_repository_format(NULL); 
862>>>>>>> 1bdca81641 
863                return path; 
864        }

Creo que noes muy difícil entender lo que sucedió en cada rama. En HEAD la llamada a set_git_dir() toma un segundo parámetro en la línea 854. En la otra rama, la llamada a check_repository_format() tiene un nuevo parámetro NULL en la línea 861. Esto apunta a tener esto como resolución del conflicto:

Listing 4.6:Ejercicio 3 - resolución del conflicto en path.c
852        if (is_git_directory(".")) { 
853                set_git_dir(".", 0); 
854                check_repository_format(NULL); 
855                return path; 
856        }

Conflicto en builtin/pack-objects.c

Listing 4.7:Ejercicio 3 - conflicto en builtin/pack-objects.c
880        len = encode_in_pack_object_header(header, sizeof(header), 
881                                           OBJ_REF_DELTA, size); 
882        hashwrite(out, header, len); 
883<<<<<<< HEAD 
884        hashwrite(out, base_oid.hash, 20); 
885||||||| 51ebf55b93 
886        hashwrite(out, base_sha1, 20); 
887======= 
888        hashwrite(out, base_sha1, the_hash_algo->rawsz); 
889>>>>>>> 1bdca81641 
890        copy_pack_data(out, reuse_packfile, w_curs, cur, next - cur); 
891        return;

En este caso, en HEAD el segundo parámetro a la llamada a hashwrite() fue cambiado de base_sha1 en la línea 886 a base_oid.hash en la línea 884. En la otra rama, el tercer parámetro a la misma llamada cambió de 20 en la línea 886 a the_hash_algo->rawsz en la línea 888. Esto apunta a esto como resolución:

Listing 4.8:Ejercicio 3 - resolución del conflicto en builtin/pack-objects.c
880        len = encode_in_pack_object_header(header, sizeof(header), 
881                                           OBJ_REF_DELTA, size); 
882        hashwrite(out, header, len); 
883        hashwrite(out, base_oid.hash, the_hash_algo->rawsz); 
884        copy_pack_data(out, reuse_packfile, w_curs, cur, next - cur); 
885        return;

Si comparan con la revisión f8cb64e3d4, ne deberían obtener diferencias significativas.

Como ejercicio adicional, imaginen lo que tendrían que hacer para resolver esos conflictos si no usaran diff3.