2

对于我公司的一些特定工作流程问题,我需要允许一些用户使用 CVS,而主存储库位于 git 下。

我选择了 git-cvsserver 作为这个任务的实现。

我设置了 git 存储库,为 gitcvs 启用它,并在 xinetd 上设置了 pserver 模拟。一切正常,我可以从 cvs 客户端使用这个存储库,对我通过 pserver 仿真创建的 passwd 文件进行身份验证。

我的问题是我通过 CVS 进行的提交显示在运行 xinetd 的用户下,而不是在我对 passwd 进行身份验证的用户下。

即我以用户 'foo' 的身份向 CVS 提交,我通过 pserver 成功地进行了身份验证,但是当我查看这个 repo 的 git 提交历史时,我看到提交是由用户 'root' 完成的。

我查看了 git-cvsserver 的源代码(http://git.kernel.org/?p=git ​​/git.git;a=blob;f=git-cvsserver.perl ),似乎 CVS 登录仅用于身份验证,不用于实际提交。SQLite 数据库中的记录也包含“root”用户名,而不是“foo”

您知道如何将 CVS 登录信息传播到 git 用户名吗?

git 邮件列表中的外部参考:http: //thread.gmane.org/gmane.comp.version-control.git/169182

4

2 回答 2

1

我没有具体的经验,但git-cvsserver几乎可以肯定会调用git-commit来做实际的工作。您可以通过设置环境变量(例如and (也和and )git-commit来为作者和提交者使用任何您想要的东西。如果您有可用的身份验证信息,您可以在实际提交之前简单地设置它。如果不清理它的环境,您实际上可以在调用它之前从包装器中的身份验证信息中设置它们(以防任何提交)。GIT_COMMITTER_EMAILGIT_AUTHOR_EMAIL..._NAME..._DATE..._IDENT$ENVgit-cvsserver

于 2011-03-16T19:59:51.827 回答
0

在传播登录之前,如Ben Jackson答案所示,使用GIT_COMMITTER_NAME/EMAIL环境变量,确保身份验证步骤确实运行正常。

在 Git 2.34(2021 年第四季度)之前,“ git cvsserverman在其身份验证代码中存在一个长期存在的错误,该错误最终已得到纠正(但尚不清楚,但是否有人认真使用它是一个单独的问题)。

请参阅Carlo Marcelo Arenas Belón ( ) 的提交 4b81f69提交 bffcb4d提交 a7775c7(2021 年 9 月 15 日(由Junio C Hamano 合并 -- --提交 1030dae中,2021 年 10 月 3 日)carenas
gitster

git-cvsserver: 正确使用 crypt 比较密码哈希

签字人:Carlo Marcelo Arenas Belón

c057bad (" git-cvsserver: use a password file cvsserver pserver", 2010-05-15, Git v1.7.2-rc0 -- merge ) 为( man )添加了一种无需明文密码即可提供经过身份验证的 pserver 帐户的方法,但使用用户名而不是调用 crypt(3) 的密码。git cvsserver

更正这一点,并确保文档正确说明如何获取可用于填充此配置的散列密码,以及更正用于测试的散列。

此更改将要求此功能的任何用户更新其配置中的哈希值,但具有使用比 cvs 使用的更相似格式的优势,可能也简化了任何迁移。

git cvsserver现在在其手册页中包含:

文件,但只能使用-d选项(或者-B如果您的系统支持它)。

git cvsserver现在在其手册页中包含:

mkpasswd最好使用在您的平台(例如在 Linux、encryptOpenBSD 或 NetBSD 中)管理密码哈希创建的系统特定实用程序pwhash并将其粘贴到正确的位置。

于 2021-10-10T14:40:45.837 回答