为什么在为 CVS 创建新文件夹时拒绝签出权限?

Why is checkout permission denied on new folder creation for CVS?

我们通常通过 Eclipse 访问我们的 CVS 服务器。我们的一位队友 steveo 在我们的 Java src 文件夹下为项目 ProjectName 创建了一个新包 Testing

之后,这导致 ProjectName.

的所有结帐失败

The server reported an error while performing the "cvs checkout" command.

: cvs checkout: failed to create lock directory for `/app/cvs/repository/Main/ProjectName/src/Testing' (/app/cvs/repository/Main/ProjectName/src/Testing/#cvs.lock): Permission denied

: cvs checkout: failed to obtain dir lock in repository `/app/cvs/repository/Main/ProjectName/src/Testing'

: cvs [checkout aborted]: read lock failed - giving up

我将 putty 连接到 CVS 服务器并在 src 文件夹

上做了一个 ls -l

drwxrwxr-x 5 root cvs 4096 May 19 12:05 com

drwxrwxr-x 3 steveo steveo 4096 May 19 12:05 Testing

sudo su,备份到项目文件夹,运行chgrp -R cvs ProjectName

drwxrwxr-x 5 root cvs 4096 May 19 12:05 com

drwxrwxr-x 3 steveo cvs 4096 May 19 12:05 Testing

这暂时解决了问题...直到另一个用户创建包。

是什么原因造成的,我该如何将它们全部默认为 cvs

this similar SO question 的答案没有帮助。

弄清楚并发布答案以供后代使用。

我原本打算将存储库文件夹设置为组 cvs 并通过 chmod g+s /app/cvs/repository/ 使其具有粘性,但这不是递归的,我不知道我想搞砸它.

用户的默认组 ID (GID) 不是 cvs。该解决方案有点变通,因为我们使用 Active Directory 作为我们的帐户登录。幸运的是,我们只将此服务器用于 CVS,这使解决方案变得简单。

每个帐户和每个新帐户都必须这样做。

  1. 确保该帐户已尝试通过 Eclipse/RAD 登录 CVS(也许还检查了一个项目)。这会在主页下创建用户配置文件。
  2. sudo su
  3. cd \home\{username}
  4. 因为我们没有其他事情发生,echo "newgrp cvs" >> .profile

这会将登录时违规帐户的默认组设置为 cvs,我可以收工了......并最终迁移到 Git / BitBucket。