我正在尝试使用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
属性的格式不同?
3条答案
按热度按时间li9yvcax1#
这似乎是git for Windows在Windows中输出不正确的行结束符的问题。如果我运行:
字符串
它会给我给予:
型
在
git-p4.py
脚本中,它使用split(os.linesep)
来分割命令行的输出。在Windows上,os.linesep = '\r\n'
,因此行不会被分割。如果我将脚本更改为使用splitlines()
,那么它仍然会给出冲突警告,但是,看起来跟踪现在是正确的。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或类似大小。
7uhlpewt3#
我使用
git p4
将现有的Perforce仓库和仓库迁移到新的git仓库,并使用git lfs migrate
将大文件移动到其他地方。查看一个很棒的github教程here。要列出文件及其大小,请执行以下操作:
字符串
要删除历史记录中的所有.bin文件(重写提交)并设置LFS配置:
型
在git将新的repo推送到remote之前,您还可以将GitHub LFS服务器的url更改为另一个implementation。通过执行
git lfs env
检查LFS配置并将url更改为git config -f .lfsconfig lfs.url https://your.server.com/info/lfs
。