diff -r 1aaa49039a6b -r ccbcc4d76f81 mercurial/revlog.py --- a/mercurial/revlog.py Fri Jun 03 12:40:32 2005 -0800 +++ b/mercurial/revlog.py Fri Jun 03 12:43:16 2005 -0800 @@ -433,7 +433,7 @@ yield struct.pack(">l", 0) - def addgroup(self, revs, linkmapper, transaction): + def addgroup(self, revs, linkmapper, transaction, unique = 0): # given a set of deltas, add them to the revision log. the # first delta is against its parent, which should be in our # log, the rest are against the previous delta. @@ -463,7 +463,10 @@ node, p1, p2, cs = struct.unpack("20s20s20s20s", chunk[:80]) link = linkmapper(cs) if node in self.nodemap: - raise "already have %s" % hex(node[:4]) + # this can happen if two branches make the same change + if unique: + raise "already have %s" % hex(node[:4]) + continue delta = chunk[80:] if not chain: