【问题标题】:Can I serve my bare git repository?我可以为我的裸 git 存储库提供服务吗?
【发布时间】:2015-11-05 00:13:29
【问题描述】:

我的 Linux 服务器上有一个裸 git 存储库。本质上这是 git 服务器。

这台服务器也是我的网络服务器。裸 git 存储库用作多个开发人员的中心访问点。

但我也希望这个裸仓库为我的网络文件提供服务。

我不确定这是否可行,因为裸仓库似乎没有“正常”文件结构。所有文件都在对象文件夹中。

我在关注this documentation。

这是一个裸仓库的文件夹层次结构

简而言之,我的 git 服务器也可以是我的 web 服务器吗?

【问题讨论】:

  • Git 服务器不一定是裸仓库。如果您需要工作树,请定期进行回购。
  • 这就是文档描述它的方式,但是他们没有描述“为什么”。那什么是裸回购呢?他们这样描述肯定是有原因的。
  • 裸仓库是没有工作树的仓库。不多也不少。如果您不需要工作树(典型的 Git 服务器),请创建一个裸仓库。如果你需要一个工作树(你的 Git+HTTP 服务器),做一个常规的 repo。
  • 对,但我刚刚找到另一个文档,该文档声明将裸仓库用于服务器。我认为原因之一是您无法直接在裸仓库中编辑文件。我认为最好的做法是坚持客户端-服务器开发模型,而不是客户端到客户端。
  • 推送到非裸仓库不是一个好主意,因为它很丑陋,而且要保持一切干净和同步很麻烦。有一个技巧可以做到这一点,但是如果您是 git 新手,请不要这样做。如果你对 git 不陌生……还是不要;)

标签: linux git ssh server


【解决方案1】:

“裸”存储库的要点是没有“工作目录”。它只包含 git 使用的信息。
如果您有“普通”存储库,则这些文件位于存储库的 .git 目录中。

所以答案是否定的。

但是您可以在本地克隆存储库,然后您就拥有了文件。

【讨论】:

  • 有没有办法创建一个模仿护理存储库的 git 存储库,以便每当我推送到裸存储库时,完整的存储库“自动”更新?
  • 您可以尝试使用 post-update 挂钩来更新包含文件的第二个本地存储库。这可以通过http访问。如果是,请注意排除 .git 子目录,这样任何人都无法通过 http 访问它。 Further reading on git hooks
  • 听起来很棒......当我推送到“git服务器”(一个裸仓库)时,更新后挂钩将自动更新实际的存储库。
  • post receive 会是一个更好的使用 no 的钩子?
  • 在这种情况下应该没关系,因为你不需要裁判,我想。但也许我记错了。更新后应该可以工作。我前段时间用它来设置权限。
猜你喜欢
  • 1970-01-01
  • 2010-12-19
  • 1970-01-01
  • 2020-11-12
  • 2015-10-12
  • 2022-11-06
  • 2015-07-21
  • 2014-08-31
  • 1970-01-01
相关资源
最近更新 更多