【问题标题】:Initialize gitolite repository in existing folder在现有文件夹中初始化 gitolite 存储库
【发布时间】:2026-01-14 20:25:12
【问题描述】:

我对 Git 和 Gitolite 还很陌生,但昨天我设法启动并运行了它。

问题是,我有一个包含许多项目的文件夹(我们称之为/projects),我正在尝试将它们迁移到 Git。我将 Gitolites /repositories 文件夹符号链接到这个 /projects 文件夹,所以现在每个新的 repo 都在 /projects 文件夹中创建。没问题。

但现在我想为 /projects 文件夹中的每个项目(子文件夹)创建一个 repo。如果我在 Gitolite 中初始化一个新的 repo(我们称之为 /myproject),它会创建一个名为 myproject.git 的新文件夹,而不是使用旧的 myproject 文件夹和我已经在使用的文件。

那么,如何使用 Gitolite 将所有单个项目文件夹转换为 Git 存储库?我不想手动下载和附加所有这些文件。

【问题讨论】:

    标签: git terminal gitolite


    【解决方案1】:

    这就是Gitolite works 的方式:它管理 存储库(xxx.git 文件夹),而不是工作树(充满文件的目录,如projects/myprojects/)。

    所以:不要将存储库符号链接到 /projects:两者的目的截然不同。

    您可以直接在自己的目录(/projects/myproject/.git)中启动和导入每个项目,然后将其导入到 Gitolite,跟随“how to configure a migrated git repository in gitolite”。


    Pierre De LESPINAY提及s in the comments官方文档:

    "appendix 1: bringing existing repos into gitolite"

    • 将存储库移至$HOME/repositories
    • 确保:
      • 它们都是裸仓库。
      • 所有 repo 名称都以“.git”结尾。
      • 所有文件和目录都归 gitolite 托管用户所有并可写入(尤其是当您以 root 身份复制它们时更是如此)。
    • 运行 gitolite setup
      如果你忘记了这一步,你也可以忘记写访问控制!

    回到你的工作站:

    • 如果存储库是普通存储库,请将它们添加到您的管理员存储库克隆中的 conf/gitolite.conf,然后提交并推送更改。
    • 如果 repos 是通配符 repos,并且已经与 conf 文件中的某些 repo regex 匹配,则需要手动创建 gl-creator 文件,如下所示:
    echo username > ~/repositories/path/to/repo.git/gl-creator
    

    【讨论】:

    • 如果我理解你的意思,Gitolite 不会像标准 Git 存储库那样管理我的项目文件?
    • @ArminCifuentes Gitolite 是一个 authorization layer:它所做的只是接受或拒绝你的 git clone/push/pull 命令来表示repositories/:为此,不需要一个完整的仓库,只有一个 bare repo 就足够了。
    • bringing existing repos into gitolite 的官方说明对我来说效果很好
    • @PierredeLESPINAY 好点。我已将这些说明包含在答案中以获得更多可见性。