Subject: Re: Howto request: going home in the middle of something?

From: Andy Parkins <[email-masked]>
Date: Thu, 18 Oct 2007 12:29:03 +0100

On Thursday 2007 October 18, Jan Wielemaker wrote:

> I've somewhere seen it in a mail, but I can't find it anymore. I have a
> bare central (public) repository and clones on various machines I work
> on. We all know it, you're right in the middle of something and it is
> really time to go home. You want to pick up your work at home, but
> without pushing to the shared repository.
>
> I'm sure GIT can do this elegantly, but I'm not yet sure how.  I guess
> Ideally I want "git stash" at work, transfer the stashed changes to my
> other machine and apply them.  How do I do that?
>
> Alternatively, I guess, one can commit at machine A, fetch the commit
> from machine A and continue. I'm still too uncertain about the remote
> access options to work this out properly, but it also feels less
> clean.
>
> How do you deal with this?

I have two remotes (typically) in my .git/config.  One for the real central 
repository and one for the alternate computer.  The two locations (say home 
and work) list the other as a remote.

So; before I go home I do this:

 git commit -b temp -a -m "Hold for transport home"

Then when I get home I do this:

 git fetch work
 git merge work/temp
 git reset HEAD^
 # code code code
 git commit -b temp -a -m "Hold for transport to work"

When I'm finished at home and want to carry on at work:

 git fetch --force home
 git merge home/temp
 git reset HEAD^
 # start coding for the day

Obviously if you do this repeatedly you'd need to tidy up the left over temp 
branches, or ensure that your remote configurations list "+" in the fetch 
lines.  You can also use pushes instead of fetches if you're that way 
inclined, or you have a connection problem in one direction because of a 
firewall.

It's slightly inelegant but it does ensure that nothing is ever accidentally 
lost by overwriting new with newer, which happened a few times in the days 
when I used rsync for copying the working directory between computers.

Andy
-- 
Dr Andy Parkins, M Eng (hons), MIET
[email-masked]