为什么Bibucket Server在本地存储LFS对象?

时间:2018-07-17 12:29:10

标签: git bitbucket bitbucket-server git-lfs

我已经成功地使用PostgreSQL数据库设置了Bitbucket Server,但是LFS出现了问题。我按照this guide做了所有事情。起初它似乎起作用,因为推或拉时没有错误。问题是LFS文件同时存储在本地我的仓库中和服务器上。是什么导致此问题?

1 个答案:

答案 0 :(得分:1)

(这是基于评论讨论的,但是我认为我明白了您的要求,在进一步的评论中答案可能有点笨拙……)


的确,git LFS在某些情况下可以减少用于大文件的本地存储,但是将其视为主要尝试保存大文件的不必要的 transfer 可能会更有用。减少本地存储的潜在附加好处。

与核心git一样,当前签出内容的所有数据都必须保存在本地[1]。与核心git不同,您不必保留整个历史记录中使用的所有文件的本地副本。不在存储库的LFS存储中的大型文件的本地副本的两种方法是:

1)其他人添加了文件,但您从未检出使用过该文件的任何提交

2)在签出一些不依赖于某些文件的文件后,将其删除(最好通过运行git lfs prune

LFS确实有关于您认为本地可能需要的规则(“最近的提交”,“最近的分支”等)。这些可以通过配置进行调整。 git lfs手册页的拼写可能比我更好(https://github.com/git-lfs/git-lfs/tree/master/docs/man)。我将从prunefetch页开始。

LFS不喜欢自动 修剪存储,因为它认为您可能有多个存储库共享一个LFS存储,并且不想做任何假设。

因此,由于这些原因,如果您期望LFS释放本地存储,则它似乎无法正常工作。但是,如果您现有的回购中包含大文件较大的历史记录(较深的历史记录和/或许多分支),那么您会发现克隆此类回购文件的时间大大提高了-这确实是了解LFS想要为您做什么的起点。

所以总结一下:

  • 如果要释放本地存储,则需要告诉lfs修剪本地存储

  • prune仍会保留您认为需要的内容(部分取决于您的配置)

  • 当前签出的内容始终保存在本地。


[1]当然,在任何一种情况下,“本地”的意思是“据git知道的本地”;如果您确实想将文件存储在其他位置,则可以使用远程文件系统,但是在许多用例中,您可能会发现这简直让您无所适从。