有没有一种方法可以硬链接包含多个Git存储库的文件夹中的所有重复对象?
说明:
我在公司服务器(Linux计算机)上托管了一个Git服务器。这个想法是拥有一个主规范存储库,每个用户都没有推送访问权限,但是每个用户都派生规范存储库(将规范存储库克隆到用户的主目录,从而实际上创建硬链接)。
/ canonical / Repo / Dev1 / Repo(最初克隆时硬链接到/ canonical / Repo的对象)/ Dev2 /
Repo(最初克隆时硬链接到/ canonical / Repo的对象)
这一切都很好。在以下情况下会出现问题:
Dev1:在服务器(/ Dev1 /
Repo)上将大量提交推送到他的fork上Dev2:在他的本地系统上获取该提交,进行自己的更改并将其推送到他在服务器(/ Dev2 /
Repo)上自己的fork
(现在,相同的“巨大”文件位于服务器上开发人员的两个分支中。它不会自动创建硬链接。)
这真是疯狂地吞噬了我的服务器空间!
我该如何在两个分支之间重复的对象之间创建硬链接,或者在该问题上是规范的,以便节省服务器空间,并且每个开发人员从其本地计算机上的他/她的分支中克隆时都将获取所有数据?
我决定这样做:
shared-objects-database.git/
foo.git/
objects/info/alternate (will have ../../shared-objects-database.git/objects)
bar.git/
objects/info/alternate (will have ../../shared-objects-database.git/objects)
baz.git/
objects/info/alternate (will have ../../shared-objects-database.git/objects)
所有分叉在其object / info / alternates文件中都有一个条目,该条目提供了到对象数据库存储库的相对路径。
使对象数据库成为存储库非常重要,因为我们可以保存具有相同名称的存储库的不同用户的对象和引用。
脚步:
git init --bare shared-object-database.git
for r in list-of-forks
do
(cd“ $ r” && git push ../shared-objects-database.git“ refs / :refs / remotes
/ $ r /
” && echo ../../shared-objects-database.git / objects>对象/ info /
alternates#要保存的代码每次完成时,我都将“ fat”对象添加到备用对象中
然后,在下一个“ git gc”中,将替代已存在的fork中的所有对象。
git repack -adl
也是一个选择!
这样,我们可以节省空间,以便两个用户在服务器上各自的分支上推送相同的数据将共享对象。
我们需要在共享对象数据库中将gc.pruneExpire
变量设置为never
。为了安全起见!
要偶尔修剪对象,请将所有派生作为远程对象添加到共享,提取和修剪中!Git会做剩下的!
现在我们将讨论如何在你自己的服务器上搭建 Git 服务来运行这些协议。 Note 这里我们将要演示在 Linux 服务器上进行一次基本且简化的安装所需的命令与步骤,当然在 Mac 或 Windows 服务器上同样可以运行这些服务。 事实上,在你的计算机基础架构中建立一个生产环境服务器,将不可避免的使用到不同的安全措施与操作系统工具。但是,希望你能从本节中获得一些必要的知识。 在开始架设 Git 服
当EXCEL服务器数据规范越来越多的时候,为了方便管理,有必要对数据规范进行分类,如下图所示: 对 列表窗体选择 数据规范分成3大类,分别是“客户”、“商品”和“省份”,如何实现的呢?如下所示: 只要在这里直接输入当前数据规范的所属分类的名字即可,系统会自动根据所属分类的名字自动进行归类。
接下来我们将通过 “Git” 协议建立一个基于守护进程的仓库。 对于快速且无需授权的 Git 数据访问,这是一个理想之选。 请注意,因为其不包含授权服务,任何通过该协议管理的内容将在其网络上公开。 如果运行在防火墙之外的服务器上,它应该只对那些公开的只读项目服务。 如果运行在防火墙之内的服务器上,它可用于支撑大量参与人员或自动系统(用于持续集成或编译的主机)只读访问的项目,这样可以省去逐一配置 S
我想按多个列对熊猫数据框进行分组。每个Row都有一个整数、一个Name和一个额外的数值。我希望最终的Dataframe包含Name具有最高整数的每一行。 通过分组数据帧,只有第0行应该消失。第3行和第4行仍应包括在数据框中。
现在我们将讨论如何在你自己的服务器上搭建 Git 服务来运行这些协议。 Note:这里我们将要演示在 Linux 服务器上进行一次基本且简化的安装所需的命令与步骤,当然在 Mac 或 Windows 服务器上同样可以运行这些服务。 事实上,在你的计算机基础架构中建立一个生产环境服务器,将不可避免的使用到不同的安全措施与操作系统工具。但是,希望你能从本节中获得一些必要的知识。 在开始架设 Git 服
刚接触Git不久,误操作把Git 的本地分支文件夹给Shift delete了,本地分支还没有commit和push到Server远程分支上去,现在没有本地分支,如何删除Server上的远程分支呢? 似乎没有Push过本地分支,无法直接删除远程分支