git-p4和config git-p4.largeFileExtensions

nfg76nw0  于 12个月前  发布在  Git
关注(0)|答案(3)|浏览(168)

我正在尝试使用git-p4(使用git for Windows)将Perforce仓库转换为git仓库。我有很多镜像,希望使用LFS。但是,我似乎无法让git-p4.largeFileExtensions配置设置与多个扩展一起正常工作。如果我执行以下命令:

git config       git-p4.largeFileSystem     GitLFS
git config       git-p4.largeFileExtensions png
git config --add git-p4.largeFileExtensions jpg
git p4 clone --verbose //depot/project@all .

字符串
我得到(如果我使用两个以上,所有对都报告类似的警告):

WARNING: These git config values clash:
  git config "git-p4.largefileextensions" = "png"
  git config "git-p4.largefileextensions" = "jpg"


.git/config文件是我所期望的,一个largeFileExtensions的多值条目:

[git-p4]
        largeFileSystem = GitLFS
        largeFileExtensions = png
        largeFileExtensions = jpg


创建的.gitattributes文件看起来像:

#
# Git LFS (see https://git-lfs.github.com/)
#
*.png
jpg filter=lfs -text


是我做错了什么,还是largeFileExtensions属性的格式不同?

li9yvcax

li9yvcax1#

这似乎是git for Windows在Windows中输出不正确的行结束符的问题。如果我运行:

git config --get-all git-p4.largeFileExtensions

字符串
它会给我给予:

png\r
jpg\r


git-p4.py脚本中,它使用split(os.linesep)来分割命令行的输出。在Windows上,os.linesep = '\r\n',因此行不会被分割。如果我将脚本更改为使用splitlines(),那么它仍然会给出冲突警告,但是,看起来跟踪现在是正确的。

mwecs4sa

mwecs4sa2#

请注意,除了git-p4.largeFileExtensions之外,“git p4“还用于忽略lfs.storage配置变量,这已在Git 2.25(Q1 2020)中得到纠正。
参见commit ea94b16(2019年12月11日)r.burenkov ( panzercheg )
(由Junio C Hamano -- gitster --合并于commit 20aa6d8,2019年12月25日)

git-p4:荣誉lfs.storage配置变量

签字人:r. brenkov
“git lfs”允许用户使用配置变量lfs.storage指定自定义存储位置,但是当与GitLFS指针交互时,“git p4”总是使用硬编码的默认值,即.git/lfs/目录,而不关注配置。
使用lfs.storage中配置的值(如果存在),就像所有“git”操作一样,以保持一致性。
而且,在Git 2.43(Q4 2023)之前,git p4在被告知时尝试将符号链接存储到LFS,但已被修复为不这样做,因为它没有意义。
参见commit 10c89a0(2023年10月18日)通过Matthew McClain ( MatthewMcClain17 )
(由Junio C Hamano -- gitster --合并于commit 9030f85,2023年10月30日)

10c89a02b0:git-p4不应该尝试在LFS中存储符号链接

签名人:Matthew McClain
如果文件扩展名与git-p4.largeFileExtensions匹配,git-p4.py将尝试在LFS中放置符号链接。
Git LFS不存储符号链接,因为smudge/clean过滤器不处理符号链接。
它们永远不会被传递到过滤器进程或污迹/清洁过滤器,也不会在不更改协议或命令行界面的情况下发生。
除非Git学会了如何将它们发送到过滤器,否则Git LFS很难以任何有用的方式使用它们。
Git LFS的目标是将大文件移出存储库历史记录,并且在大多数系统上,符号链接的功能限制为4 KiB或类似大小。

7uhlpewt

7uhlpewt3#

我使用git p4将现有的Perforce仓库和仓库迁移到新的git仓库,并使用git lfs migrate将大文件移动到其他地方。查看一个很棒的github教程here
要列出文件及其大小,请执行以下操作:

git lfs migrate info --everything

字符串
要删除历史记录中的所有.bin文件(重写提交)并设置LFS配置:

git lfs migrate import --include="*.bin"


在git将新的repo推送到remote之前,您还可以将GitHub LFS服务器的url更改为另一个implementation。通过执行git lfs env检查LFS配置并将url更改为git config -f .lfsconfig lfs.url https://your.server.com/info/lfs

相关问题