git-p4 和配置 git-p4.largeFileExtensions

问题描述 投票:0回答:3

我正在尝试使用

git-p4
(在 Windows 上使用 git)将 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
属性的格式不同?

git git-p4 git-lfs
3个回答
3
投票

这似乎是 Windows 版 git 输出错误的 Windows 行结尾的问题。如果我跑步:

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

它会给我:

png\r
jpg\r

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


1
投票

请注意,除了

git-p4.largeFileExtensions
之外,“
git p4
”还用于忽略
lfs.storage
配置变量,该变量已在 Git 2.25(2020 年第一季度)中得到纠正。

请参阅r.burenkov (panzercheg)

提交 ea94b16
(2019 年 12 月 11 日)
(由 Junio C Hamano --
gitster
--
合并于 commit 20aa6d8,2019 年 12 月 25 日)

git-p4
:尊重lfs.storage配置变量

签署人:r.burenkov

“git lfs”允许用户使用配置变量

lfs.storage
指定自定义存储位置,但是在与GitLFS指针交互时,“git p4”始终使用硬编码的默认值,即
.git/lfs/
目录,而不需要注意配置。

使用

lfs.storage
中配置的值(如果存在),就像所有“git”操作一样,以保持一致性。


并且,在 Git 2.43(2023 年第 4 季度)之前,

git p4
在被告知时尝试将符号链接存储到 LFS,但已修复不这样做,因为它没有意义。

请参阅提交 10c89a0(2023 年 10 月 18 日),作者:Matthew McClain (

MatthewMcClain17
)
(由 Junio C Hamano --
gitster
--
合并于 commit 9030f85,2023 年 10 月 30 日)

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

签署人:Matthew McClain

如果文件扩展名与

git-p4.py

 匹配,
git-p4.largeFileExtensions
将尝试在 LFS 中放置符号链接。

Git LFS 不存储符号链接,因为涂抹/清理过滤器不处理符号链接。
它们永远不会传递到过滤器进程或污迹/清洁过滤器,如果不更改协议或命令行界面,也不会发生这种情况。
除非 Git 学会如何将它们发送到过滤器,否则 Git LFS 将很难以任何有用的方式使用它们。

Git LFS 的目标是将大文件移出存储库历史记录,并且符号链接在功能上限制为 4 KiB 或大多数系统上的类似大小。


0
投票

我使用

git p4
将现有的 Perforce 仓库和工作区迁移到新的 git 存储库,并使用
git lfs migrate
将大文件移动到其他地方。检查一个很棒的 github 教程这里

列出文件及其大小:

git lfs migrate info --everything

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

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

在将新存储库 git 推送到远程之前,您还可以将 GitHub LFS 服务器 url 更改为另一个实现。通过执行

git lfs env
检查 LFS 配置并通过
git config -f .lfsconfig lfs.url https://your.server.com/info/lfs
更改 url。

© www.soinside.com 2019 - 2024. All rights reserved.