I am working on a project that is set up with each group having a server-side clone of our main mercurial repository. The workflow we have been using involves developing on laptops, committing and pushing to the server-side clone repositories and then pulling those changes to a powerful remote machine to run our tests. Once the changes are ready to be shared with the rest of the group, the main server-side clone is pulled and into the local repository and the local repository is rebased against the main clone. The changes can then be pushed to the main remote clone and the history will show a linear history.
The problem is then that the personal server-side clone is totally out of sync with the local repository because it was not rebased. We aren't using proper branches, so merge+rebase and transplant/graft seem to not be what we would use to get the repositories back in sync.
The server-side clone needs to have the same history as the the local repository or it will pull and push ALL of the change sets and be a time consuming mess of resolving non-existent conflicts. How would one get the server-side clone to have the same history as the main and local repositories without stripping and pulling from main? Ideally, we would not have to log into the server.