Subject: Re: git refuses to switch to older branches

From: Jakub Narebski <[email-masked]>
Date: Sun, 20 Aug 2006 00:48:56 +0200

Junio C Hamano wrote:

> Jakub Narebski <[email-masked]> writes:
> 
>> Martin Waitz wrote:
>>
>>> now that gitweb.cgi is autogenerated, git refuses to switch to old
>>> branches unless force is applied:
>>> 
>>>       fatal: Untracked working tree file 'gitweb/gitweb.cgi' would
>>>       be overwritten by merge.
>>> 
>>> This safety measure is quite useful normally, but for files that are
>>> explicitly marked as to-be-ignored it should not be neccessary.
>>> 
>>> But all the code that handles .gitignore is only used by ls-files now.
>>> Does it make sense to add exclude handling to unpack-trees.c, too?
>>
>> I think it is "better to be annoying but safe" idea of git. You can always
>> do "git checkout <branch> gitweb/gitweb.cgi" and "git checkout <branch>",
>> and not use -f.
> 
> I think you are talking backwards.  Newer branch have .cgi
> generated and older branch has it tracked.  After you have built
> in a newer branch, checking out an older branch without -f
> option would play it safe not to clobber .cgi which is
> annoying.  So workaround you would want to suggest is TO USE -f.

If I remember correctly that is what I did when "master" (and I had switch
to master to do "git pull origin") didn't contain gitweb.cgi -> gitweb.perl
rename. My proposed solution first overwrites generated gitweb.cgi by
tracked file (i'm not sure if this is feature or bug that git-checkout
with file specified (path limit specified?) doesn't need -f, and then
you can do git-checkout full branch without -f.

-- 
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git