如何搭建git服务器 windows

如何搭建git服务器 windows,第1张

GitLab是由Ruby语言开发的基于Linux的Git服务器,是我见过的最强大的Git服务器。发现它之后,立即决定将Git服务器换成GitLab。但安装好GitLab之后面临一个问题,如何将服务器上的git项目直接导入到GitLab,之前的Git服务器是由是git+apache搭建的(详见在Linux上用Apache搭建Git服务器)。在网上发现了这篇文档——ImportbarerepositoriesintoyourGitLabinstance,并按之进行了 *** 作。1)设置存放代码库的主目录vi/etc/gitlab/gitlabrb比如这里设置为:git_data_dir"/gitlab/repos"2)访问刚搭建的GitLab站点,创建一个group,比如cnblogs。这时会在/gitlab/repos下创建/gitlab/repos/repositories/cnblogs文件夹。然后在/gitlab/repos/repositories/创建一个文件夹,比如cnblogs3)将现有的所有git项目文件复制到这个文件夹cp-r/data/git//gitlab/repos/repositories/cnblogs4)修改一下复制过来的文件夹的所有者:chown-Rgit:git/gitlab/repos/repositories/cnblogs5)运行GitLab导入命令cd/var/opt/gitlabgitlab-rakegitlab:import:repos等了一段时间之后,显示done,却一个项目也没导入进来。经研究发现,在导入时,GitLab只认文件夹名以git结尾的项目。于是,将要导入的项目文件夹名称加上git后缀,再次进行导入。结果显示导入成功,比如:Processingcnblogs/CNBlogsJobgitCreatedCNBlogsJob(cnblogs/CNBlogsJobgit)Done!可以是GitLab站点上却看不到已导入的项目。多次努力,也没能解决这个问题。后来,实在没法,改为手动导入,导入方法如下:1)在GitLab站点上创建与要导入的项目同名的项目。2)进入刚创建的项目文件夹cd/gitlab/repos/repositories/cnblogs/项目名称git3)删除该文件下的所有文件rm-rf4)将要导入的项目文件夹下的所有文件复制过来cp-r/data/git/CNBlogsJob//gitlab/repos/repositories/cnblogs/CNBlogsJobgit就这样将项目一个一个地导入进来。5)导入完成后,修改一下导入的所有项目的文件所有者chown-Rgit:git/gitlab/repos/repositories/cnblogs如果不修改所有者,客户端无法进行gitpush。就这样手动地完成了现有Git项目的导入。备注: *** 作系统是CentOS62,GitLab版本是784。

通过以下的步骤,你将在服务器上搭建并使用你自己的Git服务,例如myhostexamplecom。其中的一些步骤,像email通知,限制用户的权限,特定分组的接入管理,都是依据你的要求和现实状况的可选项。还有很多命令,你需要root权限才能执行,所以别忘了用sudo,或者(最好不要)直接切换到root来执行。
为有读写权限的用户建立一个分组。根据你的 *** 作系统,你可以用groupadd命令来实现,用vigr来编辑分组文件,或者直接编辑/etc/group文件。在最后,你会在/etc/group文件中看到如下一行
repogroup::10005:marry,john,violet
其中,repogroup是准许接入这个仓库的组的名字。10005是一个独一无二的分组识别数字,marry,john,violet则是获准接入这个仓库的用户。
决定Git仓库的路径。它既可以放在你的home路径下(eg
/home/yourname/gitroot),也可以放在一个专用的路径下(eg
/var/gitroot)
配置权限,让Git用户可以访问这个目录
chmod
g+rx
/path-to/gitroot
chown
:grouprepo
/path-to/gitroot
建立新的Git仓库,叫做newrepo
cd
/path-to/gitroot
git
init
--bare
newrepogit
建立路径认证,以允许用户组访问,同时有针对性的设置Git
cd
newrepogit
chown
-R
:grouprepo

git
config
coresharedRepository
group
find

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

-type
f
-print0
|
xargs
-0
chmod
g=u
设置提交(commit)的email通知(commit是一条命令),这样当有新的修改提交到仓库的时候,开发者们将会收到一封关于修改内容一览的电子邮件。
echo
'One-line
project
description'
>description
git
config
--local
hooksmailinglist
email-a@examplecom,email-b@examplecom,
git
config
--local
hooksemailprefix
'[DI-PR]
'
git
config
--local
hooksshowrev
"git
show
-C
%s;
echo"
git
config
--local
hooksemailmaxlines
100
通过设置一个称为钩子(hook)的东东,来创建这些email通知。
cd
hooks
cp
post-receivesample
post-receive
chmod
+x
post-receive
从post-receive的脚本中移除掉最后一行注释的#字号,最后语句应该是这样的

/path-to-hooks/post-receive-email
在你的库中先放入一个文件(比如README)。为了避免其他用户在第一次提交时遇到奇怪的错误信息时感到困惑,这是有必要的。
cd
to-your-personal-working-directory
git
clone
myhostexamplecom:/path-to/gitroot/newrepogit
echo
"Short
project
description"
>READMEtxt
git
add
READMEtxt
git
commit
-a
-m
"Add
README
file"
git
push
origin
master
#
第一次仅仅需要T"origin
master"
这个参数
为仓库的其他用户建立账户。依据你系统的不同,你可以通过useradd
或者adduser来实现。
设置用户可以通过公/私钥配对来访问。这包括以下几步:
1)已经有公钥的用户,只需要把公钥发给你就好。
2)没有公钥的用户,必须用ssh-keygen命令来生成一个,然后把ssh/id_rsapub发给你就可以了。
3)之后你必须在他们对应的账户下面建立这种公/私钥配对。复制他的公钥,然后顺序执行下面的命令。
sudo
su
-
username
mkdir
-p
ssh
cat
>>ssh/authorized_keys
<<\EOF
paste-key-as-one-line
EOF
exit
改变用户的账户让他们使用受限的shell。如果你想让你添加进来的用户仅仅使用Git,而不是Unix的所有东西,那么就设置他们的账户,让他们只能使用Git。Git提供了这种专为这种需求设计的受限shell。它通常被安装在
/usr/libexec/git-core/git-shell
or
/usr/local/libexec/git-core/git-shell。因此,对所有你想限制权限的用户,你可以执行以下命令。
sudo
chsh
-s
/usr/libexec/git-core/git-shell
username
告诉你的用户,用下面的语句来克隆仓库到本地。
git
clone
myhostexamplecom:/path-to/gitroot/newrepogit
到了这里,恭喜你,你成功了!

1创建Gitblit安装目录 首先我们将在我们的服务器上建立一个目录,并在该目录下安装最新的Gitblit。 $ sudo mkdir -p /opt/gitblit $ cd /opt/gitblit 创建gitblit目录 2 下载并解压 现在,我们将从Gitblit官方站点下载最新版的Gitblit。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13455300.html

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

发表评论

登录后才能评论

评论列表(0条)

保存