gitolite-admin 克隆问题

标签 git ubuntu clone gitolite

我在克隆 gitolite-admin 存储库时遇到了问题。 我已经关注了这个http://sitaramc.github.com/gitolite/install.html#migr一切顺利。

我运行了 ssh-keygen -t rsascp ~/.ssh/id_rsa.pub morten@ubuntu-server:/tmp/morten.pub

服务器上的 authorized_keys 如下所示:

# gitolite start
command="/home/morten/gitolite/src/gitolite-shell morten",no-port-forwarding,no-X11-forwarding,no-agent-forward$
# gitolite end

哪个 AFAIK 没问题。

当我在我的客户端上运行 git clone morten@ubuntu-server:gitolite-admin 时,我得到了

fatal: 'gitolite-admin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

我不知道我错过了什么!

最佳答案

使用 morten 帐户完全没问题。

但是,考虑到您当前的 ~morten/.ssh/authorized_keys 内容,您的安装很奇怪:

代替/home/morten/gitolite/src/gitolite-shell morten|,你应该有/home/morten/gitolite/bin/gitolite-shell morten

这意味着:gitolite-shell 应该在你的$PATH 中,它应该在执行后创建的 bin 目录中:

"${github}/install" -to "${gtl}/bin"

(参见“Installing Gitolite”的“实际安装”部分的选项 3)

与:

  • github 您克隆的路径 https://github.com/sitaramc/gitolite
  • gtl 您要安装 gitolite 的路径(例如,在您的例子中,/home/morten/gitolite)

然后,保存您的authorized_keys.gitolite.rc 文件,并重新执行初始化过程会更容易:

gitolite setup -pk "${HOME}/.ssh/gitoliteadm.pub"

(前提是您创建了公钥和私钥,并将其命名为“gitoliteadm”,使用简单的:

ssh-keygen -t rsa -f "${H}/.ssh/morten" -C "Gitolite Admin access (not interactive)" -q -P ""

)

请注意,我故意将“ssh”帐户名 (morten) 与 gitolite 服务器帐户 (gitoliteadm) 保持不同。

您仍然会使用 git clone morten@ubuntu-server:gitolite-admin 进行克隆(因为所有 ssh 文件都在 ~morten/.ssh 中),但是您会使用 gitoliteadm 的私钥/公钥执行此操作,提示 gitolite 使用名为“gitoliteadm”的 gitolite“帐户”访问其存储库。

这样,如果您更改 gitolite 服务器的物理用户帐户,“逻辑”帐户“gitoliteadm”(指的是角色,而不是人或资源)。

关于gitolite-admin 克隆问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10736964/

相关文章:

ubuntu - 使用 AWS 用户数据运行 Capistrano 部署任务

clone - 如何克隆数据包并更改 DPDK 中的以太网、IP 和 UDP header 字段?

ruby-on-rails - Cucumber 失败的场景未提供详细信息(Ubuntu)

rust - Rust 迭代器上复制和克隆的区别

javascript - 克隆 DOM 中的元素并更改属性,同时在 javascript 中重用它

Git 重新标记理智和疯狂的建议 - 第 2 部分

git - 为什么我必须在 Git 中推送我刚从 origin 中提取的更改?

git - 如何设置 GitHub 存储库和分支以进行协作?

svn - git-svn 是否处理移动的文件

c - 如果我没有流但有文件描述符,如何使用 fgets 或 getline?