Svn Subversion中的单个多用户签出-可能吗?

Svn Subversion中的单个多用户签出-可能吗?,svn,multi-user,Svn,Multi User,在我们的组织中,我们有以下问题。我们希望控制我们的web树修订,但我们中的许多人希望能够修改和签入该树的任何文件。我们也希望这一切都只有一次结账,因为这棵树相当大。对于该树的某些部分,我们目前正在使用RCS,它允许上述行为,但当然还有一些其他缺点 是否有人知道如何在Unix服务器上使用Subversion解决方案来实现这一点?我建议您为web树使用一个所有开发人员都可以访问的特殊帐户,然后以该用户的身份签出web树。我建议您为web树使用一个所有开发人员都可以访问的特殊帐户,并以该用户的身份签出

在我们的组织中,我们有以下问题。我们希望控制我们的web树修订,但我们中的许多人希望能够修改和签入该树的任何文件。我们也希望这一切都只有一次结账,因为这棵树相当大。对于该树的某些部分,我们目前正在使用RCS,它允许上述行为,但当然还有一些其他缺点


是否有人知道如何在Unix服务器上使用Subversion解决方案来实现这一点?

我建议您为web树使用一个所有开发人员都可以访问的特殊帐户,然后以该用户的身份签出web树。

我建议您为web树使用一个所有开发人员都可以访问的特殊帐户,并以该用户的身份签出web树。

为什么不只签出您感兴趣更改的树的一部分呢?这不应该是个问题。也许我不明白你所说的一次退房是什么意思。

为什么不去看看你想换的那棵树呢?这不应该是个问题。也许我不明白你说的一次结账是什么意思。

@Jesper:是的,那是可能的。所有成员的一个额外帐户,可能还有一个额外的sudo规则


@乔恩:问题是,基本上我们所有人都需要更改树的某些部分中的一些文件。这就是为什么我们都需要整棵树,但我们不想有那么多的签出。

@Jesper:是的,这是可能的。所有成员的一个额外帐户,可能还有一个额外的sudo规则


@乔恩:问题是,基本上我们所有人都需要更改树的某些部分中的一些文件。这就是为什么我们都需要整棵树,但我们不希望有那么多的签出。

在典型的SVN环境中,每个用户都有自己的完整或部分树副本,在那里,她可以在树上执行任何她想执行的更改,而不会干扰或破坏她的同事。然后她决定登记什么。所有其他人都可以结帐,只要他们认为这是最好的结帐时间。主部署用户每天定期检查构建以检查完整性


我认为与CVS/subversion相比,您的困惑在于RCS:RCS在编辑时会为所有其他文件屏蔽一个文件,而SVN通常不会屏蔽任何内容。阻塞是可能的,但很少使用。

在典型的SVN环境中,每个用户都有自己的完整或部分树副本,可以在树上执行任何更改,而不会干扰或破坏同事。然后她决定登记什么。所有其他人都可以结帐,只要他们认为这是最好的结帐时间。主部署用户每天定期检查构建以检查完整性


我认为与CVS/subversion相比,您的困惑在于RCS:RCS在编辑时会为所有其他文件屏蔽一个文件,而SVN通常不会屏蔽任何内容。阻塞是可能的,但很少使用。

@Lytha:我知道RCS是基于锁的,在我们的场景中,这一点没有问题。我也知道可以使用带锁的SVN,但每个用户的签出问题仍然存在……

@Lytha:我知道RCS是基于锁的,在我们的场景中,这一点没有问题。我还知道可以使用带锁定的SVN,但每个用户的签出问题仍然存在…

开发人员不是在自己的机器上吗?这棵树是否太大,以至于必须签出到服务器上的共享网络驱动器上,因为它不适合单个开发人员的工作站?我认为这个问题需要一些数字来进一步澄清问题及其背后的原因。

开发人员不是在自己的机器上吗?这棵树是否太大,以至于必须签出到服务器上的共享网络驱动器上,因为它不适合单个开发人员的工作站?我认为这个问题需要一些数字来进一步澄清问题及其背后的原因。

磁盘驱动器很便宜。让每个开发人员签出树的副本。Subversion解决了锁定问题,因此每个拥有自己副本的用户不会干扰其他用户进行更改。如果每个人都签出并管理他们自己的源代码树开发版本,您的工作效率会更高,对更改的责任也会更好。

磁盘驱动器很便宜。让每个开发人员签出树的副本。Subversion解决了锁定问题,因此每个拥有自己副本的用户不会干扰其他用户进行更改。如果每个人都签出并管理自己的源代码树开发版本,您的工作效率会更高,对更改的责任也会更好。

正如您在其他帖子中可能看到的,这个问题的一般答案是不要这样做。一般来说,Subversion用于将存储库的部分或全部签出到本地工作区

如果你绝对地,肯定地,必须 每个开发人员都可以查看整个存储库,但是开发人员只更改了一小部分,这里有一个潜在的解决方案。您需要开发一些脚本,以便于我所描述的基于我以前使用的UNIX IDE的内容

根据您的评论,我还假设环境是UNIX或Linux—我认为在Windows中不可能做到以下几点

在某个位置以只读方式签出整个项目。确保所有开发人员都具有对它的读取权限。 拥有一个脚本,开发人员可以执行该脚本,该脚本使用指向该开发人员工作区中只读目录的符号链接来爬网目录结构,创建结构的镜像。 当签出要编辑的树的一部分时,请删除符号链接并从Subversion签出该路径。您可能需要一个脚本来包装svn命令以处理此问题 无论是在svn commit上还是在单独的脚本中,您都可能希望删除工作区目录并重新建立符号链接。 通过Subversion中的post-commit钩子或定期使用cron或类似工具更新只读副本。 符号链接为每个开发人员提供了整个树的视图,并且只允许本地签出开发人员正在编辑的树的那些部分


规避的原因是Subversion并不是有意以这种方式使用的。但是,对于您所描述的内容,这种方法会有些困难。

正如您可能从其他帖子中看到的,这个问题的一般答案是不要这样做。一般来说,Subversion用于将存储库的部分或全部签出到本地工作区

如果每个开发人员都必须查看整个存储库,但开发人员只更改了一小部分,那么这里有一个潜在的解决方案。您需要开发一些脚本,以便于我所描述的基于我以前使用的UNIX IDE的内容

根据您的评论,我还假设环境是UNIX或Linux—我认为在Windows中不可能做到以下几点

在某个位置以只读方式签出整个项目。确保所有开发人员都具有对它的读取权限。 拥有一个脚本,开发人员可以执行该脚本,该脚本使用指向该开发人员工作区中只读目录的符号链接来爬网目录结构,创建结构的镜像。 当签出要编辑的树的一部分时,请删除符号链接并从Subversion签出该路径。您可能需要一个脚本来包装svn命令以处理此问题 无论是在svn commit上还是在单独的脚本中,您都可能希望删除工作区目录并重新建立符号链接。 通过Subversion中的post-commit钩子或定期使用cron或类似工具更新只读副本。 符号链接为每个开发人员提供了整个树的视图,并且只允许本地签出开发人员正在编辑的树的那些部分


规避的原因是Subversion并不是有意以这种方式使用的。但是,对于您所描述的内容,这种方法会有些困难。

Subversion允许您签出树的任何部分,并且版本1.5也支持。这意味着您可以将签出调整到单个目录级别,但不能调整到RCS所能达到的单个文件级别

例如,如果您的存储库如下所示:

Repository Root tags branches trunk doc src module1 resources module2 images
如果您还需要子目录内容,您可以稍后调整签出的大小,请参阅文档。

Subversion允许您签出树的任何部分,1.5版也支持。这意味着您可以将签出调整到单个目录级别,但不能调整到RCS所能达到的单个文件级别

例如,如果您的存储库如下所示:

Repository Root tags branches trunk doc src module1 resources module2 images
如果您还需要子目录内容,您可以稍后调整签出的大小,请参阅文档。

如果您担心签出工作副本的延迟/带宽,请记住,工作副本是完全独立的。这意味着您可以签出一个巨大的存储库,然后简单地将该工作副本复制给需要它的人

同样的技巧也适用于分支-如果您有一个未更改的主干最近的工作副本,您可以简单地复制它,然后“svn切换”到一个新分支

签出庞大的存储库,以便在一夜之间创建工作副本? cp-一个基本的工作副本我的工作副本和任何其他需要它的人 cp-一个基本的工作副本我的分支 光碟美孚分行 将我的分支切换到任何分支URL 我还成功地用它将大份工作拷贝的CD邮寄给带宽有问题的人


另请参阅:

如果您担心签出工作副本时的延迟/带宽,请记住,工作副本完全是自动复制的 纳塔内。这意味着您可以签出一个巨大的存储库,然后简单地将该工作副本复制给需要它的人

同样的技巧也适用于分支-如果您有一个未更改的主干最近的工作副本,您可以简单地复制它,然后“svn切换”到一个新分支

签出庞大的存储库,以便在一夜之间创建工作副本? cp-一个基本的工作副本我的工作副本和任何其他需要它的人 cp-一个基本的工作副本我的分支 光碟美孚分行 将我的分支切换到任何分支URL 我还成功地用它将大份工作拷贝的CD邮寄给带宽有问题的人


另请参见:

这对我来说没有多大意义-如果person X只需要更改一个目录中的文件,他们可以签出该目录。@StephenWolf-您应该向答案添加注释,而不是添加新答案,这不是一个论坛,答案将以不同的顺序出现,这取决于他们投了多少票receive@Gareth:您可以按日期浏览以获得正确的答案顺序。并不是说我不同意你的主要观点。这对我来说没有多大意义-如果person X只需要更改一个目录中的文件,他们就可以签出该目录。@StephenWolf-你应该给答案添加注释,而不是添加新的答案,这不是一个论坛,答案将以不同的顺序出现,这取决于他们投了多少票receive@Gareth:您可以按日期浏览以获得正确的答案顺序。并不是说我不同意你的主要观点。你为什么认为每个用户的退房问题仍然存在?每个用户的签出问题是什么?服务器并不真正知道或关心有多少用户签出了一些代码。Jon,我认为他仍然在谈论将树中的所有文件都放在每个开发人员的工作区中,这是他不想要的。为什么你认为每个用户签出的问题仍然存在?每个用户的签出问题是什么?服务器并不真正知道或关心有多少用户签出了一些代码。Jon,我认为他仍然在谈论将树中的所有文件都放在每个开发人员的工作区中,这是他不想要的。使用此解决方案,您将失去责任。不。当然,如果能够正确访问工作树,开发人员仍然可以使用自己的帐户进行提交。使用此解决方案,您将失去责任。否。当然,如果能够正确访问工作树,开发人员仍然可以使用自己的帐户进行提交。网络带宽并没有那么便宜。我考虑这个问题是因为一个类似的问题。并非所有开发人员都不可能通过T1从远程位置查看千兆字节存储库,但这也不好。网络带宽并没有那么便宜。我考虑这个问题是因为一个类似的问题。并非所有开发人员都不可能通过T1从远程位置签出一个千兆字节的存储库,但这也不好。