Due to various network obstacles between my work and personal machines, I often find it necessary and convenient, when using git, to use skydrive, thumbdrives, or some other low-tech means to pass around patch files. Git has really nice integration with common unix mail utilities that make it really sweet to do this on unix.
But I am using windows.
I had to overcome a couple of annoying but obvious hurdles to get this to work. Here's my current process for cloning a project in an svn repo at work, then passing patches around:
1. clone the svn repo. Let's call this clone':
git svn clone -s http://svn-server/MyProject
Actually, I am lying. I use this command because our projects are not in the canonical git layout in our repository:
git svn clone http://svn-server/svn --trunk=trunk/MyProject --branches=branches/MyProject --tags=tags/MyProject
2. Make sure your repo has core.fileMode false (this takes care of many of the other problems I had with git too):
git repo-config core.fileMode false
3. For some reason my life is easier with core.autocrlf false. Or maybe that's why I always have to --whitespace nowarn when I apply patches. I don't know. This is just the way I am doing it and it works.
git config --global core.autocrlf false
4. Clone that repo to take home or wherever. Call this clone''. Remember that the real magic in cloning is that it creates tracking branches:
git clone --no-checkout C:\Projects\MyProject.git E:\ToTakeCome\MyProject.git
5. Say I am home on clone''. I branch, work, commit. Do the dance, now I want to takes these changes back to the mother ship. Machines aren't connected. Don't want to bring laptop to work:
git format-patch -M origin; cp *.patch E:\TakeToWork
6. At work, in clone':
git am -3 --whitespace nowarn E:\FromHome\*.patch
That's basically how I am doing it, after many blind alleys and false starts. My process is a work in progress, so I will update when it changes.