GIT服务器配置

2023-05-16

GIT server build up

前几天说的任务启动了,虽然server还在采购流程中。但已经在一台PC机上搞起来,供小组内部测试啦。在此把过程记录下来吧:

硬件需求:一台linux电脑,在公司局域网下有独立IP,并且保证小组每个人都能ping通;
软件需求:git-core, gitosis, openssh-server, openssh-client

安装git和openssh:
$ sudo apt-get install git-core openssh-server openssh-client

新加用户git,该用户将作为所有代码仓库和用户权限的管理者:
$ sudo useradd -m git

为git设置密码:
$ sudo password git

建立一个git仓库的存储点,我放在了/opt/git下,并且让出了git以外的用户对此目录无任何权限:
$ mkdir /opt/git
$ sudo chow git:git /opt/git
$ sudo chmod 700 /opt/git

初始化一下服务器的git用户,这一步其实是为了安装gitosis做准备,当然在任何一台机器上使用git,第一次必须要初始化一下,git向来不搞“知名不具”那一套:
$ git config --global user.name "name"
$ git config --global user.email "myemail"

安装一下python的setup tool, 这个也是为了gitosis做准备:
$ apt-get install python-setuptools

获得gitosis包:
$ cd /tmp
$ git clone git://eagain.net/gitosis.git
$ cd gitosis
$ sudo python setup.py install



切换到git用户下:
---------------------------
$  su - git

默认状态下,gitosis会将git仓库放在git用户的home下,所以我们做一个链接到/opt/git
$ ln -s /opt/git /home/git/repositories
$ exit
再次返回到默认用户。

如果你将作为git服务器的管理员,那么在你的电脑上生成ssh公钥:
$ ssh-keygen -t rsa

将公钥拷贝到/tmp下,并给其他人以读权限:
$ cp ~/.ssh/id_rsa.pub /tmp && chmod a+r /tmp/id_rsa.pub

让gitosis运行起来:
$ sudo -H -u git gitosis-init < /tmp/id_dsa.pub
Initialized empty Git repository in /opt/git/gitosis-admin.git/
Reinitialized existing Git repository in /opt/git/gitosis-admin.git/

gitosis的有趣之处在于,它通过一个git仓库来管理配置文件,仓库就放在了/opt/git/gitosis-admin.git。我们需要为一个文件加上可执行权限:
$sudo chmod 755 /opt/git/gitosis-admin.git/hooks/post-update

我们在服务器上新建一个空的项目仓库供大家测试一下,我建了一个叫“teamwork”的仓库。
切换到git用户:
$ su - git
$ cd /opt/git
$ mkdir teamwork.git
$ cd teamwork.git
$ git init --bare

在你自己的电脑里,把gitosis-admin.git这个仓库clone下来,这样你就可以以管理员的身份修改配置了。
在你的电脑里:
$ git clone git@git-server-ip:gitosis-admin.git
$ cd gitosis-admin

现在把你们team所有人的ssh公钥文件都拿来,按名字命名一下,比如kevin.pub, cindy.pub, peng.pub等,统统拷贝到keydir下:
$ cp ~/kevin.pub ~/cindy.pub ~/peng.pub keydir/
修改gitosis.conf文件,我的配置大致如下:
[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = volans

[group team]
writable = teamwork
members = volans kevin cindy

[group team_ro]
readonly = teamwork
members = peng
这个配置文件表达了如下含义:gitosis-admin组成员有volans,该组对gitosis-admin仓库有读写权限;team组有 volans, kevin, cindy三个成员,改组对teamwork仓库有读写权限; team_ro组有peng一个成员,对teamwork仓库有只读权限。

当然目前这些配置文件的修改只是在你的本地,你必须推送到远程的gitserver上才能真正生效。
加入新文件、提交并push到git服务器:
$ git add .
$ git commit -am "add teamwork project and users"
$ git push origin master

好了,现在服务器就搭建完了,并且有一个空的项目teamwork在服务器上。接下来呢?当然是测试一下,空仓库是不能clone的,所以需要某一个有写权限的人初始化一个版本。就我来做吧

$ cd
$ mkdir teamwork-ori
$ cd teamwork-ori
$ git init
$ echo "/*add what you want*/" > main.c
$ git add .
$ git commit -am "initial version"
$ git remote add oringin git@git-server-ip:teamwork.git
$ git push origin master

到此为止teamwork已经有了一个版本了,team的其他成员只要先clone一下teamwork仓库,就可以任意玩儿了。
$ git clone git@git@git-server-ip:teamwork.git


另外:如果你有一个现成的git仓库,想放到gitserver上供team使用(比如你clone了一个官方的kernel仓库,想在内部使用它作为基础仓库),怎么办呢。
首先需要从你的工作仓库中得到一个纯仓库, 比如你的工作目录为~/kernel, 你想导出纯仓库到你的优盘里,然后拷贝到gitserver上去。
$ git clone --vare ~/kernel /media/udisk
然后就拿着优盘,交给gitserver的管理员,让他拷贝到/opt/git/下,同时需要配置gitosis相关配置文件哦,这个就不用再说了吧。

-------------

配置Git服务器的几种方法

首先大家要明确Git是分布式的版本控制系统,实际上是不需要固定的服务器的。简单的配置只要把git项目的放在局域网服务器的共享文件夹就行。

1. Gitosis,在ubuntu上设置http://blog.agdunn.net/?p=277
2. gitolite:在ubuntu上设置http://realcnbs.com/2010/12/setup-git-server-gitolite-ubuntu/
3. webdav:配置方法:http://www.kernel.org/pub/software/scm/git/docs/howto/setup-git-server-over-http.txt 
4. Git daemon 一个简单的git库管理服务软件http://www.kernel.org/pub/software/scm/git/docs/git-daemon.html
5. 使用第三方服务repo.or.cz, Github或者gitorious

欢迎大家补充其他方法。

我自己是在amazon ec2上使用gitolite配置的服务,同时使用了Github和gitorious

转载于:https://www.cnblogs.com/shenhaocn/archive/2011/04/07/2007759.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GIT服务器配置 的相关文章

  • Git合并策略:空格使默认显示不冲突并带来意想不到的结果

    经过多次试验 我得到了这个简单的测试用例场景 a gt b gt c master gt d gt b gt e branch Where b 是樱桃精选b e is a merge from master b 之后完成c and c对相同
  • Xcode - 使用 SSH 身份验证添加存储库时出现身份验证失败错误

    我正在尝试通过 Xcode gt 设置 gt 帐户添加存储库 但我被困在正确的地址上 我们的存储库地址非常简单 my domain com port project name 通过 SSH 密钥进行身份验证 有人可以帮助我了解这里发生了什么
  • GIT:向非当前分支添加本地更改

    我通常会遇到这样的情况 我做了一些本地更改 却发现我在错误的分支上进行了更改 因此我需要在提交之前切换分支 问题是当有本地更改时我无法切换分支 有办法做到这一点吗 显然 我可以复制更新的文件 切换分支 然后将它们复制回来 但这看起来并不聪明
  • 无法使用 Git Bash 对 Visual Studio Team Services 进行身份验证

    由于身份验证失败 我无法对 Visual Studio Team Services VSTS 上的远程存储库运行任何命令 我可以通过 Visual Studio 进行拉取等操作 但只能通过 Visual Studio 不通过 Git Bas
  • 将更改从通用差异导入 git 存储库

    我正在尝试将更改从一个源代码控制系统 专有且复杂 导入到 git 存储库中 我目前正在通过运行一个脚本来执行此操作 该脚本只是按顺序同步到每个修订版并将其提交到 git 存储库 但由于各种原因 这已变得不可行 对于每个修订版 我都可以获得描
  • GIT 中的 Fastlane 应用程序文件?如何检索当前的 apple_id?

    我为我的 XCode 项目设置了 Fastlane 来实现构建自动化 至少 Fastfile 包含构建选项 应该位于 GIT 中 但我也很高兴 Appfile 团队标识符 也位于 GIT 中 主要问题 Appfile 应该包含我的 appl
  • Git Add - 致命:添加文件失败

    我的 git cmd exe 窗口如下所示 git add NextFolder error unable to create temporary file No such file or directory error NextFolde
  • 将存储库移至另一台计算机

    我已将存储库从计算机 A 移至计算机 B 我已验证等待推送的提交仍在 B 上 但整个存储库 每个文件 均未暂存 我不想添加它们并将它们作为提交推送 因为从复制存储库到粘贴它 我没有更改每个文件 当我移动存储库时 它只有等待推送的提交 而不是
  • egit:设置gitignore忽略所有eclipse项目文件

    我在 github 上有一个项目 我想从中删除所有与 eclipse 相关的文件 并允许克隆它的人使用他们想要的任何 ide 这是该项目 https github com vedi0boy Archipelo https github co
  • 在 Xcode 9 上切换分支

    我无法找到使用 Xcode 9 切换分支的菜单项 工作副本菜单似乎已经消失 有任何想法吗 Xcode 9 Xcode 8 Press 2 to open the new Source Control Navigator 右键单击master
  • git log 不按时间顺序排列

    我在一个公共项目 B2G 又名 FirefosOS 上意外发现 git log 输出不是按时间顺序排列的 git clone https git mozilla org releases gecko git git log graph fo
  • 使 .git 目录 web 不可访问

    我有一个网站 我使用 github 闭源 来跟踪更改和更新网站 唯一的问题是 git 目录似乎可以通过网络访问 我怎样才能停止这个并且仍然能够使用 git 我应该使用 htaccess 吗 我应该更改 git 的权限吗 把这个放在一个 ht
  • VS2013 - GIT 不工作

    我最近安装了VS2013 每当我尝试使用 GIT 执行任何操作时 我都会在输出窗口中收到以下两条消息 libgit2 引发错误 类别 未知 错误 本机库未提供错误消息 该问题可能主要出现在远程存储库获取中 在克隆远程存储库之前 请打开远程
  • Git 身份验证 - 以新用户身份拉取

    以下命令集可以正常工作 mkdir carboncake cd carboncake git init git remote add origin email protected cdn cgi l email protection rep
  • 如何设置“阅读文档”以使 Sphinx autodoc 选项发挥作用?

    我的项目不是使用 autodoc 构建的 我遇到了关于我的项目未在 autodoc 中构建的常见问题 https read the docs readthedocs org en latest faq html my project isn
  • 运行 flutter doctor 吐出错误:标准错误:致命:坏对象 HEAD

    我已经从官方网站安装了 Flutter 和 Android Studio 我是 Git GitHub 移动开发和 Android 开发的新手 我试图在命令提示符 Windows 10 中运行 flutter doctor 命令 但是 它会以
  • 在 git 中管理 schema.rb 的首选方法是什么?

    我不想添加schema rb to gitignore 因为我希望能够从该文件加载新的数据库架构 然而 保持检查状态会导致各种虚假冲突 而这些冲突很容易通过新的解决方案解决 db migrate reset 基本上我想要一种方法 将 sch
  • 每个分支的 Git 磁盘使用情况

    你知道是否有办法列出每个分支的 git 存储库的空间使用情况 喜欢df or du would 分支的 空间使用情况 是指 尚未在存储库的其他分支之间共享的提交所使用的空间 这没有正确的答案 如果您查看仅包含在特定分支中的提交 您将获得 b
  • 如何与其他用户共享 bitbucket 存储库?

    我正在使用 Bit 存储桶 并且我想与一位朋友分享我的存储库 我用的是免费的个人账户 似乎有一个选项可以在位桶中创建团队 但它说它将把我的帐户从个人帐户转换为团队帐户 我不要那个 我如何授予其他用户访问此存储库的权限 有一个共享链接选项 如
  • 如何防止克隆我的 github 存储库?

    我正在尝试找到一种方法来防止从 github 存储库克隆 例如 我有一个私有存储库 有些人在该存储库中工作 在公司计算机中 团队中的每个人都设置了授权级别 当我在 github 上为某个用户设置授权时 该存储库可在他 她自己的 github

随机推荐

  • 测试用例设计方案

    以淘宝加入购物车为例 xff1a 1 看整个流程分为几个节点 xff1a a 选择物品 b 点击加入购物车 c 查看购物车 结果验证 2 根据每个节点的输入输出设计场景 a 选择物品的场景的影响因素 xff1a 请求来源 设备 账号 库存
  • CSS transform中的rotate的旋转中心怎么设置

    transform origin 属性 默认情况 xff0c 变形的原点在元素的中心点 xff0c 或者是元素X轴和Y轴的50 处 我们没有使用transform origin改变元素原点位置的情况下 xff0c CSS变形进行的旋转 移位
  • 松耦合和紧耦合

    Question 首先 xff0c 明确一点 xff0c 什么是松耦合 xff1f 什么是紧耦合 xff1f Answer 比如说两个模块 xff0c A模块和B模块 xff0c 当两者的关联非常多的时候 xff0c 就叫紧耦合 xff0c
  • 把pandas dataframe转为list方法

    把pandas dataframe转为list方法 先用numpy的 array 转为ndarray类型 xff0c 再用tolist 函数转为list 转载于 https www cnblogs com lichunl p 9622923
  • docker容器中使用top、free命令查看容器真实cpu和内存使用情况的实践

    参考 xff1a https www colabug com 1759782 html 转载于 https www cnblogs com robinunix p 10482908 html
  • 人性的弱点之情商

    处理好人际关系 真诚赞美他人 xff0c 不要过度批评他人 赢得他人喜爱的4个方式 xff1a 真诚关注他人 记住名字和生日 建立好的第一印象 保持微笑 善谈就是倾听 迎合对方兴趣 让他人为你所用 xff1a 避免争论 避免树敌 坦率承认自
  • 小米笔记本进入安全模式比较靠谱的方法

    在锁屏界面 xff0c 按住shift按键 xff0c 然后右下角进入重启就可以进入win10恢复模式 转载于 https www cnblogs com yang xiansen p 10471358 html
  • pytorch 中Tensor.uniform_代替numpy.random.uniform

    uniform from 61 0 to 61 1 Tensor 将tensor用从均匀分布中抽样得到的值填充 例如 a 61 torch Tensor 2 3 uniform 1 1 转载于 https www cnblogs com z
  • STM32 嵌入式操作系统的进入 HardFault_Handler分析

    STM32在使用中 xff0c 因为一般没有其他异常抛出 xff0c 所以抛出异常一般都是HardFault Handler 导致产生该现象的原因有一下几点 xff1a 1 数组越界操作 xff1b 2 内存溢出 xff0c 访问越界 xf
  • Linux批量加连续端口映射,批量端口映射

    内网ip 10 199 2 12 虚拟机网络 192 168 10 0 24 内网访问示例 xff0c 如访问ip为192 168 10 20的虚拟机 xff0c 远程桌面 10 199 2 12 6020 vnc 10 199 2 12
  • 想做Linux/Unix下的软件开发

    我学Linux Unix已经有段时间了 xff0c 工作中我也会写些Shell Script去完成一些任务 但是Linux Unix下的应用我还是没有开发过的 xff0c 基本上是拿来主义 xff0c 直接用别人开发好的软件包 其中最根本的
  • mpu和嵌入式linux区别,详解DSP、MCU、MPU的区别

    详解DSP MCU MPU的区别 2018年09月10日 11 17 57来源 xff1a 网络关键词 xff1a 嵌入式操作系统 CPU Central Processing Unit xff0c 中央处理器 发展出来三个分枝 xff0c
  • ug支持linux系统吗,Linux 黑话解释:什么是长期支持(LTS)版本?什么是 Ubuntu LTS?...

    在 Linux 的世界里 xff0c 特别是谈到 Ubuntu 的时候 xff0c 你会遇到 LTS 长期支持Long Term Support 这个词 如果你是一个经验丰富的 Linux 用户 xff0c 你可能知道 Linux 发行版的
  • ROS学习笔记十二:使用gazebo在ROS中仿真

    想要在ROS系统中对我们的机器人进行仿真 xff0c 需要使用gazebo gazebo是一种适用于复杂室内多机器人和室外环境的仿真环境 它能够在三维环境中对多个机器人 传感器及物体进行仿真 xff0c 产生实际传感器反馈和物体之间的物理响
  • 数学公式转换为图形的网站

    https www desmos com 贴一个动态图 xff0c 感受一下数学的魅力 转载于 https www cnblogs com lishidefengchen p 11089649 html
  • 激光雷达--看图

    转载于 https www cnblogs com tiandi p 10057244 html
  • css不常用属性

    1 出现滑动使用overflow xff1b 2 左右居中最常用的两种方法是margin 0 auto和text align center 3 透明背景使用transparent属性而不是使用rgba中的透明度数值来调节 4 文字连字符样式
  • 记录第一次互联网面经Momenta

    作为车辆的学渣 xff0c 去年开始研究图像算法 xff0c 也是第一次面纯做自动驾驶的公司 xff0c 留个纪念吧 1 简历过了第二天 xff0c HR就给打电话了 xff0c 还是非常效率的 xff0c 简单聊了两句就约了面试的时间 2
  • 大学学计算机专业高中怎样选课,高中选课大学对应专业 选什么科目能学的专业多...

    高中选课大学对应什么专业呢 xff0c 选什么科目大学可以选的专业多呢 xff0c 哪些组合是不推荐选择的呢 xff0c 下面小编为大家分析一下 xff0c 仅供大家参考 高中选课大学对应什么专业 新高考怎样选择学习的学科 第一 xff0c
  • GIT服务器配置

    GIT server build up 前几天说的任务启动了 xff0c 虽然server还在采购流程中 但已经在一台PC机上搞起来 xff0c 供小组内部测试啦 在此把过程记录下来吧 xff1a 硬件需求 xff1a 一台linux电脑