2013-01-04 118 views
1

我有一个Git仓库与多个用户。当他们推动时,我可以从客户端命令行读取参数吗?例如,用户名和密码?如何在hook中读取git push参数?

我在我的bash脚本中尝试了read,但它不起作用。我无法访问STDIN

如何在Git钩子(更新)中从客户端命令行读取某些内容?

回答

1

编号Git不做任何验证。 (请参阅“Distributed Version Control Systems and the Enterprise - a Good mix?‘)

您可以从HTTPS会话或SSH一个获得用户ID(如果~git/.ssh/authorized_keys文件中包含的信息):这是什么gitolite做:详见’How do programs like gitolite work?”。

你不一定会得到密码。永远。 (这与git或gitolite无关)。 gitolite会依次调用git(如果它授权clone/push/pull命令),但是git会再次幸福地不知道请求所述克隆/拉/推的用户id:它只会执行它。

+0

但github如何做到这一点?为什么github允许用户使用http/https进行推送,我应该怎么做才是输入我的电子邮件和密码。 –

+0

@王振威GitHub有一个Apache,它监听远程请求,并根据自己的内部用户数据库验证用户/密码。您可以在本地存储您的登录名/密码(http://stackoverflow.com/questions/5377703/syncing-with-github/5378094#5378094),但它们将被GitHub字体末端使用(如Apache或ssh) ,而不是通过git或GitHub上的任何钩子。 – VonC