我有一个现有的Gitolite配置,包含许多用户和存储库.它是以Gitolite安装指南建议的默认方式设置的.现在我想添加GitLab以便能够进行代码审查和错误跟踪.
实现这一目标最方便的方法是什么?
请原谅令人沮丧的事情,因为我试图多次正确设置这个设置无济于事(可能并且很可能是由于我的无知,但也可能是由于缺乏详尽而简洁的文档).
我正在尝试设置一个git服务器,以便我可以在一小组开发人员之间共享代码.每个开发人员可以从多个客户端PC连接.我过去来自MS,所以我在开发工具集方面有点被宠坏了,但如果我能得到类似于TFS的东西,它会很棒.
当试图设置gitosis(我明白这是git社区每个https://serverfault.com/questions/225495/ubuntu-server-gitosis-user-naming-convention)或gitolite,这似乎是一旦我设置它,我必须非常小心,因为似乎一切都在牙签上保持平衡.
我最近设置git服务器的尝试包括将我的公钥(benny.pub)从我的笔记本电脑移动到服务器,使用该公钥设置所有内容并下拉配置以设置repo和权限.然后我意识到我想在另一台PC上开发,所以我创建了一个新密钥(benny@desktop.pub)并将benny.pub重命名为benny@laptop.pub,这显然搞砸了.这就是我知道通过改名来愚蠢的地方.
在冗长的描述之后我的问题是:我如何设置一个坚固的自托管git服务器,能够让多个开发人员从多台机器登录,同时保持安全性等?必须有一种经过验证的技术(噱头描述可能4-5种不同的方式......也令人沮丧)这样做,因为我确信我不是唯一一个试图做同样事情的人.也许git不适合我的团队?
任何帮助是极大的赞赏!
我刚刚安装了gitolite但是当我推送存储库gitolite-admin时出现错误:
git push
Counting objects: 9, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (7/7), 605 bytes, done.
Total 7 (delta 1), reused 0 (delta 0)
remote: Empty compile time value given to use lib at hooks/update line 6
remote: Use of uninitialized value in require at hooks/update line 7.
remote: Can't locate Gitolite/Hooks/Update.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at hooks/update line 7.
remote: …Run Code Online (Sandbox Code Playgroud) 我正在尝试让GitLab在我的服务器上运行.我按照gitlab github页面上的安装说明进行操作,一切顺利.
问题是,当我创建一个回购并尝试
sudo git push -u origin master
Run Code Online (Sandbox Code Playgroud)
我被提示输入'git @ localhost的密码:'
git用户没有密码,所以这是一个问题.
其他遇到此问题的人建议在我的sshd conf中添加git给AllowedUsers,但我没有AllowedUsers字段,所以这似乎不是问题.
我仍然是ssh的新手,所以我相信它的某些ssh密钥问题,虽然我试图将所有相关的ssh密钥添加到/home/git/.ssh/authorized_keys并验证文件中没有换行符.
仅供参考,我的安装完全通过了gitlab wiki中提供的测试:
sudo -u gitlab bundle exec rake gitlab:app:status RAILS_ENV=production
Run Code Online (Sandbox Code Playgroud)
任何建议非常感谢!
编辑
所以,我终于通过承诺来自不同机器的回购来解决这个问题.事实上,我被连接到运行gitlab的同一台机器上.一旦我尝试从主机以外的机器提交,它就很有效.因此,对于某些人来说,这可能是一个解决方案(对我们而言,因为我们在单独的机器上开发而不是我们的服务器).
对于任何试图在同一台机器上托管和开发的人来说,这仍然是一个开放性的问题.
有没有人尝试过gitolite的简易安装选项?
我正在尝试从我的窗户(工作站)安装gitolite到solaris盒子.
[command used to install]
./gl-easy-install -q git sjcfsap1 git
Run Code Online (Sandbox Code Playgroud)
该命令在以下位置中断.
*Y*ou are logging into system : [gitserver]
cloning gitolite-admin repo...
Initialized empty Git repository in c:/Documents and Settings/chandve/gitolite-a
dmin/.git/
Password:
fatal: 'gitolite-admin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly**
Run Code Online (Sandbox Code Playgroud)
有没有人遇到过这个问题?你觉得gitolite值得这个努力吗?我期待为Git评估ACL.
感谢您的回复.
[下面的完整命令执行日志]
CHANDVE@CHANDVE /c/git/repos/gitolite/src (master)
$ ./gl-easy-install git sjcfsap1 git
------------------------------------------------------------------------
you are upgrading v1.5.3-13-g20c2e1a to v1.5.3-13-g20c2e1a
Note: getting '(unknown)' for the 'from' version should only happen once.
Getting '(unknown)' …Run Code Online (Sandbox Code Playgroud) 我正在使用post-receive-emailGit发行版中的钩子在Git存储库更新(从中调用钩子post-receive)时向某些用户发送电子邮件.
我的所有存储库都是手动管理的.现在,我得到了很多回购和许多用户和组,我必须升级到一些Git存储库管理系统.我选了Gitolite.
但我对如何配置电子邮件通知有点不知所措.
更新:我将详细阐述一下这个问题:
第一个问题是:我应该把钩子放在哪里,我应该以某种方式改变它以便它可以与Gitolite一起使用?
第二个问题:
标准post-receive-email挂钩取决于三个参数*.git/config:hooks.envelopesender,hooks.emailprefix和hooks.mailinglist.
对于我在Gitolite下移动的每个存储库,这些参数通常是不同的.实际上,对于相同的权限组,它们是相同的 - 用户可以访问存储库,接收通知,而其他权限则不是.
我想避免config手动编辑每个存储库的文件.如果我可以在整个Gitolite的同一个集中位置配置所有内容,那会更有趣.
那么,有什么提示吗?
我正在尝试设置Gitolite,但我遇到了一个奇怪的问题:
当我为新用户添加一个新的公钥文件(比如raphaelcruzeiro.pub)时,giolite在push上发出以下警告:
remote:
remote: ***** WARNING *****
remote: the following users (pubkey files in parens) do not appear in the config file:
remote: raphaelcruzeiro(raphaelcruzeiro.pub)
Run Code Online (Sandbox Code Playgroud)
当我尝试使用此用户克隆存储库时,我获得了拒绝权限:
Cloning into gitolite-admin...
R access for gitolite-admin DENIED to raphaelcruzeiro
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么吗?在何处以及如何将用户添加到配置文件中?
不幸的是,Gitolite的文档在这个问题上相当模糊.
我已经安装了gitolite(现在是本地的,用于实验),它似乎有效,除了新的存储库在git clone之后没有默认跟踪远程.如果我没记错的话,当我从github.com克隆一个存储库时,它已经能够推送.
这是我尝试过的:
$ git clone git@localhost:sandbox
Cloning into sandbox...
warning: You appear to have cloned an empty repository.
$ echo "A" > README
$ git add README
$ git commit README -m 'test'
$ git push
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'git@localhost:sandbox'
Run Code Online (Sandbox Code Playgroud)
当我尝试明确推送一切正常时:
$ git push origin master
Counting objects: 6, done. …Run Code Online (Sandbox Code Playgroud) 我已经设置了Git和Gitolite,并且在某些时候我记得曾在其中一个配置文件中看到过"umask"设置.这是否为我使用Git同步的所有文件设置了权限?这正是我所需要的.我在哪里可以找到它?
我在我的Ubuntu服务器上设置了gitolite,可以添加用户,创建空存储库,克隆空存储库,添加文件,在本地提交,并将git push origin master其发送到gitolite.
我还可以在XCode4中创建一个项目,它有自己的git存储库,并在本地提交更改.
现在我想在gitolite中有另一个副本(可能其他人可以使用,但也可以作为另一个副本).这就是我被困住的地方,我是git的完全新手(只是真的使用过XCode git功能).有人可以指导我吗?