- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我没有找到太多关于薄包的信息,手册页的信息对此相当含糊。我知道这与慢速连接有关,但什么是“慢速连接”?
它的优点和缺点是什么?什么时候该用,什么时候不该用?
最佳答案
作为记录,man page (index-pack
)状态:
It is possible for
git-pack-objects
to build "thin" pack, which records objects in deltified form based on objects not included in the pack to reduce network traffic.
Those objects are expected to be present on the receiving end and they must be included in the pack for that pack to be self contained and indexable.
这将完成 git push
man page --thin
选项:
Thin transfer spends extra cycles to minimize the number of objects to be sent and meant to be used on slower connection
因此,在这种情况下,“慢速网络”是您希望发送尽可能少的数据量的连接。
在“Git fetch for many files is slow against a high-latency disk”中查看更多信息。
在this thread , Jakub Narębski解释更多(在远程端和本地端使用 git gc 的上下文中):
Git does deltification only in packfiles.
But when you push via SSH, git would generate a pack file with commits the other side doesn't have, and those packs are thin packs, so they also have deltas...
but the remote side then adds bases to those thin packs making them standalone.
更准确地说:
On the local side:
git-commit
creates loose (compressed, but not deltified) objects.git-gc
packs and deltifies.On the remote side (for smart protocols, i.e. git and ssh):
git creates thin pack, deltified;
on the remote side git either makes pack thick/self contained by adding base objects (object + deltas), or explodes pack into loose object (object).
You need git-gc on remote server to fully deltify on remote side. But transfer is fully deltified.On the remote side (for dumb protocols, i.e. rsync and http):
git finds required packs and transfers them whole.
So the situation is like on local side, but git might transfer more than really needed because it transfers packs in full.
上面的问题与git push --thin
的使用(或不使用)有关:你什么时候使用它?
事实证明,如果您想让 git 利用这些薄数据包,您确实需要仔细管理您的二进制对象:
- Create the new filename by just copying the old (so the old blob is used)
- commit
- PUSH
- copy the real new file
- commit
- PUSH.
If you omit the middle PUSH in step 3, neither "
git push
", nor "git push --thin
" can realize that this new file can be "incrementally built" on the remote side (even though git-gc totally squashes it in the pack).In fact, the way thin packs work is to store delta against a base object which is not included in the pack.
Those objects which are not included but used as delta base are currently only the previous version of a file which is part of the update to be pushed/fetched.
In other words, there must be a previous version under the same name for this to work.
Doing otherwise wouldn't scale if the previous commit had thousands of files to test against.Those thin packs were designed for different versions of the same file in mind, not different files with almost the same content. The issue is to decide what preferred delta base to add to the list of objects. Currently only objects with the same path as those being modified are considered.
关于git - 什么是 git 的瘦包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1583904/
我正在接触 javafx。这就是我正在做的。 FXML Views DI Controllers Weld-SE Managed Services and Models Trying to confi
今天,我了解到使用胖模型和瘦 Controller 被认为是很好的做法。到目前为止,我的想法恰恰相反,所以我认为自己理解的有关 MVC 的一切现在都被证明是错误的。 大多数文章都表明胖模型/瘦 Con
我在 ear 中打包的瘦 war 中遇到了类加载问题。这里还封装了其他的ejb模块。有些可以通过 spring 加载,有些则不能。 想象一下以下场景: someApp.ear |- someEJBs1
我有一个项目,其中 3 个 war-modules 被打包在一个 ear-module 中。我的问题是每个库 jar 都包含在每个 war 模块以及 ear 模块中,这使得生成的 ear 文件非常大(
问题是如何使用 Oracle JDBC 瘦驱动程序并通过仅在 URL 中指定来强制加密? 据了解,我们需要将Oracle Net参数oracle.net.encryption_client设置为req
我尝试根据 RVM and thin, root vs. local user 设置精简服务和 http://wiki.rubyonrails.org/deployment/nginx-thin?re
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 8年前关闭。 Improve this
我在使用 NetBeans V6.7.1 的 Oracle 11g 中遇到 JDBC Thin 问题。我不知道如何配置它。我已经设置了ojdbc6.jar和orai18n.jar的类路径。但我仍然无法
我有一个新的 tomcat 应用服务器运行在 tomcat 6、java 6 (openjdk)、centos 6.2 上。服务器是在centos 6.2主机上运行在qemu-kvm下的虚拟机。主机和
我的代码有效,但我知道最好有胖模型和瘦 Controller 。 但是,我使用了 3 种不同的型号,不幸的是我的 Controller 变胖了。组织此代码的最佳方式是什么(使用胖模型/瘦 Contro
很抱歉提出这样一个愚蠢的问题,但在文档中找不到它: filename.slim filename.html.slim 这似乎是一种非常适合使用的语言。我以前使用过 HAML,所以我认为这将是一个相当不
我已经从这个链接http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html 下载了驱动程序
如何减少fontawesome fa-bars的粗细,增加垂直线之间的距离并延长水平线? .fa { margin: 40px; font-size: 14px; } 最佳答案 为什么不试
我有一个在 IE 和 Excel(用于报告)中呈现的 html 表格 如果我将 border-width 设置为 thin,它在 IE 中显示 2px 边框,在 Excel 中显示 1px 边框。 但
我有一个 Controller 操作,用于执行产品列表、分页和一些过滤器,例如类别(来自下拉列表)、标题(来自文本字段)、库存(来自复选框)这是我的 Controller : class Prod
通过 this question 上的慷慨帮助,我把下面的 MVVM 结构放在一起,它在 XAML(当前日期/时间)中实时显示模型的变化,非常好。 A cool advantage of this s
我刚刚读了一篇blog post这可以用银行类比来解释 MVC。我有几个月使用 MVC 框架(CakePHP)开发 Web 应用程序的经验,所以我掌握了基础知识,但我开始看到一个主题,让我认为我在放置
我最近向我的 Rails 路由文件添加了子域约束 constraints(:subdomain => 'new') do devise_for :customers do get "/cu
最干净的方法是什么?一些 Rack 中间件?我尝试修改 env['SERVER_SOFTWARE'] 但我仍然得到响应: Server: thin 1.3.1 codename Triple Espr
目前我正在使用 ojdbc14.jar Oracle 10g 瘦驱动程序来访问 Oracle 10g 数据库。 我想将驱动程序升级到瘦 ojdbc6.jar Oracle 11g 驱动程序提前数据库服
我是一名优秀的程序员,十分优秀!