• Show log

    Commit

  • Hash : 3793fa9b
    Author : Daniel Rodríguez Troitiño
    Date : 2013-10-31T01:08:50

    Fix saving remotes with several fetch/push ref specs.
    
    At some moment git_config_delete_entry lost the ability to delete one entry of
    a multivar configuration. The moment you had more than one fetch or push
    ref spec for a remote you will not be able to save that remote anymore. The
    changes in network::remote::remotes::save show that problem.
    
    I needed to create a new git_config_delete_multivar because I was not able to
    remove one or several entries of a multivar config with the current API.
    Several tries modifying how git_config_set_multivar(..., NULL) behaved were
    not successful.
    
    git_config_delete_multivar is very similar to git_config_set_multivar, and
    delegates into config_delete_multivar of config_file. This function search
    for the cvar_t that will be deleted, storing them in a temporal array, and
    rebuilding the linked list. After calling config_write to delete the entries,
    the cvar_t stored in the temporal array are freed.
    
    There is a little fix in config_write, it avoids an infinite loop when using
    a regular expression (case for the multivars). This error was found by the
    test network::remote::remotes::tagopt.