tags:

views:

42

answers:

1

I'm using cygwin-git locally inside a CVS repository on Windows at my workplace, in order to at least get some advantages of a dvcs. My problem is that git diff shows almost the whole file in the diff. It is usually something like this:

++ source code line...

-- source code line...

(extra plus and minus signs because SO was converting a single plus /minus sign to bullet point)

If I do a 'git diff --ignore-all-space', I can see the relevant changed code, but the commit is unnecessarily large since it contains all the changes.

The whole idea behind using a git repo inside CVS was that it would be easier to do the prototype work which I could then selectively merge into CVS. But selective merging is impossible if every second line shows up in the diff. Please help!

P.S I've read some of the other whitespace threads on SO, and I have core.whitespace set to -trailing-space and core.autocrlf set to true. However, the settings don't seem to make any difference.


To elaborate further on the problem, how is that that 'git diff --ignore-all-space' can ignore the problem? What setting can I do so that git commit can do the same thing? Help would be greatly appreciated!

A: 

fixed it. The problem was that CVS and git used different eol normalization. Due to this, the git-diff was showing so many changes. The fix was to have a .gitattributes file in the root dir with an entry as follows:

* text=auto

From the git-attributes page:

If you want to interoperate with a source code management system that enforces end-of-line normalization, or you simply want all text files in your repository to be normalized, you should instead set the text attribute to "auto" for all files.

vedang