git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Marc Strapetz <marc.strapetz@syntevo.com>
To: Michael J Gruber <git@drmicha.warpmail.net>
Cc: git@vger.kernel.org
Subject: Re: Applying .gitattributes text/eol changes
Date: Thu, 13 Jan 2011 15:28:03 +0100	[thread overview]
Message-ID: <4D2F0BF3.2000808@syntevo.com> (raw)
In-Reply-To: <4D2EFCBD.4020402@drmicha.warpmail.net>

>> case of missing .git/index, Git freshly writes all working tree files,
>> ignoring already existing files which already have the correct content.
>> Maybe this behavior is by intention and makes sense in some cases. In my
>> case it has adverse effects on IDEs and probably other tools which are
>> monitoring the file system.
> 
> ...but changing gitattributes is something you don't do routinely in
> your workflow; so, at worst there would be an occasional unnecessary run
> of your build process.

Our Git-SVN bridge does it, potentially on every pull. This is why we
currently need to run "rm .git/index && git reset --hard" after every
pull, resp. every checkout (switching to another commit may result in
changed .gitattributes as well).

If a "git checkout" would (optionally) make sure that all EOLs are
properly set according to .gitattributes, the problem would be resolved.
As this might be not so easy to implement, my suggestion was to make
"git reset --hard" work more unobtrusive. I think we can provide a
corresponding patch, if it has chances to get accepted.

--
Best regards,
Marc Strapetz
=============
syntevo GmbH
http://www.syntevo.com
http://blog.syntevo.com



On 13.01.2011 14:23, Michael J Gruber wrote:
> Marc Strapetz venit, vidit, dixit 11.01.2011 15:02:
>> On 11.01.2011 13:11, Michael J Gruber wrote:
>>> Marc Strapetz venit, vidit, dixit 03.01.2011 18:18:
>>>> I'm looking for an unobtrusive way to apply (committed) changes for
>>>> text/eol attributes to the working tree. For instance, after having
>>>> changed "*.txt eol=crlf" to "*.txt eol=lf", all *.txt files should be
>>>> converted from CRLF to LF endings. The only advice I found so far is to
>>>> remove .git/index and do a reset --hard. The disadvantage of this
>>>> approach is that every file will be touched:
>>>>
>>>> - although the content does not change, timestamps will be changed. This
>>>
>>> The bytewise content does change.
>>
>> The content has only changed for *.txt files, but the timestamps of
>> *all* files are updated. I guess (but didn't verify from code), that in
> 
> Well, sure...
> 
>> case of missing .git/index, Git freshly writes all working tree files,
>> ignoring already existing files which already have the correct content.
>> Maybe this behavior is by intention and makes sense in some cases. In my
>> case it has adverse effects on IDEs and probably other tools which are
>> monitoring the file system.
> 
> ...but changing gitattributes is something you don't do routinely in
> your workflow; so, at worst there would be an occasional unnecessary run
> of your build process.
> 
>>
>>>> One solution I could think of which might be helpful in other situations
>>>> as well would be to have an "--unobtrusive" option for reset which would
>>>> only replace a file if the content has actually been changed.
>>>
>>> How about
>>>
>>> git ls-files \*.txt | xargs touch -a
>>> git ls-files \*.txt | git checkout
>>
>> That won't be helpful as it requires me to know what has changed.
> 
> But you do know that only (at most) *.txt have changed!
> 
> Michael
> 
> 

  reply	other threads:[~2011-01-13 14:28 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-03 17:18 Applying .gitattributes text/eol changes Marc Strapetz
2011-01-11  9:29 ` Marc Strapetz
2011-01-11 12:11 ` Michael J Gruber
2011-01-11 14:02   ` Marc Strapetz
2011-01-13 13:23     ` Michael J Gruber
2011-01-13 14:28       ` Marc Strapetz [this message]
2011-01-13 14:37         ` Michael J Gruber
2011-01-13 14:57           ` Marc Strapetz
2011-01-13 23:30             ` Junio C Hamano
2011-01-14  8:31               ` Michael J Gruber
2011-01-14  9:05               ` Marc Strapetz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D2F0BF3.2000808@syntevo.com \
    --to=marc.strapetz@syntevo.com \
    --cc=git@drmicha.warpmail.net \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).