我对git还是个新手。我想在工作中使用git。在工作中,我的主PC无法访问互联网。我正在考虑在一个可以访问互联网的服务器上创建一个裸git repo,并将其作为我的同事在其他PC上的主要repo。
有没有办法让这个服务器转发到像GitHub这样的远程仓库?这样,我们将有一个我们的工作,可以访问,如果我们离开办公室的异地备份。什么是最佳实践来做到这一点?一个裸git repo可以有一个遥控器吗?如果你有更好的方法来做我想要的,或者我错过了什么,请让我知道。
其他注意事项:托管裸git repo的服务器将无法远程访问。所有系统都是RHEL,一些服务(如邮件)将被转发,主要是托管BASH和python脚本以及dotfiles
任何帮助将是伟大的。
2条答案
按热度按时间2mbi3lxu1#
Git非常适合那些仓库没有通过HTTP直接连接的用例。Linux内核开发,Git最初就是为它设计的,很大程度上是通过邮件列表进行的。因此Git提供了手动创建和应用补丁的工具。
这个要点用四句话详细描述了这个过程:https://gist.github.com/nepsilon/22bc62a23f785716705c
一个更有特色的方法是使用
git format-patch
,然后在另一个存储库中使用git apply
来应用补丁。使用git am
在邮箱中自动应用修补程序。(但你也可以在U盘上移动补丁。)这些工具是构建块,您可以使用它们围绕您的具体需求构建解决方案。
有一句话要提醒:在你建立一个网络可达的存储库之前,你要从内部存储库中放置公司拥有的代码,100%确定(最好是书面的),你被允许这样做。
kiayqfof2#
我自己没有做过,但根据医生的说法,这应该不会太难。
我可以从你的问题中看到两个不同的观点:
你在这里有不同的选择:
好消息是,所有的访问细节,包括身份验证和授权,都由主机免费管理。缺点是系统上没有运行git进程,所以你必须手动启动同步脚本来将更改转发到外部github站点。您可以通过交互式会话手动启动它们,或者使用计划任务或cron任务。
好消息是它的设置很简单,你可以设置一个post-receive hook来自动启动一个同步脚本,以在每次提交时更新外部github站点。缺点是git协议没有提供身份验证或授权,因此本地网络上的任何用户都可以访问repo。
在这里,钩子将可用于自动同步到外部GitHub。多亏了Apache,你现在可以提供身份验证和授权。缺点是除了Git服务器本身之外,您现在还有一个Apache配置需要维护
这只是从以前的方式的变化。当从浏览器查看存储库时,这些应用程序提供了额外的好处,但代价是配置稍微复杂一些,并且需要在内部服务器上添加更多的软件
根据另一个SO post应该是可能的。但是你不应该允许除了本地git服务之外的任何人在备份上提交更改,因为钩子只提供从本地到远程的单向同步。设置双向同步可能要困难得多...