git-p4: fix multi-path changelist empty commits
commit9943e5b9799336460ecbbeb86e544cc4a1ad1254
authorGeorge Vanburgh <gvanburgh@bloomberg.net>
Sat, 17 Dec 2016 22:11:23 +0000 (17 22:11 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 19 Dec 2016 18:04:21 +0000 (19 10:04 -0800)
tree1c63cead3d3379f57f6a6a6fcb83f712bcb5c88a
parent0202c411edc25940cc381bf317badcdf67670be4
git-p4: fix multi-path changelist empty commits

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 1f90a64891 ("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: James Farwell <jfarwell@vmware.com>
Signed-off-by: George Vanburgh <gvanburgh@bloomberg.net>
Reviewed-by: Luke Diamand <luke@diamand.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-p4.py
t/t9800-git-p4-basic.sh