如何建议开发人员在将特性分支合并到主分支后启用git LFS (git)

3

详情:

  • 我们正在尝试将存储库迁移到Git LFS。
  • 我有一个分支将启用Git LFS,我要做的是更新.gitattributes文件,并创建一个跟踪器,它又创建指针来跟踪所有需要成为LFS一部分的文件。
  • 现在我需要告诉开发人员,当此功能分支合并到默认/主分支后,他们需要做什么。

需要理解的问题?

  • 现在我建议并且通常所发现的是,在更新到主/默认分支之前,即在master/default上进行变基之前,我告诉他们对于现有的所有功能分支都需要执行以下操作,这些功能分支显然在此时还没有进行Git LFS更改。
brew install git-lfs (this will be system-wide)
git lfs install (this will be on the root directory of the repo, for each branch)
  • 针对开发人员而言,这将是一个手动步骤,他们希望通过自动化的方式来完成,我认为可能可以通过Git钩子或其他方式来实现,以便他们不必更新每个分支。 我在考虑使用类似以下的管道Bash命令来完成此操作,这可行吗?
for branch in $(git for-each-ref --format='%(refname)' refs/heads/); do 
    git lfs install "$branch"; 
done

更新1

  • 看起来以上操作会在本地所有分支上执行git lfs install,并且一次性完成。
  • 但我仍然想知道和了解什么是最佳实践。
1个回答

1

在所有分支中都不需要运行 git lfs install - 一旦您在仓库中执行了 install,它将永久设置在该仓库中。来自帮助文档:

$ git lfs install --help
git lfs install [options]

Perform the following actions to ensure that Git LFS is setup properly:

* Set up the clean and smudge filters under the name "lfs" in the global Git
  config.
* Install a pre-push hook to run git lfs pre-push for the current repository,
  if run from inside one. If "core.hooksPath" is configured in any Git
  configuration (and supported, i.e., the installed Git version is at least
  2.9.0), then the pre-push hook will be installed to that directory instead.

钩子存储在 .git 文件夹中,因此在检出不同的分支时不会受到影响。
现在,正如您所知道的那样,如果人们拥有比您合并新的 .gitattributes 文件更旧的分支,则需要重新基于这些分支以获取更改,并确保正确的文件被视为 LFS 文件。但这与 git lfs install 无关。

好的,让我问你这个问题,请告诉我如果我表述不清楚。
  • 我们不需要担心 .gitattributes,这将随着 rebase一起来。
  • 开发人员肯定会在工作中有许多分支,除非他在根目录中执行 git lfs install,否则这些分支将不会有 lfs.git 钩子。您是想说 - 如果他们在任何一个分支上执行 git lfs install,那么默认情况下所有旧分支都会有 lfs .git/hooks 吗? 如果以上答案是肯定的,那就太好了,他们只需执行一次,所有的“旧”分支都将有 lfs .git/hooks
- Sandeep Anand
@SandeepAnand:谈论.git文件夹在分支中存在或“持久存在于所有分支中”真的没有意义,因为.git文件夹就是存储库本身。存储库包含所有分支的主副本,当您进行检出时,适当的文件会从存储库(即.git文件夹)复制到工作文件夹(通常是.git文件夹的父目录)。因此,当您将钩子放入.git/hooks中,例如使用git lfs install,无论您在哪个分支上,它们都将同样可访问。 - Soren Bjornstad
好的,那么我认为我们没问题了。我不认为 git lfs install 需要在所有分支上运行,只需要在任何一个分支上运行一次即可。 - Sandeep Anand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接