From: Ashish Negi <ashishnegi33@gmail.com>
To: "Torsten Bögershausen" <tboegi@web.de>
Cc: git@vger.kernel.org
Subject: Re: Changing encoding of a file : What should happen to CRLF in file ?
Date: Wed, 15 Nov 2017 13:41:42 +0530 [thread overview]
Message-ID: <CAJ_+vJ6SxLOmZfG79Sa-vskBR-XG=C97--PB-vpijjUKym=jYw@mail.gmail.com> (raw)
In-Reply-To: <f9dc6482-587d-50a9-d649-aed63be18fad@web.de>
[-- Attachment #1: Type: text/plain, Size: 2145 bytes --]
> If you commit the file, it will be stored with LF in the index,
This is what i believe is not happening.
Lets do this with a public repository and steps which are reproducible.
I have created a repo : https://github.com/ashishnegi/git_encoding
If you clone this repo in linux and run `git status`, you will find
that file is modified.
About repo :
Repo have 2 commits, done on windows machine.
First one check in a utf-16le encoded file which has crlf. crlf will
not be converted to lf in index as git treats it as binary file.
2nd commit changes encoding to utf-8 and commits.
This commit does not change crlf to lf in index, even though new
format is utf-8 which is text based for git. This is the crux of
problem.
I have attached all commands i ran on windows while creating the repo.
I tried to capture all information that i could give.
Please have a look. It might be useful.
Finally, thank you Torsten for giving your time to the problem. Really
appreciate it.
On Tue, Nov 14, 2017 at 10:39 PM, Torsten Bögershausen <tboegi@web.de> wrote:
> (Back to the beginning)
>
> You have a file ApplicationManifest.xml
> It is encoded in UTF-16 (and has CRLF)
>
> You convert it into UTF-8
> The file has still CRLF (in the worktree)
>
> Now you add it and make a commit.
> Under both Linux and Windows you have "text=auto".
>
> I assume that you have efficiently core.eol=lf under Linux
> and core.eol=crlf on Windows.
>
> (That is the default, when you don't change anything)
>
> Now, what happens to the CRLF?
> If you commit the file, it will be stored with LF in the index,
> on both systems.
> On checkout, Windows will convert them into CRLF, but Linux will not.
>
> That why you see
>>On linux, during committing i get warning : warning: CRLF will be
>>replaced by LF in …file_name..
>
> All in all there is nothing wrong, at least as I see it.
>
> The question remains:
> Do you need CRLF in Linux ?
> Probably not, but if yes, plase add a line
>
> *.xml text eol=crlf
>
> to your
> .gitattributes
>
> Otherwise your .gitconfig looks good to me.
>
>
>
>
>
>
[-- Attachment #2: all_git_commands_output.txt --]
[-- Type: text/plain, Size: 2916 bytes --]
git_encoding_repo>git config --global core.safecrlf
true
git_encoding_repo>git config core.autocrlf
false
git_encoding_repo>git config --get core.autocrlf
false
git_encoding_repo>cat .gitattributes
# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto
*.vcxproj eol=crlf
*.sh eol=lf
# Denote all files that are truly binary and should not be modified.
*.exe binary
*.dll binary
*.pdb binary
*.ico binary
*.png binary
*.jpg binary
git_encoding_repo>git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitattributes
file_name.txt
nothing added to commit but untracked files present (use "git add" to track)
git_encoding_repo>git ls-files --eol file_name.txt
git_encoding_repo>git add .
git_encoding_repo>git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: .gitattributes
new file: file_name.txt
git_encoding_repo>git ls-files --eol file_name.txt
i/-text w/-text attr/text=auto file_name.txt
git_encoding_repo>git commit -m "Commit utf-16le encoded file which has crlf."
[master (root-commit) 91fe3bd] Commit utf-16le encoded file which has crlf.
2 files changed, 13 insertions(+)
create mode 100644 .gitattributes
create mode 100644 file_name.txt
## At this time, i changed file encoding to utf-8.
git_encoding_repo>git status
On branch master
nothing to commit, working tree clean
git_encoding_repo>git add -p
Only binary files changed.
git_encoding_repo>git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: file_name.txt
no changes added to commit (use "git add" and/or "git commit -a")
git_encoding_repo>git add file_name.txt
git_encoding_repo>git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: file_name.txt
git_encoding_repo>git commit -m "Change encoding of file to utf-8"
[master 179c27b] Change encoding of file to utf-8
1 file changed, 0 insertions(+), 0 deletions(-)
rewrite file_name.txt (100%)
git_encoding_repo>git remote add origin https://github.com/ashishnegi/git_encoding.git
git_encoding_repo>git push -u origin master
Counting objects: 7, done.
Delta compression using up to 12 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 837 bytes | 837.00 KiB/s, done.
Total 7 (delta 0), reused 0 (delta 0)
To https://github.com/ashishnegi/git_encoding.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
git_encoding_repo>git ls-files --eol file_name.txt
i/crlf w/crlf attr/text=auto file_name.txt
git_encoding_repo>
next prev parent reply other threads:[~2017-11-15 8:11 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-14 12:31 Changing encoding of a file : What should happen to CRLF in file ? Ashish Negi
2017-11-14 15:20 ` Torsten Bögershausen
2017-11-14 16:13 ` Ashish Negi
2017-11-14 16:15 ` Ashish Negi
2017-11-14 17:09 ` Torsten Bögershausen
2017-11-15 8:11 ` Ashish Negi [this message]
2017-11-15 17:12 ` Torsten Bögershausen
2017-11-15 19:05 ` Ashish Negi
2017-11-16 16:15 ` Torsten Bögershausen
2017-11-23 16:31 ` Ashish Negi
2017-11-23 20:25 ` Torsten Bögershausen
2017-11-24 6:37 ` Ashish Negi
2017-11-14 16:45 ` Torsten Bögershausen
2017-11-24 16:14 ` [PATCH 1/1] convert: tighten the safe autocrlf handling tboegi
2017-11-24 17:24 ` Eric Sunshine
2017-11-24 18:59 ` Torsten Bögershausen
2017-11-25 3:16 ` Junio C Hamano
2017-11-26 12:20 ` [PATCH v2 " tboegi
2017-12-08 17:46 ` [PATCH v1 1/2] t0027: Don't use git commit <empty-pathspec> tboegi
2017-12-08 18:13 ` Junio C Hamano
2017-12-08 18:21 ` Junio C Hamano
2017-12-08 18:50 ` Torsten Bögershausen
2017-12-08 17:46 ` [PATCH v1 2/2] t0027: Adapt the new MIX tests to Windows tboegi
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='CAJ_+vJ6SxLOmZfG79Sa-vskBR-XG=C97--PB-vpijjUKym=jYw@mail.gmail.com' \
--to=ashishnegi33@gmail.com \
--cc=git@vger.kernel.org \
--cc=tboegi@web.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.