本文主要说明如何发布Git仓库。

发布版本库

对于Git来说,服务器并不是必需的。Git更乐于与同一台机器上的同级版本库直接交换文件,而不需要某个服务器来进行代理,或通过各种不需要上级服务器的协议与不同机器交换文件。

无论是要建立一个开源的开发环境,以让更多人通过互联网协同开发项目,还是在某个群体内部建立开发项目,其协作的本质是相同的。主要区别就是版本库的位置和访问方式。

在Git中,Git并没有尝试去管理访问权限,而是把这个问题留给了其它工具,比如SSH可能更加适合。比如直到有版本库的UNIX访问权限,要么通过SSH并执行cd命令切换到该版本库,要么切换你拥有的直接rwx访问权限的版本库,就可以提交到该版本库。

而在任何情况下发布一个版本库时,都强烈建议发布裸版本库。

带访问控制的版本库

之前提到,将裸版本库发布到组织内一个文件系统的已知位置,从而使每个人都可以访问,对放牧来说已经OK了。

但是,这种上下文中的访问就意味着所有开发人员都可以在他们的机器上看到该文件系统,并拥有UNIX系统中的所有权和读写权限。此时可能一个NFS挂载的文件系统就可以提供这样的共享支持。

而如果使多个开发机器同时使用,就需要稍微复杂的访问控制,比如版本库仓库和开发机器分离。而若直接访问文件系统(如NFS)不可用,就可以使用通过用SSH的URL来命名的版本库。

允许匿名读取访问的版本库

而如果想要共享代码,可能需要建立一个宿主服务器来发布版本库并允许其它人克隆,而所有开发人员往往只需要匿名的只读访问权限来从这些版本库中克隆或抓取。常用的方法就是使用git-daemon或HTTP守护进程来将它们导出。

使用git-daemon发布版本库

git-daemon允许用户使用Git原生协议导出版本库。

必须通过某种方式把版本库标记为“可以导出(OK to be exported)”。通常情况下,可以通过在裸版本库的顶级目录创建git-daemon-export-ok文件来实现。

为了避免单独标记每个版本库,也可以在运行git-daemon命令时加上--export-all选项来发布所有在其目录列表中可识别的版本库。另外git-daemon命令还有许多选项来限制并设置哪些版本库会导出。

在服务器上建立git-daemon的一种常见方式是将之作为一个inted服务启用。这需要在/etc/services目录中确保有Git的条目。其端口号为9418,但也可以其它的端口号,其典型条目类似:

git    9418/tcp    # Git

一旦将上述内容添加至/etc/services中,就必须要在/etc/inetd.conf中建立条目来指定git-daemon应当怎样调用。条目内容可能如下:

git stream tcp nowait nobody /usr/bin/git-daemon git-daemon --inted --verbose --export-all --base-path=/pub/git

如果使用xinetd而不是inetd,那么需要在/etc/xinetd.d/git-daemon文件中加入相似的配置信息。

service git
{disable        = notype           = UNLISTEDport           = 9418socket_type    = streamwait           = nouser           = nobodyserver         = /usr/bin/git-daemonserver_args    = --inetd --export-all --base-path=/pub/gitlog_on_failure += USERID
}

上面的做法可以使版本库看起来位于不同的主机上,尽管它们只是位于同一主机中的不同目录中。

同时还可以允许一台服务器提供多个实质上托管于Git守护进程的版本库:

git stream tcp nowait nobody /usr/bin/git-daemon git-daemon --inted --verbose --export-all --interpolated-path=/pub/%H%D

这里,%H代替完整的主机名,%D代替版本库目录路径。而因为%H可以是一个逻辑主机名,所以不同组的版本库可以处于同一台物理服务器中。

使用HTTP守护进程发布版本库

使用HTTP守护进程也可以发布允许匿名读取访问的版本库。如果还搭建了gitweb,那么访问者就可以在Web浏览器中输入URL,来查阅版本库索引列表。访问者也就不需要通过运行git来下载文件了。

在能正确启动HTTP守护进程之前,可能需要在Git裸版本库中进行配置调整,核实hooks/post-update脚本是可执行的。

使用智能HTTP发布版本库

可查git-http-backend命令的帮助文档。

允许匿名写入权限的版本库

从实现来讲,可以使用Git原生协议的URL形式,为git-daemon服务的版本库提供匿名写入权限。此时需要在已发布的版本库中启用receivepack选项:

[daemon]receivepack = true

虽然这种方法可以在LAN上设置,但通常更推荐使用SSH实现。

在GitHub上发布版本库

在GitHub上发布版本库的过程一般为:

  • 创建GitHub的版本库
  • 为新版本库命名
  • 选择访问控制级别
  • 初始化版本库
  • 添加远程版本库
  • 推送内容
  • 查看网站

Git版本控制管理——版本库管理相关推荐

  1. 《Git版本控制管理(第2版)》——4.3 Git在工作时的概念

    本节书摘来自异步社区<Git版本控制管理(第2版)>一书中的第4章,第4.3节,作者:[美]Jon Loeliger , Matthew McCullough著,更多章节内容可以访问云栖社 ...

  2. 【Git版本控制管理】Gitee(码云)和GitHub的使用

    远程仓库的使用 文章目录 远程仓库的使用 使用码云(Gitee) 使用GitHub 远程仓库是指托管在因特网或其他网络中的你的项目的版本库. 你可以有好几个远程仓库,通常有些仓库对你只读,有些则可以读 ...

  3. java中git版本控制,git版本控制管理是什么?git如何实现版本控制?

    大家好,今天要跟大家讲的是关于git版本控制管理的一点小知识,git相信程序员小伙伴们都已经很熟悉了,很多项目开发都需要git,所以,git版本控制管理到底是干嘛的呢?Git又如何实现版本控制呢?下面 ...

  4. Git版本控制管理——远程版本库

    之前提到的Git的所有操作都是在本地完成的,而实际项目开发并不是一个人就可以搞定的,通常需要团队的协作,而这些协作可能又不是在同一个地区的,这就涉及到Git的分布式特性了. Git的分布式特定会涉及到 ...

  5. Git 版本控制管理(一)

    Git 是一个分布式版本控制工具,它的作者 Linus Torvalds 是这样给我们介绍 Git  -- The stupid content tracker(傻瓜式的内容跟踪器) 关于 Git 的 ...

  6. Git版本控制管理——简介

    说明 在大型项目开发或者多人协作开发时,都希望可以对软件代码进行管理和追踪,以便确认开发的进度和方便问题追溯.这就需要使用到版本控制系统(VCS),比如Git就是一款很优秀的版本控制工具.如今很多项目 ...

  7. Git版本控制管理——提交

    在Git中,提交是用来记录版本库的变更的. 当提交时,Git会记录索引的快照并将快照放进对象库,该快照不包含该索引中任何文件或记录中的副本.Git会将当前索引的状态与之前的快照做一个比较,并派生出一个 ...

  8. 3.git版本控制-管理修改、撤销、删除

    管理修改 第一次修改 -> git add -> 第二次修改 -> git commit,Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交, ...

  9. Git版本控制管理——基本Git概念

    基本概念 版本库 Git版本库(repository)只是一个简单的数据库,其中包括所有用来维护与管理项目的修订版本和历史信息.而Git版本不仅会维护项目整个生命周期的完整副本,还会提供版本库本身的副 ...

最新文章

  1. 中方控股的Arm合资公司开始运营,还要在国内IPO
  2. 嵌入式学习笔记之四 (uboot启动流程)
  3. PHP CLI模式开发
  4. CSS3 选择器——属性选择器
  5. Intellij IDEA 快捷键(Mac)
  6. Exchange Server 2013部署系列之一:部署环境介绍
  7. [BZOJ2286] [Sdoi2011]消耗战
  8. python可视化——matplotlib画图颜色控制
  9. 你真的了解牛顿第一定律吗
  10. 航运人工智能提升全球集装箱海陆各环节作业效率,箱管控,CIMCAI自动化集装箱况残损检测/箱信息识别数字化录入,智慧航运智能航运
  11. 中国运动传感器陀螺仪行业市场供需与战略研究报告
  12. linux的系统监视器图片_用Nvidia Jetson Nano 2GB和Python构建一个价值60美元的人脸识别系统...
  13. 创建群晖共享文件夹,并进行电脑访问
  14. CraftManager for Mac(PS/sketch自动填充神器)特别版
  15. Eolink 征文活动- -专为开发者设计的一款国产免费 API 协作平台
  16. Found duplicate column(s) when inserting into hdfs://nameservice1/origin_data/events_7/data: `dt`;
  17. 用c++输出一个等腰三角形
  18. HTML -JavaScript--模拟病毒
  19. 考研小助手 Mathematica 麦酱教你算不定积分 wolfram alpha
  20. 利用python求行列式、矩阵的秩和逆

热门文章

  1. 羲和能源大数据 | 全新功能板块正式上线
  2. 程序员编程艺术:面试和算法心得
  3. 2021高考成绩查询理综各科得分,2021高考一共几科 总分多少分
  4. win10系统更新完部分电脑亮度无法调节或者找不到模块
  5. latex:公式的序号
  6. python return返回值格式化_day11__函数名的应用,python新特f-strings格式化输出、迭代器...
  7. ppt怎么把图片做成翻书效果_手把手教你做图片翻书效果.ppt
  8. LoadLibrary failed with error 1114:动态链接库(DLL)初始化例程失败 解决方法
  9. 瑞利、莱斯、高斯信道模型
  10. 国际菜鸟网络露头 阿里2.49亿美元投资新加坡邮政