最近,我发现.gitconfig已附加以下几行:

[filter "hawser"]
    clean = git hawser clean %f
    smudge = git hawser smudge %f
    required = true

由于它是版本控制的,因此我确定没有添加它们。看来我是not the only拥有这些行。

但是:git: 'hawser' is not a git commandgit help不提供任何其他信息。

那么,这个“大索”过滤器是什么?

最佳答案

我发现.gitconfig中的更改恰好与mac的github更新相对应,这就是为什么我在存储库中将其标记为此类。

至于Hawser实际是什么,Github for mac已将其 bundle 在/Applications/GitHub.app/Contents/Resources/hawser/bin/git-hawser路径中。

使用--help=false运行可执行文件会产生:

git-hawser/0.4.0 (GitHub; darwin amd64; git 2.3.0; go 1.3)

Usage:
  git-hawser [flags]
  git-hawser [command]

Available Commands:
  add                       Add an entry to .gitattributes
  clean                     Implements the Git clean filter
  env                       Show the current environment
  init                      Initialize the default Git Media configuration
  logs                      View error logs
  ls-files                  Show information about hawser files
  path                      Manipulate .gitattributes
  push                      Push files to the hawser endpoint
  rm                        Remove an entry from .gitattributes
  remove                    Remove an entry from .gitattributes
  smudge                    Implements the Git smudge filter
  status                    Show information about hawser files that would be pushed
  update                    Update local hawser configuration
  version                   Show the version number
  help [command]            Help about any command

 Available Flags:
      --help=false: help for git-hawser

Use "git-hawser help [command]" for more information about that command.

在GitHub.app中的一些可执行文件上运行strings会打开字符串git-media | hawser,该字符串除了用法消息外还牢固地表明git-hawser是fork或重新实现了git-media,用于在git外部存储大文件回购,因为github有a hard 100MB file size limit。我现在正在测试,看看如果您尝试通过GitHub.app上传大文件会发生什么。

事实证明,在处理大型文件时,GitHub.app不会自动使用git-hawser,但是strings揭示了它确实具有与git-hawser进程进行交互的能力。

安装命令行工具会将github工具和git-hawser安装到/usr/local/bin。运行git-hawser version -c可提供:
git-hawser/0.4.0 (GitHub; darwin amd64; git 2.3.3; go 1.3)
Nothing may see Gah Lak Tus and survive!

这似乎有关:https://github.com/blog/1986-announcing-git-large-file-storage-lfs

而且,大号过滤器被复制为lfs(大文件支持):
[filter "lfs"]
  clean = git lfs clean %f
  smudge = git lfs smudge %f
  required = true

08-26 17:33