0

Q1 : TFS 能保证它的存储吗?

例如,如果我提交一个包含内容的文件

printfn "%s" "fizz buzz"

我能取回一个包含内容的文件吗

printfn "%s" "fizz buzz"

还是我会取回包含内容的文件

printfn "%s" "fizz bUzz"

错误或识别签出内容的方式不正确。

Git 使用 SHA-1 来做这种事情。

Q2:当 .git 存储中的文件内容损坏并且它的 sha 指针现在“不正确”时,git checkout 会发生什么?我从未尝试过,但是当 git repo 磁盘上的位损坏时,git 命令行会发生什么?

Q3 : 同样,当 TFS 数据库中的文件内容损坏时,TFS 检出会发生什么情况?

4

1 回答 1

2

TFS 使用 MD5 作为其校验和。当您将文件作为变更集或搁置集的一部分上传时,您还会发送您计算的 MD5。服务器还将计算您上传内容的 MD5,以验证网络上没有损坏。同样,当您从服务器执行 Get 时,它将交付内容的 MD5,客户端将验证校验和是否匹配。

至于你关于腐败的问题,我只能假设性地说话,而且只能从 TFS 工作过。显然,如果您的数据库损坏,所有赌注都将失败,我们不保证任何事情。

当您说“TFS 签出”时(在上面讨论过“git 签出”之后),我假设您的意思是“TFS 工作文件夹映射”。唯一的问题应该是当您尝试获取损坏的文件时。例如,如果您$/Foo.cs在变更集 42 处有一个损坏,并且您对变更集 42 进行了获取,那么它将失败。您的本地版本不会在磁盘上或服务器上更新,并且您不会在本地使用版本 42。

但是,如果版本 43 存在 a$/Foo.cs并且它没有损坏,那么您应该能够毫无问题地获得变更集 43。服务器不会检查以前的版本。

如果您$/Foo.cs在数据库损坏之前获得了变更集 42,您应该能够签出文件(在 TFS 术语中的“签出”,意思是挂起编辑),进行更改,然后签入文件,但是有当然不能保证这一点。您需要进行更改,因为如果客户端尝试生成包含具有当前搁置集的 MD5 的文件的更改集或搁置集,服务器将指示客户端不要打扰发送更改。

同样,这都是相当假设的。我们没有详尽地测试数据损坏场景。实际上,如果您的数据库已损坏,则所有赌注都已关闭,您应该从备份中恢复。

于 2014-08-19T22:37:25.150 回答