Q1:TFS是否会保护它的存储空间?
例如,如果我提交包含内容的文件
printfn "%s" "fizz buzz"
我会找回包含内容的文件
printfn "%s" "fizz buzz"
或者我会收到包含内容的文件
printfn "%s" "fizz bUzz"
错误或识别签出内容的方法不正确。
Git使用SHA-1来做这种事情。
Q2:当.git商店中的文件内容损坏时,git checkout会发生什么,现在它的sha指针不正确&#39 ;?我从来没有尝试过,但是当git repo磁盘上的位被损坏时,git命令行会发生什么?
第三季:同样,当TFS数据库中的文件内容被破坏时,TFS结账时会发生什么?答案 0 :(得分:2)
TFS使用MD5作为校验和。当您将文件作为更改集或搁置集的一部分上载时,还会发送您计算的MD5。服务器还将计算上载内容的MD5,以验证线路上没有损坏。同样,当您从服务器执行Get时,它将提供内容的MD5,客户端将验证校验和是否匹配。
至于你关于腐败的问题,我只能假设地说出来,而且只能在TFS上工作。显然,如果您的数据库已损坏,所有投注均已关闭,我们不保证任何事情。
当你说" TFS结账" (在讨论" git checkout"在它上面之后),我假设你的意思是" TFS工作文件夹映射"。唯一的问题应该是当你尝试获取损坏的文件时。例如,如果你在变更集42中有一个损坏的$/Foo.cs
并且你做了变更集42,那么它就会失败。您的本地版本不会在磁盘上或服务器上更新,也不会在本地版本42上。
但是,如果版本43中存在$/Foo.cs
并且不已损坏,那么您应该能够毫无问题地获得变更集43。服务器不会检查以前的版本。
如果在数据库损坏之前你在变更集42中得到$/Foo.cs
,你应该能够检出文件(在TFS术语中" checkout",意思是挂起编辑),进行更改,然后检查文件,但当然不能保证这一点。您需要进行更改,因为如果客户端尝试生成包含当前shelveset的MD5的文件的变更集或搁置集,则服务器将指示客户端不要发送更改。
同样,这都是相当假设的。我们没有详尽地测试数据损坏情况。实际上,如果您的数据库已损坏,所有投注都将关闭,您应该从备份中恢复。