gitrepo: provide the original opargs to exchange.push when repo is not gitrepo
This is a re-roll of !223 (closed), with an added test. I wasn't able to reproduce the exact issue, as the topic
extension isn't currently available in the CI infrastructure, but I was able to reproduce a similar issue using the pushvars
functionality.
Closes !223 (closed)