Description
There are 3 different standards for newline characters. The these are:
- Line Feed (\n) - which is the standard for unix-like systems
- Carrier Return followed by a Line Feed \r\n - which is the standard for windows systems
- Carrier Return \r - which is the standard for Mac OS 9 and earlier (which is not supported for mercurial, git or fe/cru)
BufferedReader counts \n, \r and \r\n all as newline characters. GIT and Mercurial treat only \n and \r\n as newlines. Any output from GIT or Mercurial which we parse should use the GIT and mercurial standard, not the JDK implementation. Otherwise we can potentially cause errors within indexing
An example of a repository with such problem is here:
http://bitbucket.org/despiegk/pylabs-core
executing:
hg --config extensions.felog=/path/to/hgfelog.py --config ui.verbose=false felog 4fd1d042ab2b155c8aee58bc3ed919fb4c7928cd -p -m
Ideally, mercurial should fix its binary file detection. We can potentially provide a fix within the hgfelog.py mercurial extension and do detection via file extensions. Another option is to modify the implementation of BufferedReader.readLine() via a subclass or by using BufferedReader.read instead.