在Subversion中是否可以使用特定于用户的svn:x属性(例如svn:ignore和svn:externals)?

时间:2009-08-20 07:37:19

标签: svn

我的合作者和我经常发现我们希望能够为我们自己的项目工作副本设置不同的svn:ignore和svn:externals属性。似乎与属性相关的svn功能不需要对这些属性进行版本控制,但我们还没有找到解开这些属性的方法。

4 个答案:

答案 0 :(得分:2)

不,属性特定于它们所设置的文件/目录。用户特定的属性不存在。

为什么你需要不同的svn:externals?解决这个问题的一种方法是在存储库中拥有自己的目录,只包含外部。这样你就可以控制你自己的一组外部。

存储库的约定和布局是您必须同意的。 Subversion实际上并不允许用户自定义他们的存储库视图。

答案 1 :(得分:2)

将SVN视为文件系统。如果你想实现目标,你会在文件系统中做些什么?你们每个人都会在某处创建原始文件的副本。

你可以对Subversion(svn copy)做同样的事情。在新子目录中设置的属性仅对这些子目录有效,而对原始文件无效。

但是有一个代价:您现在必须手动同步(合并)您的更改(就像您在本地文件系统中执行此操作而不进行颠覆时一样)。

我不知道任何VCS可以免费提供你想要的东西。

答案 2 :(得分:0)

要解除这些属性,请将它们从附加到的文件夹或文件中删除(然后提交)。如果您正在使用命令行,则可以使用“svn propdel”删除它们。

Properties in SVN存储在服务器上,它们不是工作副本构造,因此您不能为不同的用户设置相同的属性。

要获得相同代码的不同“视图”,您可能希望查看branching,每个人都在自己的分支上工作,并定期将您的更改合并到主干中。这听起来像是您尝试使用每个用户的不同属性实现的工作流程。

对于另一种查看svn:ignore的方式,您可以在客户端设置不同的“global-ignores”。

答案 3 :(得分:0)

Muhahahahaha!

一个完全不切实际的解决方案来获取用户特定的(实际上是工作站特定的)svn:externals:

首先,让每个开发人员在自己的机器上创建一个subversion存储库,并运行一个小的svnserve实例以使其可访问。

svn://localhost/local-externals

让每个开发人员在所述存储库的根目录中设置他们的perferred svn:externals属性。

svn co svn://localhost/local-externals
svn pe svn:externals local-externals
...
svn commit local-externals

在您的中央存储库中,包含对svn:// localhost / local-externals

的svn:externals引用
svn co svn://example.com/repo/project/trunk
svn pe svn:externals
    ... define an reference to svn://localhost/local-externals
svn commit trunk

现在,检查主干的每个开发人员都会从他们的本地外部存储库中获取他们的外部目录,这可以反过来拉入他们想要包含在他们的结账中的主存储库的部分。

可以做到这一点,但我认为即使考虑到这一点,我也认为自己可以证明自己是疯了。