From: Simon Hausmann Date: Mon, 23 Feb 2009 17:08:10 GMT Subject: Re: [PATCH v2] git-p4: avoid syncing duplicate changes Message-ID: <200902231808.11072.simon@lst.de> In-Reply-To: <20090218181214.GA21970@padd.com> On Wednesday 18 February 2009 Pete Wyckoff, wrote: > When a particular changeset affects multiple depot paths, it > will appear multiple times in the output of "p4 changes". > Filter out the duplicates to avoid the extra empty commits that > this otherwise would create. > > Signed-off-by: Pete Wyckoff Acked-by: Simon Hausmann Nice patch, thanks :) Simon > Switched to a dictionary to avoid the quadratic behavior, > as pointed out by Simon. > > contrib/fast-import/git-p4 | 11 ++++++----- > 1 files changed, 6 insertions(+), 5 deletions(-) > > diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4 > index a85a7b2..3832f60 100755 > --- a/contrib/fast-import/git-p4 > +++ b/contrib/fast-import/git-p4 > @@ -442,13 +442,14 @@ def p4ChangesForPaths(depotPaths, changeRange): > output = p4_read_pipe_lines("changes " + ' '.join (["%s...%s" % (p, changeRange) > for p in depotPaths])) > > - changes = [] > + changes = {} > for line in output: > - changeNum = line.split(" ")[1] > - changes.append(int(changeNum)) > + changeNum = int(line.split(" ")[1]) > + changes[changeNum] = True > > - changes.sort() > - return changes > + changelist = changes.keys() > + changelist.sort() > + return changelist > > class Command: > def __init__(self): > -- > 1.6.0.6 > >