Skip to content
  • Junio C Hamano's avatar
    clone: clone from a repository with relative alternates · e6baf4a1
    Junio C Hamano authored
    
    
    Cloning from a local repository blindly copies or hardlinks all the files
    under objects/ hierarchy. This results in two issues:
    
     - If the repository cloned has an "objects/info/alternates" file, and the
       command line of clone specifies --reference, the ones specified on the
       command line get overwritten by the copy from the original repository.
    
     - An entry in a "objects/info/alternates" file can specify the object
       stores it borrows objects from as a path relative to the "objects/"
       directory. When cloning a repository with such an alternates file, if
       the new repository is not sitting next to the original repository, such
       relative paths needs to be adjusted so that they can be used in the new
       repository.
    
    This updates add_to_alternates_file() to take the path to the alternate
    object store, including the "/objects" part at the end (earlier, it was
    taking the path to $GIT_DIR and was adding "/objects" itself), as it is
    technically possible to specify in objects/info/alternates file the path
    of a directory whose name does not end with "/objects".
    
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    e6baf4a1