Subject: Re: updating only changed files source directory?

From: Jakub Narebski <[email-masked]>
Date: Tue, 24 Oct 2006 12:13:38 +0200

Han-Wen Nienhuys wrote:
> Jakub Narebski escreveu:
>> Han-Wen Nienhuys wrote:
>> 
>> I see that you are using fairly low level commands (plumbing commands)
>>  
>>>    git-http-fetch -a <branch>  <url>
>>>    wget <url>/refs/head/<branch>    ## dump to <myrepo>/refs/head/<branch>
>> 
>> instead of setting $GIT_DIR/remotes/origin file and using "git fetch".
>> BTW. "git fetch" will not update branch you are on, unless --update-head-ok
>> option is used.
> 
> I tried fetch, but was put off by the warnings because I didn't have 
> --update-head-ok. Using lowlevel commands is my way of making sure that 
> Git doesn't assume it needs to do anything intelligent.

You can either have additional branch which is not tracking branch
(you don't fetch into this branch), and on which you are always on,
called for example 'check-out' (and which can be used for git-reset
solution to checking out files to external directory), and use
git-fetch without --update-head-ok, or (if the repository is bare
repository, without working area) use --update-head-ok.
 
>>>    git --git-dir <myrepo> read-tree <committish>
>>>
>>>    cd <srcdir>
>>>    git --git-dir <myrepo> checkout-index -a -f
>> 
>> instead of 
>>      git --git-dir=<myrepo> checkout <branch>
>> (-f is Force a re-read of everything)

git-checkout-index(1):

       -f|--force
              forces overwrite of existing files

So probably you would get what you want if you lose '-f'.

> Yes, however,
> 
>    git checkout
> 
> changes the state of the repository, which is something I want to prevent.

Well, git-reset also changes state of repository, but it changes only
the branch we have created exactly for this purpose.
-- 
Jakub Narebski
Poland