我怀疑这是不可能的,我已经做了大量的搜索,但没有找到任何关于它的信息,但我想我会问。
坚果壳 是否可以在git中的替换文件中设置多个路径?
长版本,我想要实现的目标 在我的鼻子上我有一个git服务器(gitblit),其中一个repos托管在那里我想在另一个位置保存一个解压缩副本而不会打扰由gitblit存储的repo,以保持开销低我用-s克隆了repo设置备用文件的选项。我用ssh登录到nas,所以所有路径都是local / volume1 / share / etc.大部分结账将发布板载脚本,所以这就是我想要的,但我有时想通过我的Windows PC上的共享看看回购,显然Windows没有线索/ volume1是什么。无论如何,在一个文件中设置多个备用文件或多个路径。这样Linux on on board有1条路径,windows访问可以通过nas的固定IP地址查找吗?
答案 0 :(得分:1)
中说得很对在坚果壳中是否可以在git中的替换文件中设置多个路径?
对象/信息/交替
此文件记录此对象库借用对象的备用对象库的路径,每行一个路径名。请注意,不仅本机Git工具在本地使用它,而且HTTP提取器也尝试远程使用它;如果您在替换文件中有相对路径(相对于对象数据库,而不是存储库!),这通常会起作用,但如果您使用绝对路径它将无法工作,除非文件系统和Web URL中的绝对路径相同。另请参阅 objects / info / http-alternates 。
答案 1 :(得分:1)
请注意,使用Git 2.21(2019年第一季度,一年多以后):
alternate_object_database
”重命名为“ object_directory
” 请参见commit 7317aa7(2018年11月22日)以及commit 97b2fa0,commit 61c7711,commit 3a2e082,commit f0eaf63,commit f3f043a,{{3} },commit b69fb86,commit 263db40,commit b2ac148(2018年11月12日)由commit 4d0984b。
(由Jeff King (peff
)在Junio C Hamano -- gitster
--中合并,2019年1月4日)
将“ alternate_object_database”重命名为“ object_directory”
在准备统一alt odb和常规回购对象目录的处理时,让我们使用一个更中性的名称。
此修补程序是纯机械的,交换类型名称,并将任何名为“alt
”的变量转换为“odb
”。应该没有功能上的变化,但是它将减少后续差异中的噪声。
并且:
句柄替换与主对象目录相同的路径
当我们为主对象目录生成松散的文件路径时,调用方将为
loose_object_path
(以前为sha1_file_name
)提供一个缓冲区。
调用方通常会保留自己的静态缓冲区,以避免过多的重新分配。但是对于备用目录,每个结构都带有自己的暂存缓冲区。这是不必要的不同;让我们统一它们。
我们可以在这两个方向上进行选择,但是此补丁将替代结构移至主目录样式(而不是相反)。
从技术上讲,替代样式更有效,因为它避免了在每次调用时重写对象目录名称。
但这在实践中不太重要,因为我们避免了两种方式的重新分配(而且没有人注意到或抱怨主对象目录正在复制) 在进行更昂贵的系统调用之前需要几个额外的字节。
这对在管理路径上管理那些松散的对象有影响:
sha1-file:使用松散的对象缓存进行快速存在性检查
如果我们希望向
has_sha1_file()
询问我们不太可能拥有的许多对象(例如,在获取协商期间),我们已经使用OBJECT_INFO_QUICK
牺牲了准确性(由于竞速) (同时写入或重新打包)以提高速度(我们避免重新扫描pack目录)。但是,即使检查是否有松散的物体也可能很昂贵,因为我们将
stat()
每个都这样做。在许多系统上,此开销不太明显,但是stat()
在某些操作系统上或由于网络文件系统而特别慢。由于
QUICK
标志已经告诉我们可以稍作陈旧,所以我们可以以此为线索来查看每个对象目录的内存缓存。基本上,就用内存中的二进制搜索来代替stat()调用。请注意,这实际上可能会更慢。我们将用完整的
readdir()
来填充缓存,因此,如果您有大量的松散对象和少量的查找,则readdir()
可能会变得更加昂贵。实际上这没什么大不了的。
如果您有大量可到达的松散对象,那么您将遇到性能问题(应通过重新包装来解决)。
您可能有无法访问的对象,否则它们不会影响性能。通常,这些操作会通过“git gc
”修剪步骤而消失,但是在默认配置下,它们最多可以保留2周。因此,这取决于您可能合理地希望拥有多少个此类对象,
N
条目上的readdir()与M
stat()调用相比要慢多少(在这里,我们真的很在乎系统调用支持readdir()
,就像Linux上的getdents()
一样,但我在下面仅将其称为readdir()
。
- 如果
N
比M
(典型的打包存储库)小得多,我们就知道这是一个大胜利(很少有readdirs()紧随其后使用许多结果缓存)。- 当
N
和M
的大小相似时,这也是胜利。
我们关心进行系统调用的延迟,readdir()
应该在单个调用中为我们提供许多值。多少?在Linux上,运行“
strace -e getdents ls
”显示一个32k缓冲区获得512 每个调用的条目数(每个条目64个字节;名称本身为38 个字节,再加上其他一些字段)。
因此,我们可以想象,只要存储库中的松散对象数量比您进行的查找数量少500倍,这总是一个胜利。很难对此进行自动调整,因为我们通常不预先知道我们要进行多少次查找。但这不太可能取得显著成效 更糟。