我已经安装了git和gitosis,我需要添加一个检查,当某些东西被推入存储库时,用户名是有效的.
我认为预接收挂钩是放置它的正确钩子,但是我无法找到gitosis进入存储库的真实用户名和电子邮件地址(由git config user.name和git config user设置的那些).电子邮件)来自环境变量.LOGNAME和USER都是'git'.gitosis如何检测此信息,我是否也可以在预接收挂钩中找到它?
我们使用带有中央仓库的git(使用Gitosis).我已经创建了一个post-receive挂钩,只要将更改推送到中央存储库,就会生成一封发送到dev邮件列表的电子邮件,并从git repo中的文档文件夹生成文档.
因此,在~git /我有一个目录,我们称之为'a',其中包含git repo的克隆.后接收挂钩看起来像:
#!/bin/bash
cd ~git/repositories/a.git
. ~git/post-receive-email &> /dev/null
( cd ~git/a && git pull &> ~git/pull_log.log && php ~git/a/scripts/generate_markdown_documentation.php &> ~git/doc_log.log )
Run Code Online (Sandbox Code Playgroud)
电子邮件脚本正在运行,但文档生成却没有.pull_log.log的内容是:
fatal: Not a git repository: '.'
Run Code Online (Sandbox Code Playgroud)
这让我觉得它没有改变到上面脚本第5行的正确目录.我错了吗?我怎样才能让它发挥作用?
编辑:我已按照回复中的建议更新了post-receive hook.该脚本现在是:
#!/bin/bash
function die {
echo "$*" >&2; exit 1
}
function checkgit {
[ -d "$1/.git" ] || die "$1 could not possibly be a git repo; $1/.git is not a dir"
}
cd ~git/repositories/a.git
. ~git/post-receive-email &> /dev/null
( set -x
checkgit …Run Code Online (Sandbox Code Playgroud) In git/gitosis a single ssh key is stored with the filename the same as user name.
i.e. myusername.pub
If I want to access a repository from many machines, must I make a new user from each location or is there a way to have multiple ssh keys for a single user.
最初我尝试使用gitosis管理公司的git存储库,后来注意到gitolite是一种增强gitosis.
而且我也听说过gerrit可以用于同一目的,但从描述来看,gerrit主要用于代码审查.
那么这是设置git服务器的最佳方式
你能提一些建议吗?
BTW:http://gitorious.org/将来会被考虑
我已经使用git和gitosis几个月了,我真的很喜欢这两个.不幸的是,我在使用gitosis访问我的一个项目时遇到了问题.
我在运行Debian的托管服务器帐户上设置了我的git和gitosis安装.我还设置了四台带有单独rsa密钥的计算机(两台Ubuntu,两台Windows),并成功设置每台计算机以访问gitosis安装.一切都顺利进行了一段时间.但是,最近,我无法以任何方式访问我的"DesktopConfiguration"项目(推,拉,克隆).我最初在我的一台Linux机器上创建了DesktopConfiguration项目,将其推送到gitosis服务器,并将其克隆到我的一台Windows机器上.直到最近(过去两周左右)我才能访问它.以下是我的gitosis.conf文件和我收到的错误消息(无论我尝试使用Windows或Linux框推送,拉取还是克隆,错误消息都是相同的):
[gitosis]
loglevel = DEBUG
[group gitosis-admin]
writable = gitosis-admin
members = windows-desktop linux-desktop linux-laptop work-laptop
[group main-projects]
writable = WallpaperChanger
writable = RegexTester
writable = MovieAggregator
writable = FileRenamer
writable = GlutenFreeShoppingAssistant
writable = Libraries
writable = DesktopConfiguration
writable = RssFeedReader
members = windows-desktop linux-desktop linux-laptop work-laptop
Run Code Online (Sandbox Code Playgroud)
C:\Documents and Settings\myname\Desktop\Desktop Config Test>git clone git@myserver:DesktopConfiguration.git
Initialized empty Git repository in C:/Documents and Settings/myname/Desktop/Desktop Config Test/DesktopConfiguration/.git/
DEBUG:gitosis.serve.main:Got command "git-upload-pack 'DesktopConfiguration.git'"
DEBUG:gitosis.access.haveAccess:Access check for 'work-laptop' as …Run Code Online (Sandbox Code Playgroud) 使用gitosis,是否可以指定写入权限,以便用户可以使用自己的名称自由推送到分支,但不能与主服务器合并?例如$ USER/test1 .. $ USER/test5
这意味着您可以为每个项目仅托管一个存储库,而不是为同一项目托管多个存储库,特定于每个用户:
project1-user1
project1-user2
project1-user3
...
project5-user1
project5-user2
project5-user3
Run Code Online (Sandbox Code Playgroud) 在尝试在Ubuntu上配置gitosis时,我遇到了一些问题.当我运行此命令
git clone gitosis@host:gitosis-admin.git
Run Code Online (Sandbox Code Playgroud)
对于我使用的本地机器git clone git@59.80.70.68:gitosis-admin.git,59.80.70.68是服务器的IP.但是我遇到了密码问题.我尝试输入服务器机器的密码,但它失败了
请帮助我.
我的macbook上有一个SSH隧道设置,就像这样......
$ ssh -o ServerAliveInterval=3 -N -L 22222:gitosis-server:22 user@firewall.domain.com
所以我可以ssh到localhost:22222并最终将防火墙后面的gitosis服务器.
我创建了一个本地id_rsa.pub文件,将其复制到gitosis服务器(运行Centos5),然后使用...将其导入gitosis.
# sudo -H -u gitosis gitosis-initIt was successful as I can see the public key in /var/lib/gitosis/.ssh/authorized_keys.
Back on my macbook I setup a ~/.ssh/config file with the following...Host gitosis-server Hostname localhost HostKeyAlias gitosis-server.domain.com Port 22222所以...我认为这个命令应该有效......
$ git clone gitosis@gitosis-server:gitosis-admin.git然而,它不会因为它要求输入密码....当公钥应该工作时.
Initialized empty Git repository in /Users/USER/Development/gitrepo/gitosis-admin/.git/ gitosis@localhost's password:关于让git工作到防火墙后面的gitosis服务器的任何想法?
谢谢,
马特
编辑 - 从SSH尝试添加调试
我做了这个命令,'ssh -vvv gitosis @ gitosis-server'.我得到了一些调试,它似乎不喜欢我的身份.
debug2: key: /Users/USER/.ssh/id_rsa.gitosis (0x1019b0) debug1: Authentications …
我有一些人在Windows下,他们需要一个公共/私人RSA密钥对,以便让他们通过GIT服务器gistosis进行身份验证.我们使用SmartGit作为GIT GUI,此工具要求私钥采用OpenSSH格式.
使用puttyGen,我已经能够获得一个openssh 公钥,它打印在窗口中,但不是私钥.我只能使用"保存"按钮保存私钥,并且它保存的格式与我们使用*nix工具的格式不同.
我们如何使用Windows工具生成VALID openssh兼容的公钥和私钥?
谢谢.
我对ubuntu并不大,但我设法在我的客户端设置git并在我感到自豪的服务器上gitosis.我将我的本地ssh公钥添加到gitosos的授权密钥,并且可以克隆,推送,提交等.一切正常,从我的本地机器到服务器 - 来回.
但是,由于服务器也充当我的网络服务器,我只需要连接到服务器并在我的一个webroot文件夹中创建一个"git clone git @ localhost:gitproject.git",但它根本不起作用.
我是否必须将服务器pub密钥添加到授权主机?如果是这样,怎么样?或者还有其他方法吗?
谢谢