我的 gitlab 安装空间不足。我想将用户的存储库移动到另一个驱动器。我找不到有关执行此操作的任何演练或好的论坛帖子。
我尝试过移动/opt/gitlab/apps/gitlab/repositories
到另一个驱动器,然后创建从原始文件夹名称到新文件夹名称的符号链接。这种方法只要允许我读取存储库中的数据就行,但在尝试创建新存储库时失败了,当时尝试推送到 master 分支 ( git push -u origin master
),提示我没有权限提交到 master。当我将文件夹放回原位而不是符号链接时,一切都恢复正常。
有没有更好/正确的方法将存储库移动到系统上的不同位置和不同驱动器?
答案1
看来新设备上的新父目录具有错误的权限。请检查旧位置和新位置上所有存储库的父目录的所有者、组和权限。
此外,如果它确实是由符号链接引起的(我对此表示怀疑),您可以使用mount --bind
符号链接而不是将目录重新绑定到新磁盘。
答案2
假设您使用 github 设置了 pki / 非交互式身份验证(即上传了经过身份验证的相应公钥,以便当您运行 git pull 时,您的 ~.ssh/id_dsa 或 ~..ssh/is_rsa 私钥会被读取进行身份验证)。
问题很可能是新设备上缺少相应的私钥:
用户@主机:.ssh/id_dsa
确保您的私钥已粘贴到该位置,uid 正确,并且 chmod 0400 否则将不起作用。
编辑:
因此,一旦你的公钥被上传到 github,任何拥有相应私钥的人都可以下载/更改/删除你的源代码。如果它已被泄露,你可以撤销它并添加另一个,只要你有登录权限进入 github 门户或访问 github 上存档的电子邮件或更改密码/进入门户
私钥应离线保存并加密
答案3
让你的开发团队暂停一下,你即将更改配置。
在新驱动器或具有足够空间的位置创建一个目录,就我而言,为了提供未来的位置独立性,将使用链接而不是绝对位置。
mkdir /drive2/repos # create a new base directory
ln -fs /drive2/repos /repos # create a link on the root
chown git:git /drive2/repos # make sure this is git friendly
现在,使用您喜欢的编辑器修改/etc/gitlab/gitlab.rb
:
git_data_dirs({
"default" => {
"path" => "/repos"
}
})
然后使用rsync
或任何其他工具将当前位置复制到新位置。验证一切正常后,您可以稍后删除。
rsync -av /var/opt/gitlab/git-data/* /repos/. # copy keeping all
chown -R git:git /repos/ # reconfirm the ownership
# now reconfigure GitLab to the fire the new location
gitlab-ctl reconfigure