4.3    Ejercicio 3
   Ejercicio 3
Del repo de git, hacer checkout de la revisión fe870600fe y mezclar 1bdca81641
.
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.c852        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.c852        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.c880        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.c880        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.