Perforce 文件大小与光盘上的不同
Perforce file size different then what is on disc
我们看到一个奇怪的行为,一个用户将文件推送到 perforce。磁盘上的原始文件是 393846
字节,提交到 perforce 后的文件变成 393382
。那么丢失的464字节去哪儿了?
额外的细节:
- 各方Windows
- 资产类型:二进制(虚幻资产)
服务器上的文本文件被规范化为以 LF 结尾的行(也称为“unix 风格”)。在单个客户端上,文件以本机格式呈现,这意味着 Windows.
上的 CRLF 终止行
因此,如果一个 464 行的文件是从 Windows 客户端提交的,那么当它存储在服务器上时,它将减少 464 个字节,因为所有的 CR 字节都将被删除。当它同步回 Windows 客户端(任何 Windows 客户端)时,CR 将被放回。这是一个看起来如何的示例:
C:\Perforce\test\python>p4 fstat -Ol text.txt
... depotFile //collaborators/main/python/text.txt
... clientFile c:\Perforce\test\python\text.txt
... isMapped
... headAction edit
... headType text
... headTime 1595542603
... headRev 4
... headChange 181
... headModTime 1595542590
... haveRev 4
... fileSize 148
... digest A6A7BF7DF3274FAA12F6BC394DFC2C69
C:\Perforce\test\python>dir text.txt
Volume in drive C is OS
Volume Serial Number is AE05-0B05
Directory of C:\Perforce\test\python
07/23/2020 03:16 PM 157 text.txt
1 File(s) 157 bytes
0 Dir(s) 789,006,692,352 bytes free
C:\Perforce\test\python>wc -l text.txt
9 text.txt
请注意,fstat -Ol
返回的 fileSize
是 148,而 dir
返回的本地文件大小是 157 字节; 9 个字节的差异是因为 headType
是 text
(也显示为 fstat -Ol
)并且文件长 9 行,如 wc -l
.
正如 Bryan 在评论中指出的那样,关键字扩展也可以解释从客户端提交的内容与服务器上的内容之间的差异,尽管在那种情况下客户端文件将被刷新 在 提交完全完成后,客户端和服务器端文件将具有相同的关键字内容和大小(折扣已经提到的行结束翻译)。
如果文件具有 unicode
类型,这也可能导致差异,因为 Unicode 文件在服务器上被规范化为 UTF-8;例如,一个 UTF-16 文件主要包含具有单字节 UTF-8 表示的字符,最终在服务器上会小很多。
对于 binary
类型的文件,我认为客户端的大小与服务器的(压缩前)大小不会有差异。
我们看到一个奇怪的行为,一个用户将文件推送到 perforce。磁盘上的原始文件是 393846
字节,提交到 perforce 后的文件变成 393382
。那么丢失的464字节去哪儿了?
额外的细节:
- 各方Windows
- 资产类型:二进制(虚幻资产)
服务器上的文本文件被规范化为以 LF 结尾的行(也称为“unix 风格”)。在单个客户端上,文件以本机格式呈现,这意味着 Windows.
上的 CRLF 终止行因此,如果一个 464 行的文件是从 Windows 客户端提交的,那么当它存储在服务器上时,它将减少 464 个字节,因为所有的 CR 字节都将被删除。当它同步回 Windows 客户端(任何 Windows 客户端)时,CR 将被放回。这是一个看起来如何的示例:
C:\Perforce\test\python>p4 fstat -Ol text.txt
... depotFile //collaborators/main/python/text.txt
... clientFile c:\Perforce\test\python\text.txt
... isMapped
... headAction edit
... headType text
... headTime 1595542603
... headRev 4
... headChange 181
... headModTime 1595542590
... haveRev 4
... fileSize 148
... digest A6A7BF7DF3274FAA12F6BC394DFC2C69
C:\Perforce\test\python>dir text.txt
Volume in drive C is OS
Volume Serial Number is AE05-0B05
Directory of C:\Perforce\test\python
07/23/2020 03:16 PM 157 text.txt
1 File(s) 157 bytes
0 Dir(s) 789,006,692,352 bytes free
C:\Perforce\test\python>wc -l text.txt
9 text.txt
请注意,fstat -Ol
返回的 fileSize
是 148,而 dir
返回的本地文件大小是 157 字节; 9 个字节的差异是因为 headType
是 text
(也显示为 fstat -Ol
)并且文件长 9 行,如 wc -l
.
正如 Bryan 在评论中指出的那样,关键字扩展也可以解释从客户端提交的内容与服务器上的内容之间的差异,尽管在那种情况下客户端文件将被刷新 在 提交完全完成后,客户端和服务器端文件将具有相同的关键字内容和大小(折扣已经提到的行结束翻译)。
如果文件具有 unicode
类型,这也可能导致差异,因为 Unicode 文件在服务器上被规范化为 UTF-8;例如,一个 UTF-16 文件主要包含具有单字节 UTF-8 表示的字符,最终在服务器上会小很多。
对于 binary
类型的文件,我认为客户端的大小与服务器的(压缩前)大小不会有差异。