探索TFS Git 库文件换行(CRLF)的处理方式
(2018.12.29 更新,增加Git处理方式)
在计算机的技术中,所有文本信息都会涉及换行的问题。例如,你在键盘上敲击一次Enter(回车)键,系统将在文本重增加一行,实际上系统已经在文件中插入了一个不可见的换行标记。
换行,在许多地方也称为行尾(line ending),或者EOL(end of line)。换行是一个特殊的字符,在文本中用于表示一行文字信息的结束,或者新一行文字信息的开始。由于在不同的平台或操作系统中,系统处理换行的方式不一样,如果开发人员忽略换行问题,会导致源代码编译或者运行过程中出现异常的问题。
下面我们结合TFS系统的源代码管理功能,具体分析在代码管理过程中,如何处理文件换行的问题。
换行类型CRLF, CR, LF
最早在电传打印机上,工程师使用CR(Unicode字符为000D)和LF(Unicode字符为000A)标记打印换行。CR是单词Cartridge Return的缩写,我们经常称为回车;LF是单词Line Feed的简称,我们经常称为换行。这两个字符分别用来指挥打印机的针头移到下一行,同时将打印纸张先前推进一行。后来由于计算机技术的飞速发展,计算机与打印机高度集成,打印换行的概论也被计算机广泛引用。但是,不同的操作系统,对于换行的处理方式不一样。
- 微软 Windows:CRLF
微软基本原样照搬了早期打印机的机制,使用两个字符CR+LF来标记文件的换行。Windows,MS-DOS,PC-DOS等采用了CRLF的换行方式。
- Unix/Linux:LF
Unix操作系统觉得微软比较浪费,在自己的系统中,一个字符LF就可以达到目的,于是Linux上面就使用LF来标记换行。基于Linux的其他操作系统,基本都采用了LF的换行方式。
- 苹果 Mac
苹果的计算机的科学家由于更为复杂的原因,定义CR作为换行标记。
TFVC处理方式
在TFVC代码库中,无论从使用哪种客户端签入签出,TFS服务器都会原样保留文件的换行模式。
你可以在文本编辑工具中验证从TFS中下载的文件,如下图,我使用EditPlush验证一个sh脚本程序的换行格式:

Figure 1 - 在EditPlush中查询文件的换行格式
Git处理方式
Azure DevOps Server (TFS)中代码文件换行问题解决方案(Git)
探索TFS Git 库文件换行(CRLF)的处理方式的更多相关文章
- Git库文件的状态
git库所在的文件夹(即.git所在的文件夹)中的文件的状态: (1)untracked:未跟踪,此文件在文件夹中,但并没有加入git库,不参与版本控制. 通过”git add”,”git commi ...
- Eclipse·如何关联Git库文件和添加JUint库
Eclipse创建工程并关联到文件(SVN或Git管理的代码文件) 新建java工程,用于存放工程的一些信息,默认存放地址. 工程相关的信息是不需要提交到(SVN或Git)版本库的,所以工程存放到本地 ...
- spring cloud config git库文件搜索顺序
spring.cloud.config.server.git.uri只配置到仓库那一层就行了,需要访问仓库的子目录的话就配置spring.cloud.config.server.git.searchP ...
- Azure DevOps Server (TFS)中代码文件换行问题解决方案(Git)
之前写过一篇博客"探索TFS Git 库文件换行(CRLF)的处理方式",主要是针对TFVC代码库的. 下面这篇文章说明如何在TFS的Git库中处理代码换行的问题. 概述 在Azu ...
- linux库文件编写入门(笔记)
linux库文件的编写 作者: laomai地址: http://blog.csdn.net/laomai 本文主要参考了如下资料⑴hcj写的"Linux静态/动态链接库的创建和使用&quo ...
- 【Linux技术】linux库文件编写·入门
一.为什么要使用库文件 我们在实际编程中肯定会遇到这种情况:有几个项目里有一些函数模块的功能相同,实现代码也相同,也是我们所说的重复代码.比如,很多项目里都有一个用户验证的功能. 代码段如下: //U ...
- linux库文件的制作
一.为什么要使用库文件 我们在实际编程工作中肯定会遇到这种情况:有几个项目里有一些函数模块的功能相同, 实现代码也相同,也是我们所说的重复代码.比如,很多项目里都有一个用户验证的功能. 代码段如下: ...
- 如何在mac里面,把xcode代码同步到 tfs 的 git库(克隆git篇)
如果是新的git库,还没有任何内容可以克隆,可以参考:http://www.cnblogs.com/IWings/p/6755795.html 在mac安装visual studio code htt ...
- Git库搭建好之后,当要提交一个新的文件,需要做的是3个步骤
Git库搭建好之后,当要提交一个新的文件,需要做的是3个步骤 1.git add new.txt 2.git commit -m "add a new file" 3.git pu ...
随机推荐
- org.apache.catalina.core.StandardContext.listenerStart Error configuring application listener of class org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException
使用Intelij Idea时,报错如下: org.apache.catalina.core.StandardContext.listenerStart Error configuring appli ...
- JAVA序列化和反序列化 对象<=>IO流 对象<=>字节数组
http://developer.51cto.com/art/201202/317181.htm http://blog.csdn.net/earbao/article/details/4691440 ...
- 几种TCP连接终止
在三次连接完成后,accept调用前,客户机发来RST. Berkeley实现将完全在内核中处理,不通知. 而SVR4实现将返回一个错误EPROTO,而POSIX指出应该是ECONNABORTED,后 ...
- centos7 源码编译安装TensorFlow CPU 版本
一.前言 我们都知道,普通使用pip安装的TensorFlow是万金油版本,当你运行的时候,会提示你不是当前电脑中最优的版本,特别是CPU版本,没有使用指令集优化会让TensorFlow用起来更慢. ...
- linux系统命令笔记
一.linux系统目录 /bin 系统命令目录 /dev 设备目录 /home 每个系统用户在home下都有一个目录, 每个用户登录到系统后会自动登录到这个目录下, root用户会在/root文件夹下 ...
- ADF学习实用网站
ADF中所有组件工功能例子 http://jdevadf.oracle.com/adf-richclient-demo/faces/components/dialog.jspx;jsessionid= ...
- Codeforces 677C. Vanya and Label 位操作
C. Vanya and Label time limit per test:1 second memory limit per test:256 megabytes input:standard i ...
- jqueryAjax的使用
1. 导入等下我们要使用的文件AjaxMsgHelper.cs和DataHelper.cs他们的代码如下 using System;using System.Collections.Generic;u ...
- 详解Windows Service Wrapper(winsw.exe)及应用场景
winsw.exe可以帮助nginx作为windows服务自启动,不需要每次都输入命令,很方便,使用到目前为止这种做法的效果很完美.你得到了 Windows 服务的支持,而且在服务重启时没有遗留孤立的 ...
- RHEL6解决无法使用YUM源问题(转)
RHEL的YUM源需要注册用户才能更新使用,由于CentOS和RHEL基本没有区别,并且CentOS已经被REHL收购.所以将RHEL的YUM源替换为CentOS即可.问题如下:[root@bogon ...