问题标签 [gitosis]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - 我可以将 gitosis 配置为询问密码并检查 Active Directory
我已经在 Ubuntu 服务器上成功安装和配置了 gitosis。我们目前只是为大型组织(超过 2000 名员工)创建开发平台的少数开发人员。
目前他们使用 subversion 进行版本控制。部门可以通过编辑和提交单个文件来修改其用户权限,就像 gitosis.conf 一样。然而不同的是他们不需要为他们的用户推送公钥,而是使用用户的域登录,因为 subversion 被配置为根据我们的 AD 检查用户。
gitosis 是否有类似的行为方式:
- 他们编辑 gitosis.conf,但不需要添加公钥。
- 如何配置 git/gitosis 以询问用户密码并再次检查 AD。
git - 克隆远程git仓库问题
我正在尝试启动并运行一个 git 存储库,并在我的远程 ubuntu 8.04 服务器上安装了 git 和 gitosis。我还在本地 ubuntu 10.04 机器上运行了 git。
经过大量尝试使其全部正常工作后,我设法使 ssh 密钥正常工作。当我输入:
ssh git@myserver.com
它返回:
PTY 分配请求在通道 0 上失败
错误:gitosis.serve.main:环境中需要 SSH_ORIGINAL_COMMAND。
与 123.456.789.1 的连接已关闭。
据我了解,这意味着我成功连接到服务器并且 ssh 密钥被接受,但是因为它没有收到任何命令,所以它关闭了连接。
当我尝试获取 repo 时:
sudo git clone git@myserver.com:gitosis-admin.git
它返回:
在 /home/git/repositories/gitosis-admin/.git/ 中初始化空的 Git 存储库
git@myserver.com 的密码:
问题是,我没有密码或短语集,也不接受空密码或服务器密码或我本地的机器密码。我知道它根本不应该要求输入密码,因为它应该接受 ssh 密钥(没有密码)并开始下载。
从这一点开始,我不知道如何将远程 repo 获取到我的本地机器,以便我可以开始使用 git。我希望有人能指出我正确的方向。
git - 使用 gitosis 管理对 git 存储库的 http 访问
[2010 年 9 月 16 日更新]
昨晚看了这个之后,我意识到我最初的问题实际上是在问两个不同的问题:
1)是否可以为 gitosis 创建的所有远程存储库设置更新后挂钩(即mv hooks/post-update.sample hooks/post-update
在 gitosis 创建存储库后不必手动执行)这是通过 HTTP 克隆工作所必需的(愚蠢的 HTTP 客户端依赖于git update-server-info
从更新后挂钩中调用的事实)。
2)一旦可以通过 HTTP 访问存储库,是否可以使用 gitosis.conf 中的选项打开和关闭访问(类似于daemon = no
or gitweb = yes
)
--- 问题 1 的解答 ---
事实证明,Git 使用模板通过git init
命令创建新的存储库。通过mv hooks/post-update.sample hooks/post-update
在模板目录中执行,我的服务器上的所有未来调用git init
都将正确配置更新后挂钩。(在 OSX 上,模板目录是/opt/local/share/git-core/templates/
为那些关心的人准备的)
这个工作的另一个要求是打开 Apache 重写规则,以便存储库的 HTTP 克隆 URL 看起来像http//git.example.com/repo.git
我的重写规则/etc/apache2/extra/httpd-vhosts.conf
如下所示:
--- 仍在寻找问题 2 的解决方案...帮助!:) ---
现在 HTTP 克隆适用于我所有的存储库,我想知道是否有一种方法可以使用 gitosis 来管理 HTTP 访问控制。设置daemon = no
并gitweb = no
关闭存储库的 git-daemon 和 gitweb 访问,但由于 Apache 重写规则仍处于启用状态,因此存储库仍可在http://git.example.com/repo.git
. 关于如何使用 gitosis 来管理这个的任何想法?
[我最初发布的问题]
是否可以使用 gitosis 管理对 git 存储库的 http 访问?例如,在 gitosis.conf 中,我可以使用以下命令管理 gitweb 和 git-demon 的访问:
我目前可以通过发出以下命令来克隆我的存储库:
但是,当我发出以下命令时:
我收到以下错误消息:
但是,如果我登录到我的服务器并从 repo.git 中运行以下命令:
然后通过http克隆工作正常。
有没有办法从 gitosis 中管理对存储库的 http 访问?
git - 如何将其他用户(Windows)添加到 gitosis
我只是使用 gitosis 设置了一个 git 存储库。我不知道如何添加其他用户。我发现的所有教程都只说“收集他们的公共 SSH 密钥”。
首先,我尝试在我的机器(不是服务器)上本地创建,但我有点认为这是错误的方法。
现在我尝试在 Windows 机器上使用 PuTTy keygen 创建公钥,保存密钥并将其放入 gitosis-admin 目录下的 keydir 中。
我都试过了git clone git@cn-linuxdev.****.***:tungsten.git
,git clone tor@cn-linuxdev.****.***:tungsten.git
其中tor是keydir中文件的名称。
auth.log 中生成的错误是 Failed password for git from 192.168.0.158 port 63305 ssh2
从 windows 客户端,我还尝试了 setup 期间设置的密码sudo -H -u git gitosis-init < /tmp/id_rsa.pub
。
这个 ssh 密钥来自我的本地计算机。此密码从那里有效,但不适用于 Windows 客户端。
我不太明白 ssh-keys 是如何工作的,但我猜想它们以某种方式绑定到生成它们的计算机上。
那么有没有人设法与其他用户和 Windows 用户一起设置 gitosis?你是怎么让它工作的?
git - 无法连接到 gitosis 服务器
我按照本指南设置 git 和 gitosos:http ://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way 。我被困在这部分:git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git
我正在使用带有 putty 的 Git 扩展,并且我的 SSH 服务器在非标准端口上运行。它说明了如何为 linux 设置端口,而不是为带有 Git 扩展的 windows 设置端口。由于 Git Extensions 使用的是 putty,我尝试使用 IP、端口、用户名 (git) 和我添加的 SSH 密钥创建一个名为“git”的配置文件。当我使用 putty 连接该配置文件时,它显示Server refused our key
.
有几个地方我不确定我是否做得对。我读过一些指南说 gitosis 的用户名应该是“gitosis”,而不是“git”。我将用户创建为指南中指定的“git”是否重要?'git' 是我应该在腻子配置文件中设置的自动登录用户名吗?
此外,我使用了我一直使用的 SSH 密钥,并且之前使用 Putty keygen 生成了该密钥。在评论中,名称设置为“telanor”。这是否有任何意义,意味着它与我在腻子配置文件中设置的自动登录用户名不同是否重要?
最后一部分我不确定。使用 putty 配置文件克隆存储库时,这是 Git 扩展的正确语法吗:git://git/gitosis-admin.git
?当我尝试这样做时,响应是:fatal: Unable to look up git (port 9418) (No such host is known. )
我不知道它从哪里获取该端口号,它不是我在腻子配置文件中设置的那个
编辑:
感谢 Henk,我发现 URL 很可能是ssh://git/gitosis-admin.git
. 但我现在还有两个问题。我认为我可以使用腻子配置文件的假设是否正确?此外,本教程说要从您的客户端检查 gitosis-admin.git。我认为这意味着“其他一些不是你刚刚设置 gitosis 的计算机”。还是我应该在同一台计算机上检查它并在允许外部访问之前设置用户?
git - gitosis 更改服务器
我安装了一个新的 gitosis 实例,也有一个旧实例。
要将存储库从旧服务器移动到新服务器,我需要做什么?在新服务器上克隆?
我必须在开发人员计算机上进行哪些更改才能切换远程分支?还是他们需要再次克隆?
git - 如果不是最新的,防止 git push 发送整个 repo
相关问题:为什么 Git 每次 push origin master 时都会发送整个存储库
简短版本:当使用两个 Git 存储库时,即使 99% 的提交对象是相同的,当设置为指向存储库Agit push
时,使用将提交发送到存储库B会导致所有对象 (200MB +) 被传输。origin
更长的版本:我们在持续集成服务器上设置了第二个 Git 存储库。在我们在本地准备好我们的提交对象之后,而不是origin/master
像通常那样直接推送到,而是将我们的更改推送到第二个存储库上的一个分支。CI 服务器选择新的分支,将其自动变基到master
,运行我们的集成测试,如果一切顺利,将分支推送到origin/master
主存储库。
CI 服务器还定期调用git fetch
以从主存储库中检索最新副本origin/master
,以防有人绕过 CI 流程并直接推送。
这非常有效,特别是如果git fetch; git rebase origin/master
在推送到 CI 回购之前做了一个;Git 只发送尚未在origin/master
. 如果在推送之前跳过 fetch/rebase 步骤,该过程仍然有效,但 Git 似乎将大部分提交对象(如果不是全部)发送到 CI 存储库 - 目前价值超过 200MB。(我们的 repo 的新克隆为 225MB。)
我们做错了什么吗?有没有办法纠正这种行为,使 Git 只发送它需要在 CI 存储库上形成分支的提交对象?我们显然可以通过 pre-push 来解决这个问题git fetch; git rebase origin/master
,但感觉我们应该能够跳过这一步,特别是因为直接推送到主仓库不会出现同样的问题。
我们的存储库由 Gitosis 0.2 提供服务,我们的客户绝大多数都在运行 msysgit 1.7.3.1-preview。
git - 如何将本地 Git 存储库(带有历史记录)移动到远程服务器上的 Gitosis 管理?
我正在从 SVN 切换到 Git,并且 Gitosis 安装在中央服务器上,用于 Ubuntu 服务器上的集中存储库。
我已经将我所有的 SVN 存储库移动并启动到新的 Git 存储库中,并且所有历史记录都移动到了 Git。
现在我已将所有存储库迁移到 Git,我想将所有存储库添加到 Gitosis 以由 Gitosis 管理。
如何将存储库(Git 启动的)移动到 Gitosis并通过远程/srv/gitosis/repositories
管理它们?gitosis-admin.git
git - gitosis 将工作副本存储在哪里?
我想知道 gitosis 将我的存储库的工作副本存储在哪里。我可以看到带有 gitweb 界面的文件树,但在 /srv/gitosis/repositories/testrepo 中找不到任何工作副本。我还能够推送和克隆到 repo。
但是我如何在不知道工作副本路径的情况下编写我的部署脚本呢?
git - Git / Gitosis - 存储库读取访问被拒绝
我已经在 ubuntu 服务器上安装了 git。从我的本地机器上使用 tortoiseGIT 我已经将 gitosis-admin 克隆到我的本地机器上。一切正常。在签出 gitosis-admin 存储库以管理我的密钥和 gitosis.conf 中的存储库后,我将新的存储库 gittest 添加到 .conf 文件中。现在休闲步骤失败了:
- 在我的本地机器上创建一个名为 gittest 的新文件夹
- 添加了一个测试文件
- 坚定的
- 将本地存储库推送到客户端说的服务器:
“错误:gitosis.serve.main:存储库读取访问被拒绝”
如果我在 /srv/git/repositories/gittest 的新创建文件夹中使用“git init”在服务器上初始化存储库,也会出现此错误,添加一个文件以使要克隆的存储库不为空,然后尝试克隆它到我的本地机器。
任何人都可以帮助解决这个错误吗?