Skip to content
  • George Vanburgh's avatar
    git-p4: fix multi-path changelist empty commits · 9943e5b9
    George Vanburgh authored and Junio C Hamano's avatar Junio C Hamano committed
    When importing from multiple perforce paths - we may attempt to
    import a changelist that contains files from two (or more) of these
    depot paths. Currently, this results in multiple git commits - one
    containing the changes, and the other(s) as empty commit(s). This
    behavior was introduced in commit 1f90a648
    
     ("git-p4: reduce number
    of server queries for fetches", 2015-12-19).
    
    Reproduction Steps:
    
      1. Have a git repo cloned from a perforce repo using multiple
         depot paths (e.g. //depot/foo and //depot/bar).
    
      2. Submit a single change to the perforce repo that makes changes
         in both //depot/foo and //depot/bar.
    
      3. Run "git p4 sync" to sync the change from #2.
    
    Change is synced as multiple commits, one for each depot path that
    was affected.
    
    Using a set, instead of a list inside p4ChangesForPaths() ensures
    that each changelist is unique to the returned list, and therefore
    only a single commit is generated for each changelist.
    
    Reported-by: default avatarJames Farwell <jfarwell@vmware.com>
    Signed-off-by: default avatarGeorge Vanburgh <gvanburgh@bloomberg.net>
    Reviewed-by: default avatarLuke Diamand <luke@diamand.org>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    9943e5b9