探索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 ...
随机推荐
- clipboard.js复制文字
A-固定内容: <script type="text/javascript" src="script/clipboard.min.js"></ ...
- [poj1269]Intersecting Lines
题目大意:求两条直线的交点坐标. 解题关键:叉积的运用. 证明: 直线的一般方程为$F(x) = ax + by + c = 0$.既然我们已经知道直线的两个点,假设为$(x_0,y_0), (x_1 ...
- HAproxy-1.6.X 安装部署
1. 源码包下载及安装 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 root@iZ23tsilmb7Z:/usr/local ...
- Java label
标号label提供了一种简单的break语句所不能实现的控制循环的方法.当你嵌套在几层循环中想退出循环时,break只能退出一重循环,可以用标号标出想退出哪一个语句. 标号的命名不能以"_& ...
- Dungeon Game (GRAPH - DP)
QUESTION The demons had captured the princess (P) and imprisoned her in the bottom-right corner of a ...
- js简单校验form表单
/** * 数据简单校验 */ function checkData (formId) { var check = true; var emailReg = new RegExp("^[a- ...
- Python调shell
os.system(cmd) 函数返回cmd的结束状态码,阻塞调用. os.popen(cmd) 函数返回cmd的标准输出,阻塞调用. (status, output) = commands.gets ...
- EXP-00056:遇到oracle错误12154
执行命令如下: 引用 exp user/pwd@dbname file=d:text.dmp owner=(user) 碰到了错误: 引用 EXP-00056:遇到oracle错误12154 ORA- ...
- 04 存储库之mongodb
MongoDB 一 简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库1.易用性 MongoDB是一个面向文档(document-oriented)的数据库,而不是关系型数据库.不采用 ...
- Laravel - Opening Multiple Projects
On this page: Basics Opening multiple projects Deleting a project from view Important notes Basics P ...