我发现你的文章使用Apache Auth和gitweg gitweb.
我想知道如果我没有使用LDAP进行身份验证,是否有办法做到这一点.我们目前有一个非常大的NIS域,我们用它来在所有unix服务器上进行身份验证.我们通过UI将其用于SVN存储库,但对于这种情况,我试图满足以下要求:
我首先想到的是我需要让Gitweb和Gitolite一起玩,每个人现在都可以单独工作.
如果gitolite使用SSH密钥提供访问权限,那么它可以通过为用户/开发人员访问Gitweb/gitolite的每台机器提供密钥来提供访问权限.
或者,如果我可以让gitweb简单地从NIS域验证用户,因为每个用户都有一个我们的IT部门设置的帐户,这样会更好.
我可以使用任何想法或howtos来进一步了解这个要求?
我用了安装gitolite
apt-get install gitolite
Run Code Online (Sandbox Code Playgroud)
根据本教程(和许多其他人),应该有一个gitolite用户,但当我这样做
su - gitolite
Run Code Online (Sandbox Code Playgroud)
我得到了未知的身份:gitolite
我需要手动创建吗?我必须补充一点,这是我第二次尝试安装gitolite,所以我先删除它然后重新安装它.也许有一些东西没有删除?
是否有可能很好地版本和跟踪git钩子?我可以在服务器上的hook文件夹下安全地拥有另一个(嵌套的)git存储库吗?
我使用本教程在服务器上安装了gitolite .这属于"非根"方法.
当我尝试将gitolite-admin克隆回我的客户端时,它失败了.我收到此错误消息:
git clone gitolite@server.com:gitolite-admin
Cloning into gitolite-admin...
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
也:
git clone ssh://gitolite@server.com:gitolite-admin
Cloning into gitolite0admin...
Using username "git-upload-pack 'gitolite".
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
我也尝试追加.git到repo名称的末尾,并且我也尝试添加repositories/gitolite-admin(由上面链接的教程中的错误建议)以及这两者的组合并且都没有工作.我在谷歌上找不到关于"使用用户名"位的结果,这引起了我的兴趣.
我可以通过SSH连接到本机,它告诉我,我有机会与R和W gitolite-admin.那么,SSH正在运作?
我有gitolite和当前创建的测试存储库和配置的用户权限,一切正常.
我现在想要的是使用git cvsimport将cvs存储库迁移到git.我有新迁移的存储库.我如何通过gitolite配置此存储库并为此存储库配置用户?
请指导我正确的方向!!
我正在尝试在CentOS Linux上设置gitlist(如果重要的话,请使用gitolite - 我放宽了对gitolite管理的repo目录的权限).
我从今天开始从gitlist.org中提取了0.3版tarball.
我的config.ini看起来像这样:
client = '/usr/bin/git' ; Your git executable path
repositories = '/home/gitolite/repositories/' ; Path to your repositories
[app]
debug = true
; I don't know if baseurl is still needed..seems like my results are the same either way
baseurl = 'http://sub.example.com.com/gitlist' ; Base URL of the application
Run Code Online (Sandbox Code Playgroud)
httpd.conf中的虚拟主机指令:
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName sub.example.com
<Directory "/var/www/html">
AllowOverride All
Options -Indexes
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
htaccess的:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /var/www/html/gitlist/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule …Run Code Online (Sandbox Code Playgroud) 在我的gitolite.conf中,我可以设置
repo COOL_REPOSITORY
RW+ = me
R = @all
Run Code Online (Sandbox Code Playgroud)
这给了我写权限,所有其他注册用户都对我的存储库具有读权限。现在我的问题是,我可以将所有人的ssh-key存储在我的keydir中,而不是授予我已注册的所有用户读权限吗?
我正在尝试在 CentOS linux 服务器中为我们的开发安装 git 和 gitolite。到目前为止,一切都运行正常,除了我使用以下命令为 gitolite 定义管理员用户的步骤:
gitolite setup -pk /tmp/id_rsa.pub
FATAL: errors found but logfile could not be created
FATAL: /home/git/.gitolite/logs/gitolite-2013-05.log: No such file or directory
FATAL: die '/tmp/id_rsa.pub' does not seem to be a valid ssh pubkey file
Run Code Online (Sandbox Code Playgroud)
看起来像两个错误;在/home/git/这里只有这些文件
.gitolite.rc
.bashrc
.bash_profile
.bash_logout
Run Code Online (Sandbox Code Playgroud)
其次(这似乎是问题所在)是 pub_key 无效。但是,根据 git book 文件看起来很相似。我是这样生成的:
在我的电脑(不是服务器)上安装 git
从 git bash:
ssh-keygen.exe (默认路径) (没有密码) (没有密码)
我通过名为 WinSCP 的程序将生成的 .pub 文件复制到服务器上的 tmp 目录。
我做错了什么?我在谷歌中找不到答案。
附注。如果您需要更多信息,请告诉我。
将文件推送到我们的服务器后,将执行以下 post-receive 挂钩:
#!/bin/sh
export GIT_WORK_TREE=/home/user/www/
git checkout -f
Run Code Online (Sandbox Code Playgroud)
但是,文件在结帐时获得了非常奇怪的600权限和文件夹700。这不是我所期望的(在我们的其他服务器上,我们得到644和755)。从这个线程我了解到 git 没有设置权限,所以 git 不应该受到责备。我的问题是:什么是?我怎样才能弄清楚这个问题的原因是什么?
我已经通过在结帐时运行额外的脚本来修复权限来暂时解决它,但我有兴趣解决根本原因。
我正在使用 gitolite 来管理存储库,但我怀疑这是原因。但同样,我很高兴知道我可以从哪里开始,因为此时我不确定如何调查。
根据最初的答案,我查看了服务器上的 umask 设置。该git用户(这是用来上传文件的用户),umask设置为0002。这在下面的练习证实:
git@server:~$ umask
0002
git@server:~$ touch newfile
git@server:~$ ls -la newfile
-rw-rw-r-- 1 git git 0 Aug 5 10:46 newfile
Run Code Online (Sandbox Code Playgroud)
额外细节:
我正试图在我的LEDE-Project路由器上运行Gitolite.我已按照此处提供的说明将令人满意的依赖项安装到我的路由器上.我的路由器报告Git版本2.11.0,我正在运行它的计算机.可以在这里找到 GIT on LEDE-Project和OpenWRT的包,因为他们正在共享这些回购.
当我以Gitolite方式创建一个新的存储库时,我收到类似于此的错误消息:
2017-03-06.03:11:23 28046 die/symlink /root/.gitolite/hooks/common/update to gitolite-admin.git/hooks <> at/root/gitolite/src/lib/Gitolite/Conf/Store .pm第368行.<>
经过一夜好眠,我最终将这个原因归结为这个特定的邮件列表帖子,这表明它git init --bare没有生成正确的目录.
在空目录中尝试"git init --bare"并告诉我你是否看到.git/hooks目录.
假设你没有,你将不得不以某种方式解决这个问题.Gitolite期望'git init --bare'来创建一个hooks目录.
似乎是一个合理的假设.我的机器做得很好.
git init --bare foo
Initialized empty Git repository in /home/makoto/workspace/foo/foo/
cd ~/foo
ls -la
drwxrwxr-x 7 makoto makoto 4096 Mar 6 13:15 .
drwxrwxr-x 3 makoto makoto 4096 Mar 6 13:15 ..
drwxrwxr-x 2 makoto makoto 4096 Mar 6 13:15 branches
-rw-rw-r-- 1 makoto makoto 66 Mar 6 13:15 …Run Code Online (Sandbox Code Playgroud)