如何在mac下远程搭建git服务器

如何在mac下远程搭建git服务器,第1张

为有读写权限的用户建立一个分组。根据你的操作系统,你可以用groupadd命令来实现,用vigr来编辑分组文件,或者直接编辑/etc/group文件。在最后,你会在/etc/group文件中看到如下一行

?

1

repogroup:*:10005:marry,john,violet

其中,repogroup是准许接入这个仓库的组的名字。10005是一个独一无二的分组识别数字,marry,john,violet则是获准接入这个仓库的用户。

决定Git仓库的路径。它既可以放在你的home路径下(e.g. /home/yourname/gitroot),也可以放在一个专用的路径下(e.g. /var/gitroot).

配置权限,让Git用户可以访问这个目录

?

1

2

chmod g+rx /path-to/gitroot

chown :grouprepo /path-to/gitroot

建立新的Git仓库,叫做newrepo

?

1

2

cd /path-to/gitroot

git init --bare newrepo.git

建立路径认证,以允许用户组访问,同时有针对性的设置Git

?

1

2

3

4

5

cd newrepo.git

chown -R :grouprepo .

git config core.sharedRepository group

find . -type d -print0 | xargs -0 chmod 2770

find . -type f -print0 | xargs -0 chmod g=u

设置提交(commit)的email通知(commit是一条命令),这样当有新的修改提交到仓库的时候,开发者们将会收到一封关于修改内容一览的电子邮件。

?

1

2

3

4

5

6

7

echo 'One-line project description' >description

git config --local hooks.mailinglist email-a@example.com<script cf-hash="f9e31" type="text/javascript">

/* <![CDATA[ */!function(){try{var t="currentScript"in document?document.currentScript:function(){for(var t=document.getElementsByTagName("script"),e=t.lengthe--)if(t[e].getAttribute("cf-hash"))return t[e]}()if(t&&t.previousSibling){var e,r,n,i,c=t.previousSibling,a=c.getAttribute("data-cfemail")if(a){for(e="",r=parseInt(a.substr(0,2),16),n=2a.length-nn+=2)i=parseInt(a.substr(n,2),16)^r,e+=String.fromCharCode(i)e=document.createTextNode(e),c.parentNode.replaceChild(e,c)}}}catch(u){}}()/* ]]>*/</script>,email-b@example.com<script cf-hash="f9e31" type="text/javascript">

/* <![CDATA[ */!function(){try{var t="currentScript"in document?document.currentScript:function(){for(var t=document.getElementsByTagName("script"),e=t.lengthe--)if(t[e].getAttribute("cf-hash"))return t[e]}()if(t&&t.previousSibling){var e,r,n,i,c=t.previousSibling,a=c.getAttribute("data-cfemail")if(a){for(e="",r=parseInt(a.substr(0,2),16),n=2a.length-nn+=2)i=parseInt(a.substr(n,2),16)^r,e+=String.fromCharCode(i)e=document.createTextNode(e),c.parentNode.replaceChild(e,c)}}}catch(u){}}()/* ]]>*/</script>,...

git config --local hooks.emailprefix '[DI-PR] '

git config --local hooks.showrev "git show -C %secho"

git config --local hooks.emailmaxlines 100

通过设置一个称为钩子(hook)的东东,来创建这些email通知。

首先这里我们安装openssh-server openssh-client,如果你用的是VPS之类的一般都默认安装好了,不过运行一个这个命令不会有错的,如果有安装就会提示已安装。

sudo apt-get -y install openssh-server openssh-client

安装git,在这个核心软件,不可或缺。

sudo apt-get -y install git

添加gitolite用户和同名用户组,加上--system参数,用户就不会在登陆界面显示。

sudo adduser --system --shell /bin/sh --group --disabled-password --home /home/gitolite gitolite

生成ssh key,一路回车下来。

ssh-keygen -t rsa

将你当前用户的ssh pub key复制到/tmp下备用,由于我用的是桌面版在同一台机器上。

cp ~/.ssh/id_rsa.pub /tmp/ubuntugege.pub

如果你是ssh远程登陆到服务器上安装,就要把你本地的key复制到远程的机器上

scp ~/.ssh/id_rsa.pub gitolite.server:/tmp/ubuntugege.pub

安装gitolite,在ubuntu中已经集成了,不用自己去下载。

sudo apt-get -y install gitolite

切换到gitolite用户环境中,因为我要以gitolite用户身份去初始化安装。

sudo su - gitolite

执行初始化安装gitolite。

gl-setup /tmp/ubuntugege.pub

把管理库gitolite-admin克隆过来就可以开始gitolite用户及代码库的管理了,如果不能克隆,那么就说明初始化的ssh pub key错了。

安装msysgit安装步骤此处略去。END安装CopSSH安装步骤此处略去。END修改配置修改CopSSH配置文件C:\Program Files\ICW\etc\sshd_config,确保如下行为非注释行,且设置为“no”:END生成用户帐号在服务器上生成Windows用户,取消用户下次登录时须更改密码,设置密码永不过期:将该用户隶属于GitUser组(如尚未生成改组,则先生成改组):


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/393000.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存