From: Michael J Gruber Date: Tue, 11 Jan 2011 12:11:46 GMT Subject: Re: Applying .gitattributes text/eol changes Message-ID: <4D2C4902.4010705@drmicha.warpmail.net> In-Reply-To: <4D220500.2000104@syntevo.com> 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. > makes tools like IDEs assume that the file content has been changed. It may be that the content is semantically equivalent. > (Even if the timestamps would be properly reset, the replacement of the > files would have triggered system file change notifications and I'd > expect various tools to still reload these files) > > - there will be warnings for files which are locked by other processes > (at least on Windows). I'm usually seeing this for JAR files which are > not affected by eol-attribute changes at all. > > 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 ?