Mirroring in Object Mode, taking rotation into account I have a turret, displayed below, which I would like to duplicate and mirror across the global Y axis.



I can do this in Edit Mode, using Shift D, Enter, Ctrl M, X, which shows what I'm looking for:



However, this object is using a mesh shared by several other objects. Mirroring the mesh affects the other objects, naturally. What I'd really like is to mirror the object across the y-axis. But the result is not what I would expect:



That was done with Alt D, Enter, Ctrl M, X. The new position of the duplicate is right, but the angle is not.

I feel like I've missed something obvious.

What is going on here?

(In both cases, the pivot point is the 3D cursor, which is set at the world origin.The transformation orientation is set to global.)

Edit (About context)

The turrets involved are on a larger craft that will be mirrored in it's entirety. I'd rather keep the turrets as separate objects than join them, since I may replace the mesh they use with another, or edit the existing mesh.

There is an easy workaround, and that is to adjust the angle of each mirrored item manually. But I'm still interested as to how to perform a mirror with both the origin and angle transformed globally, as opposed to the origin transformed globally and the angle transformed locally as seems to be the case above.
If you are doing this so that they could be animated I would add a Copy Rotation Constraint and then invert the Y axis.

Or if you are modelling, Create a new collection with the left side (M) and then place a Collection Instance (Shift-A) of that and mirror the Instance. The collection instance has it's origin in the centre but it can be moved in the Context menu for the object -> Collections.

If you later on want to commit this to be real object you, just Make Instances Real (search for it with F3). They will still be linked copies.