大多数开源项目都是通过 GitHub 找到的,如果你想让你的项目对全世界可用,GitHub 是你存储库的好地方。私人回购和用户访问呢? GitHub、BitBucket 和其他网站使您能够在他们的网站上托管私有存储库,但需要付费。
有替代方案,例如 DropBox 、 Google Drive 和将您的存储库隐藏在 共享托管服务器 上,但谁真的想这样做呢?前一个选项是可行的,但充其量是混乱和蹩脚的黑客攻击,并且缺乏访问控制。
解决方案:将 Raspberry Pi 或 PogoPlug(
个人最喜欢的,但有时很难找到
或
我当前的设置
)与一点 ArchLinux(或几乎所有
基于 Unix 的
操作系统)和一些命令行技能混合使用,以创建您自己的。
设备大概费用:18-40 美元
可选硬盘驱动器:不定
“Gitolite 允许您在中央服务器上设置 git 托管,具有非常细粒度的访问控制和许多(许多!)更强大的功能。”
滚动你自己的 Git 服务器的主要好处是你从头到尾都在控制之中。如果公司更改其定价计划,则不会产生任何影响。如果有人加入或离开您的团队,只需添加或删除他们的访问权限即可。如果您想扩展服务器,请实现它。完全控制。
让我们开始吧
- 在与服务器不同的计算机上运行 ssh-keygen
- 将文件命名为 $HOME/YourName.pub
git clone git://github.com/sitaramc/gitolite
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin
git clone git://github.com/sitaramc/gitolite
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin
之前的命令可能不起作用,因为“bin”不在您的“PATH”中,因此在这种情况下运行:
git clone git://github.com/sitaramc/gitolite
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin
添加回购和用户
首先要做的事——永远不要手动添加用户或 repos 到服务器。所有这些更改都由一个名为“gitolite-admin”的特殊仓库控制。管理工作流程相当简单明了。
运行以下命令:
git clone git://github.com/sitaramc/gitolite
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin
您现在刚刚下载了 git 服务器的控制中心。现在 cd 进入文件夹“cd gitolite-admin”,在那里你会看到两个目录“conf”和“keydir”。将用户密钥添加到“keydir”(jack.pub、jill.pub 和 john.pub)中,并通过编辑“conf/gitolite.conf”添加 repos。
要添加 repo“tester”并提供对 jack、jill 和 john 的访问,请将以下内容添加到“conf/gitolite.conf”:
git clone git://github.com/sitaramc/gitolite
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin
在前面的示例中, Jill 具有只读访问权限。 Jack 具有读/写功能,还可以快进分支的推送并创建新的分支/标签。 约翰 可以做任何他喜欢做的事;快进、倒带或删除分支/标签。
当您进行更改时,您将要运行 git add conf 或 git and keydir 。接下来,使用
git commit -m “created tester and added users”
提交您的更改,然后使用 git push。推送完成后,您已将新用户添加到 ~/.ssh/authorized_keys 并在您的服务器上创建了新用户。
从国外访问
如果您在个人网络上设置 git 服务器并希望提供对外界的访问,请首先考虑安全性,但这很容易做到。首先,确保您的防火墙能够胜任这项任务,并且您对它的设置感到满意。其次,确保为所需端口设置端口转发(大多数系统的默认值为 22)。第三,如果您没有静态 IP 地址,请选择动态 DNS 服务来管理指向您服务器 IP 地址的流量。
可选的动态 DNS 服务:每年免费至 35 美元
在关闭
根据您的特定需求,此解决方案可以很好地扩展到爱好者或大型组织(例如:Fedora 项目 - 超过 10,000 个存储库和 1,000 名维护人员以及 Gentoo Linux 200 个存储库和超过 1,000 名用户)。凭借 Gitolite 提供的令人难以置信的灵活性,托管和管理存储库就像在终端中运行一些命令一样简单,这使您可以控制数据并在一定程度上对数据进行未来验证。
参考资料/资源
https://github.com/sitaramc/gitolite - 开源项目的官方 GitHub 页面
https://groups.google.com/forum/#!forum/gitolite - 官方和活跃的支持论坛
http://archlinuxarm.org/platforms/armv5/pogoplug-series-4 - 在 PogoPlug 系列 4 设备上安装 ArchLinux 的参考
http://archlinuxarm.org/platforms/armv5/pogoplug-v2-pinkgray - 在 PogoPlug 版本 2 设备上安装 ArchLinux 的参考
相关参考资料: