<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def push_doc_to_remote(self, remote_name, doc_id=None):
 """This will push the master branch to the remote named `remote_name` using the mirroring strategy to cut down on locking of the working repo. `doc_id` is used to determine which shard should be pushed. if `doc_id` is None, all shards are pushed. """

        if doc_id is None:
            ret = True
            # @TODO should spawn a thread of each shard...
            for shard in self._shards:
                if not shard.push_to_remote(remote_name):
                    ret = False
            return ret
        shard = self.get_shard(doc_id)
        return shard.push_to_remote(remote_name)