Management of dot filess

I wanna make my machines same state about dotfiles like .zshrc or .emacs .
To realize my object , I'm using Subversion.

But this method has a big problem that subversion make my machines same state though they has different environments.
For example, there is a difference on version of Emacs or PATH environment variable on For this problem, I split dot files to files named .zshrc.main and .zshrc.desktop at el.

This is not so bad solution. But there is a problem yet.

If I add new Emacs macro to .emacs.desktop on my desktop machine, as a matter of course , my raptop machine isn't applied the macro.

Here, you may think that I should add new macro to .emacs.main file.
But I think your idea is wrong. Because new macro may not be able to run on whole my machines. So I can't write new macro to .emacs.main which effect on whole my machines.

As a result, I should copy the statement for new macro to .emacs.raptop by my hand.

Woom. Does anyone have nice solution ? :-(