Faits :
A.
Par jugement du 2 mai 2013, le Tribunal de police genevois a notamment reconnu X._ coupable d'agression et l'a condamné à une peine privative de liberté de 24 mois avec sursis pendant 3 ans ainsi qu'à payer, conjointement et solidairement avec trois coaccusés, 8'000 fr. à A._ à titre de réparation morale.
Les faits à l'origine de cette condamnation sont en substance les suivants.
Dans la nuit du 30 au 31 mars 2012, A._ se dirigeait avec des amis vers une discothèque à Genève. Au moment où une voiture passait très près d'eux, il a jeté sur la route un mégot de cigarette, qui a atterri sur le capot ou la vitre du véhicule. Celui-ci s'est arrêté un peu plus loin et ses cinq occupants sont sortis. A._ a alors été agressé, roué de coups de poing et pieds notamment au visage, ses agresseurs continuant à le frapper alors qu'il était tombé par terre et tentait de se relever. Il ressort d'un certificat médical que A._ a souffert d'un traumatisme crânien, de multiples fractures de la face, du plancher et du toit de l'orbite gauche, de la lame papyracée droite, des os propres du nez ainsi que des cellules ethmoïdales antérieures. Il a de plus été victime d'une fracture du septum nasal avec un pneumocrâne frontal et du vertex. Il a dû subir une ablation du cristallin de chaque oeil et devra encore se soumettre à au moins une intervention chirurgicale.
B.
Le 3 avril 2014, la Chambre pénale d'appel et de révision de la Cour de justice genevoise a notamment rejeté l'appel formé par X._ contre cette condamnation.
C.
X._ forme un recours en matière pénale contre cet arrêt. Il conclut, avec suite de frais et dépens, principalement à l'annulation de l'arrêt attaqué et à son acquittement. Subsidiairement, il conclut à l'annulation de l'arrêt attaqué et au renvoi de la cause à l'autorité cantonale pour qu'elle prononce son acquittement. Il sollicite en outre l'assistance judiciaire.
D.
Invités à présenter des observations, l'intimé et le Ministère public ont conclu au rejet du recours. La cour cantonale a déclaré n'avoir pas d'observations à formuler.

Considérant en droit :
1.
Le recourant reproche à l'autorité cantonale d'avoir constaté de manière arbitraire les faits à l'origine de sa condamnation tant en ce qui concerne le nombre des personnes ayant frappé la victime que s'agissant de l'identité de celles-ci.
La notion d'arbitraire a été rappelée récemment dans l'<ref-ruling> consid. 6.1 p. 379, auquel on peut se référer. En bref, une décision n'est pas arbitraire du seul fait qu'elle apparaît discutable ou même critiquable; il faut qu'elle soit manifestement insoutenable, et cela non seulement dans sa motivation mais aussi dans son résultat.
Lorsque l'autorité cantonale a forgé sa conviction quant aux faits sur la base d'un ensemble d'éléments ou d'indices convergents, il ne suffit pas que l'un ou l'autre de ceux-ci ou même chacun d'eux pris isolément soit à lui seul insuffisant. L'appréciation des preuves doit être examinée dans son ensemble. Il n'y a ainsi pas d'arbitraire si l'état de fait retenu pouvait être déduit de manière soutenable du rapprochement de divers éléments ou indices. De même, il n'y a pas d'arbitraire du seul fait qu'un ou plusieurs arguments corroboratifs sont fragiles, si la solution retenue peut être justifiée de façon soutenable par un ou plusieurs arguments de nature à emporter la conviction (arrêt 6B_118/2009 du 20 décembre 2011 consid. 7.2.2 non publié à l'<ref-ruling> et les références citées).
La recevabilité du grief d'arbitraire, ainsi que de tous ceux déduits du droit constitutionnel et conventionnel, suppose l'articulation de critiques circonstanciées (<ref-ruling> consid. 3, p. 105), claires et précises, répondant aux exigences de motivation accrues déduites de l'<ref-law> (<ref-ruling> consid. 1.4 p. 287). Les critiques de nature appellatoire sont, en particulier, irrecevables (cf. <ref-ruling> consid. 5.1 p. 356).
Le recourant soutient que sur la base des trois témoignages qu'elle a retenus, la cour cantonale ne pouvait pas sans arbitraire admettre que la victime a été frappée par plus de trois personnes ni qu'il faisait partie des personnes qui l'ont agressée.
Le recourant a été reconnu coupable d'agression au sens de l'<ref-law>. Conformément à cette disposition, se rend coupable de ladite infraction celui qui participe à une agression dirigée contre une ou plusieurs personnes au cours de laquelle l'une d'entre elles ou un tiers a trouvé la mort ou subi une lésion corporelle. Pour que les éléments constitutifs de l'agression, qui est une infraction de mise en danger, soient réunis, il faut qu'une ou plusieurs des personnes agressées soient blessées ou tuées. Par ailleurs, l'auteur se rend passible d'une peine du seul fait de sa participation à l'agression (<ref-ruling> consid. 2.1.1 p. 153 s.).
Le recourant reproche uniquement à la cour cantonale d'avoir considéré qu'il avait participé à l'agression en frappant la victime. Il ne remet pas en question, au moyen d'une argumentation satisfaisant aux exigences de l'<ref-law>, le fait qu'il s'est trouvé, de manière intentionnelle, dans le groupe des agresseurs. Il ne conteste pas non plus que la victime a subi des lésions corporelles à la suite de l'agression commise par le groupe auquel il appartenait. Cela suffit pour que soient réalisés les éléments constitutifs de l'agression au sens de l'<ref-law>. Peu importe que le recourant ait ou non lui-même frappé la victime. Dès lors les points invoqués par le recourant ne sont pas propres à faire apparaître la décision attaquée comme arbitraire dans son résultat. Mal fondé, ce grief doit être rejeté.
2.
Les autres griefs, tirés de la violation de la présomption d'innocence ainsi que du droit d'être entendu, se recoupent avec celui d'arbitraire et n'ont pas de portée propre.
3.
Le recours doit être rejeté. Comme les conclusions étaient vouées à l'échec, l'assistance judiciaire ne peut être accordée (<ref-law>). Le recourant, qui succombe, supportera les frais de justice (<ref-law>), dont le montant sera toutefois fixé en tenant compte de sa situation financière. L'intimé, qui obtient gain de cause, a droit à une indemnité de dépens à la charge du recourant.

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté.
2.
La demande d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 800 fr., sont mis à la charge du recourant.
4.
Une indemnité de 2'000 fr., à verser à l'intimé à titre de dépens, est mise à la charge du recourant.
5.
Le présent arrêt est communiqué aux parties et à la Chambre pénale d'appel et de révision de la Cour de justice de la République et canton de Genève.
Lausanne, le 29 janvier 2015
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
La Greffière : Paquier-Boinay