git-p4和config git-p4.largeFileExtensions

时间:2016-07-19 17:15:07

标签: git git-p4 git-lfs

我正在尝试使用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 个答案:

答案 0 :(得分:2)

这对于Windows输出错误的行结尾的git来说似乎是一个问题。如果我跑:

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

它会给我:

png\r
jpg\r

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

答案 1 :(得分:0)

请注意,除了git-p4.largeFileExtensions外,“ git p4”还用于忽略lfs.storage配置变量,该变量已在Git 2.25(2020年第一季度)中进行了纠正。

请参见commit ea94b16r.burenkov (panzercheg)(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”操作一样)以保持一致性。

答案 2 :(得分:0)

我用git p4将现有的Perforce软件仓库和工作区迁移到新的git repo,然后用git lfs migrate将大文件移到其他地方。查看出色的github教程here

要列出文件及其大小:

git lfs migrate info --everything

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

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

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